




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2022-2023學(xué)年山西省大同市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________
一、單選題(12題)1.程序流程圖中帶有箭頭的線段表示的是()。
A.圖元關(guān)系B.數(shù)據(jù)流C.控制流D.調(diào)用關(guān)系
2.以下敘述中錯(cuò)誤的是()。
A.向量屬于線性結(jié)構(gòu)B.二叉鏈表是二叉樹的存儲(chǔ)結(jié)構(gòu)C.棧和隊(duì)列是線性表D.循環(huán)鏈表是循環(huán)隊(duì)列的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)
3.指針可以用來表示數(shù)組元素,若已知語句:inta[3][7];則下列表示中正確的是()。
A.*(a+1)[5]B.*(*a+3)C.*(*(a+1))D.*(&a[0][0]+2)
4.對(duì)于順序存儲(chǔ)的線性表,訪問結(jié)點(diǎn)和增加、刪除結(jié)點(diǎn)的時(shí)間復(fù)雜度為()。
A.O(n)O(n)B.O(n)O(1)C.O(1)O(n)D.O(1)O(1)
5.
6.對(duì)于關(guān)鍵字值序列(12,13,11,18,60,15,7,18,25,100)
A.100B.12C.60D.15
7.相對(duì)于數(shù)據(jù)庫系統(tǒng),文件系統(tǒng)的主要缺陷有數(shù)據(jù)關(guān)聯(lián)差、數(shù)據(jù)不一致性和()。
A.可重用性差B.安全性差C.非持久性D.冗余性
8.若用一個(gè)大小為6的數(shù)值來實(shí)現(xiàn)循環(huán)隊(duì)列,且當(dāng)前rear和front的值分別為0和3,當(dāng)從隊(duì)列中刪除一個(gè)元素,再加入兩個(gè)元素后,rear和front的值分別為()。
A.1和5B.2和4C.4和2D.5和1
9.有如下形式的函數(shù):intfun(inta[4][5],int*p[10],intn){…}調(diào)用函數(shù)之前需要對(duì)函數(shù)進(jìn)行說明,即所謂的函數(shù)向前引用說明,以下對(duì)fun函數(shù)說明正確的是()。A.intfun(intb[][5],int*r[],intm);
B.intfun(inta[4][],int*p[10],intn);
C.intfun(inta[][],int*p[],intn);
D.intfun(inta[],int*p[],intn);
10.有以下程序:#include<stdio.h>main(){inta=2,b;b=a<<2;printf("%d\n",b);}程序運(yùn)行后的輸出結(jié)果是()。A.2B.4C.6D.8
11.有以下程序:#include<stdio.h>#include<string.h>main(){charstr[][20][{"One*World","One*Dream!"},*p=str[1];prinft("%d,",strlen(p));printf("%s\n",p);}程序運(yùn)行后的輸出結(jié)果是()。A.9,0ne*WorldB.9,0ne*Dream!C.10,One*Dream!D.10,Ome*World
12.
二、2.填空題(12題)13.軟件是程序、數(shù)據(jù)和【】的集合。
14.下面程序的輸出是【】。
main()
{enumem{em1=3,em2=1,em3};
char*aa[]={"AA","BB","CC","DD"};
printf("%s%s%s\n",aa[em1],aa[em2],aa[em3]);
}
15.若要使指針p指向一個(gè)double類型的動(dòng)態(tài)存儲(chǔ)單元,請(qǐng)?zhí)羁铡?/p>
p=【】malloc(sizeof(double));
16.已知存儲(chǔ)結(jié)構(gòu)如下所示,請(qǐng)?zhí)羁铡?/p>
datanext
structlink{chardata;
【】;
}node;
17.算法的復(fù)雜度主要包括空間復(fù)雜度和______復(fù)雜度。
18.長度為n的順序存儲(chǔ)線性表中,當(dāng)在任何位置上插入一個(gè)元素概率都相等時(shí),插入一個(gè)元素所需移動(dòng)元素的平均個(gè)數(shù)為【】。
19.以下程序運(yùn)行后的輸出結(jié)果是()。#definePower2(x)x*xmain(){inti=6,j=8;printf("%d\n",Power2(i+j));}
20.注釋說明了程序的功能,它分為【】注釋和功能性注釋。
21.以下程序的輸出結(jié)果是()。main(){char*p[]={"ABC","DEF","GHI","JKL"};inti;for(i=3;i>=0;i--,i--)printf("%c",*p[i]);}
22.下面程序的運(yùn)行結(jié)果是【】。
main()
{unsigneda=0112,x;
x=a>>3;
printf("x=%o",x);
}
23.軟件工程的出現(xiàn)是由于【】。
24.在關(guān)系模型中,把數(shù)據(jù)看成一個(gè)二維表,每一個(gè)二維表稱為一個(gè)______。
三、3.程序設(shè)計(jì)題(10題)25.請(qǐng)編寫函數(shù)fun(),該函數(shù)的功能是:移動(dòng)一維數(shù)組中的內(nèi)容,若數(shù)組中有n個(gè)整數(shù),要求把下標(biāo)從p~n-1(p<n-1)的數(shù)組元素平移到數(shù)組的前面。
例如,一維數(shù)組中的原始內(nèi)容為1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,P的值為6。移動(dòng)后,一維數(shù)組的內(nèi)容應(yīng)為7,8,9,10,11,12,13,14,15,1,2,3,4,5,6。
[注意]部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。
[試題源程序]
#inciude<stdio.h>
#defineN80
voidfun(int*w,intp,intn)
{
}
main()
{
inta[N]=(i,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
inti,P,n=15;
printf("Theoriginaldata:\n");
for(i=0;i<n;i++)
printf("%3d",a[i]);
printf("\n\nEnterp:");
scanf("%d",&p);
fun(a,P,n);
printf("\nThedataaftermoving:\n");
for(i=0;i<n;i++)
printf("%3d",a[i]);
printf("\n\n");
}
26.學(xué)生的記錄由學(xué)號(hào)和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請(qǐng)編寫函數(shù)fun(),該函數(shù)的功能是:把高于等于平均分的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,低于平均分的學(xué)生數(shù)據(jù)放在c所指的數(shù)組中,高于等于平均分的學(xué)生人數(shù)通過形參n傳回,低于平均分的學(xué)生人數(shù)通過形參m傳回,平均分通過函數(shù)值返回。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#defineN12
typedefstruct
{charnum[10];
doubleS;
}STREC;
doublefun(STREC*a,STREC*b,STREC*C,int*n,int*m)
{
}
main()
{
STRECs[N]={{“GA05”,65},{“GA03”,86},
{“GA02”,76},{“GA04”,95},{“GA01”,93},
{“GA07”,78},{“GA08”,68},{“GA06”,88},
{“GA09”,60},{“GAll”,54},{“GAl2”,56},
{“GAl0”,98}};
STRECh[N],l[N],t;
FILE*out;
inti,j,m,n;
doubleave;
ave=fun(S,h,l,&n,&m);
printf("The%dstudentdatawhichishigherthan%7.3f:\n",n,ave);
for(i=0;i<n;i++)
printf("%s%4.lf\n",h[i].num,
h[i].s);
printf("\n");
printf("The%dStudentdatawhichiSlowerthan%7.3f:\n",m,ave);
for(i=0;i<m;i++)
printf("%s%4.1f\n",l[i].num,l[i].s);
printf("\n");
ut=fopen("out26.dat","w");
fprintf(out,"%d\n%7.3f\n",n,ave);
for(i=0;i<n-1;i++)
for(j=i+1;i<n;j++)
if(h[i].s<h[j].s)
{t=h[i];h[i]=h[i];h[j]=t;}
/*分?jǐn)?shù)從現(xiàn)到低排列*/
for(i=0;i<n;i++)
fprintf(out,“%4.1f\n",h[i].s);
fprintf(out,"%d\n%7.3f\n",m,ave);
for(i=0;i<m-1;i++)
for(j=i+1;i<m;j++)
if(l[i].s<l[j].s)
{t=l[i];l[i]=l[j];l[j]=t;}
/*分?jǐn)?shù)從高到低排列*/
for(i=0;i<m;i++)
fprintf(out,"%4.1f\n",l[i].s);
fclose(out);
}
27.編寫函數(shù)fun,它的功能是:求小于形參n同時(shí)能被3與7整除的所有自然數(shù)之和的平方根,并作為函數(shù)值返回。
例如若n為1000時(shí),程序輸出應(yīng)為:s=153.909064。
注意:部分源程序在文件PROGl.C文件中。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。
28.函數(shù)fun的功能是:將a、b中的兩個(gè)兩位正整數(shù)合并形成一個(gè)新的整數(shù)放在c中。合并的方式是:將a中的十位和個(gè)位數(shù)依次放在變量c的百位和個(gè)位上,b中的十位和個(gè)位數(shù)依次放在變量c的千位和十位上。
例如,當(dāng)a=45,b=12。調(diào)用該函數(shù)后,c=1425。
注意:部分源程序存在文件PROGl.C中。數(shù)據(jù)文件in.dat中的數(shù)據(jù)不得修改。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。
29.學(xué)生的記錄由學(xué)號(hào)和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請(qǐng)編寫函數(shù)fun,它的功能是:把高于等于平均分的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,高于等于平均分的學(xué)生人數(shù)通過形參n傳回,平均分通過函數(shù)值返回。
注意:部分源程序在文件PROGl.C文件中。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。
30.請(qǐng)編寫一個(gè)函數(shù)unsignedfun(unsignedw),w是一個(gè)大于10的無符號(hào)整數(shù),若w是n(n≥2)位的整數(shù),則函數(shù)求出w的后n-1位的數(shù)作為函數(shù)值返回。
例如:w值為5923,則函數(shù)返回923;若w值為923,則函數(shù)返回23。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
unsignedfun(unsignedw)
{
}
main()
{
unsignedx;
clrscr();
printf("Enteraunsignedinteger
number:");
scanf("%u",&x);
printf("Theoriginaldatais:%u\n",x);
if(x<10)
printf("Dataerror!");
else
printf("Theresult:%u\n",fun(x));
}
31.編寫函數(shù)fun(),它的功能是:求出1~1000之內(nèi)能被7或11整除,但不能同時(shí)被7和11整除的所有整數(shù),并將它們放在a所指的數(shù)組中,通過n返回這些數(shù)的個(gè)數(shù)。
[注意]部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。
[試題源程序]
#include<conio.h>
#include<stdio.h>
voidfun(int*a,int*n)
{
}
main()
{
intaa[1000],n,k;
clrscr();
fun(aa,&n);
for(k=0;k<n;k++)
if(k+1)%10==0)
{
printf("%5d",aa[k]);
printf("\n");
}
else
printf("%5d",aa[i]);
}
32.編寫函數(shù)fun(),它的功能是:計(jì)算和輸出下列級(jí)數(shù)的和。
S=1/(1×2)+1/(2×3)+…+1/(n×(n+1))
例如,當(dāng)n=10時(shí),函數(shù)值為0.909091。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。
試題程序;
#include<conio.h>
#include<stdio.h>
doublefun(intn)
{
}
main()
{
clrscr();
printf("%f\n",fun(10));
}
33.請(qǐng)編寫函數(shù)fun(),該函數(shù)的功能是:移動(dòng)字符串中的內(nèi)容,移動(dòng)的規(guī)則是把第1到第m個(gè)字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。
例如,字符串中原有的內(nèi)容為ABCDEFGHIJK,m的值為3,移動(dòng)后,字符串中的內(nèi)容應(yīng)該是DEFGHIJKABC。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#include<string.h>
#defineN80
voidfun(char*w,intm)
{
}
main()
{
chara[N]="ABCDEFGHIJK";
intm;
printf("Theoriginastring:\n");
puts(a);
printf("\n\nEnterm:");
scanf("%d",&m);
fun(a,m);
printf("\nThestringaftermoving:\n");
puts(a);
printf("\n\n");
}
34.編寫函數(shù)fun,其功能是:根據(jù)以下公式求P的值,結(jié)果由函數(shù)值帶回。m與n為兩個(gè)正整數(shù)且要求m>n。
例如:m=12,n=8時(shí),運(yùn)行結(jié)果為495.000000。
注意:部分源程序在文件PROGl.C文件中。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。
四、單選題(0題)35.程序運(yùn)行后的輸出結(jié)果是()。#include<stdio.h>#include<stdlib.h>main(){int*a,*b,*c;a=b=c(int*)malloc(sizeof(int));*a=1;*b=2;*c=3;a=b;printf(“%d,%d,%d\n”,*a,*b,*c);}A.1.1.3B.2.2.3C.1.2.3D.3.3.3
五、單選題(0題)36.堆排序是一種()排序。
A.插入B.選擇C.交換D.歸并
六、單選題(0題)37.C語言中,組成數(shù)據(jù)文件的成分是()。A.A.記錄
B.數(shù)據(jù)行
C.數(shù)據(jù)塊
D.字符(字節(jié))序列
參考答案
1.C解析:程序流程圖是人們對(duì)解決問題的方法、思路或算法的一種描述。其中,圖框表示各種操作的類型,圖框中的文字和符號(hào)表示操作的內(nèi)容,流程線表示操作的先后次序。帶箭頭的線段在數(shù)據(jù)流程圖中表示數(shù)據(jù)流。帶箭頭的線段在程序流程圖中表示控制流。題中給出的選項(xiàng)中,在圖元之間用帶有箭頭的線段表示圖元關(guān)系。在模塊之間用帶有箭頭的線段表示調(diào)用關(guān)系。構(gòu)成程序流程圖的基本圖符及含義:→或↓表示控制流;□表示加工步驟;
表示邏輯條件。
2.D循環(huán)鏈表是線性表的一種鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),循環(huán)隊(duì)列是隊(duì)列的一種順序存儲(chǔ)結(jié)構(gòu)。因此D選項(xiàng)敘述錯(cuò)誤。本題答案為D選項(xiàng)。
3.D
4.C
5.D
6.C
7.D解析:文件系統(tǒng)所管理的數(shù)據(jù)文件基本上是分散的、相互獨(dú)立的,因此相對(duì)于數(shù)據(jù)庫系統(tǒng),以此為基礎(chǔ)的數(shù)據(jù)處理存在3個(gè)缺點(diǎn),數(shù)據(jù)冗余大、數(shù)據(jù)的不一致性、程序與數(shù)據(jù)的相互依賴(簡稱為數(shù)據(jù)依賴)。注意:文件系統(tǒng)和數(shù)據(jù)庫系統(tǒng)各自的特點(diǎn),人工管理階段及數(shù)據(jù)庫系統(tǒng)三代的特點(diǎn)。
8.B
9.A題干中函數(shù)的定義指出了函數(shù)名為fun,返回值的數(shù)據(jù)類型為int。函數(shù)包含3個(gè)參數(shù),第1個(gè)參數(shù)是整型的二維數(shù)組,第2個(gè)參數(shù)是整型數(shù)組,第3個(gè)參數(shù)是整型變量。在定義二維數(shù)組時(shí),必須指定第二維的長度,所以選項(xiàng)B、C、D錯(cuò)誤,選項(xiàng)A正確。本題答案為A選項(xiàng)。
10.D本題考查運(yùn)算符“<<”,b=a<<2,是左移2位,a=2,即b=2*2*2=8。
11.C本題輸出兩個(gè)結(jié)果,第一個(gè)是求字符串的長度。第二個(gè)是輸出的字符串,數(shù)組的下標(biāo)是從0開始的,所以當(dāng)str取1的時(shí)候,應(yīng)為“One*Dream!”。
12.B
13.文檔文檔解析:計(jì)算機(jī)軟件是計(jì)算機(jī)系統(tǒng)中與硬件相互依存的另一部分,是包括程序、數(shù)據(jù)以及相關(guān)文檔的完整集合。
14.DDBBCCDDBBCC解析:C語言對(duì)枚舉的定義規(guī)定:在枚舉中聲明的各個(gè)枚舉元素,如果沒有明確指出某個(gè)枚舉元素的值,它的上一個(gè)元素存在并有明確值的情況下,這個(gè)枚舉元素的值為其上一個(gè)元素的值+1。在本題中,沒有明確說明枚舉元素em3的值,則em3=em2+1=1+1=2,進(jìn)而可知,在printf()打印函數(shù)中,要打印的數(shù)組元素是aa[3]、aa[1]、aa[2],因此最后的打印結(jié)果應(yīng)當(dāng)為“DDBBCC”。
15.(double*)(double*)解析:一般用malloc函數(shù)為變量分配存儲(chǔ)單元時(shí),要在前面用強(qiáng)制類型轉(zhuǎn)換符說明該存儲(chǔ)單元中數(shù)據(jù)的類型。本題要為指向雙精度浮點(diǎn)型數(shù)據(jù)的指針變量p分配存儲(chǔ)單元,因此用(double*)說明。
16.strucklink*nextstrucklink*next解析:結(jié)構(gòu)體變量構(gòu)成鏈表要求結(jié)構(gòu)體中必須有一個(gè)指向該結(jié)構(gòu)體變量自身的指針用來指明鏈表的下一個(gè)結(jié)點(diǎn)。注意:結(jié)構(gòu)體變量的定義及其成員變量的引用。
17.時(shí)間時(shí)間解析:算法的復(fù)雜度主要指時(shí)間復(fù)雜度和空間復(fù)雜度。
18.n/2性表的任何位置插入一個(gè)元素的概率相等,即概率為p=1/(n+1),則插入一個(gè)元素時(shí)所需移動(dòng)元素的平均次數(shù)為E=1/(n+1)(n-i+1)=n/2。
19.6262解析:本題考查的是宏定義。帶參數(shù)的宏定義是按#indefine命令行中指定的字符串從左到右進(jìn)行轉(zhuǎn)換。本題中替換的式子為:6+8*6+8,代入i,j的值得到62。
20.序言性序言性解析:注釋一般分為序言性注釋和功能性注釋。
21.JD
22.x=11x=11解析:在對(duì)無符號(hào)數(shù)的右移是高位補(bǔ)0。
23.軟件危機(jī)的出現(xiàn)軟件危機(jī)的出現(xiàn)
24.關(guān)系關(guān)系解析:關(guān)系模型用;維表表示,則每個(gè);維表代表一種關(guān)系。
25.voidfun(int*wintpintn){intiJt;for(i=p;i<=n-i;i++){t=w[n-1];for(j=n-2;j>=0;j--)w[j+1]=w[j];w[0]=t;}}voidfun(int*w,intp,intn)\r\n{\r\ninti,J,t;\r\nfor(i=p;i<=n-i;i++)\r\n{\r\nt=w[n-1];\r\nfor(j=n-2;j>=0;j--)\r\nw[j+1]=w[j];\r\nw[0]=t;\r\n}\r\n}
26.doublefun(STREC*aSTREC*bSTREC*Cint*nint*m){inti;doubleav=0.0;*n=0;*m=0;for(i=0;i<N;i++)av=av+a[i].S;av=av/N;/*求平均值*/for(i=0;i<N;i++)if(av<=a[i].s){b[*n]=a[i];/*將高于等于平均分的學(xué)生存從所指存儲(chǔ)單元中并統(tǒng)計(jì)人數(shù)*/*n=*n+l;}else{c[*m]=a[i];/*將低于平均分的學(xué)生存入c所指存儲(chǔ)單元中并統(tǒng)計(jì)人數(shù)*/*m=*m+1;}returnav;/*返回平均分*/}doublefun(STREC\u3000*a,STREC*b,STREC*C,int*n,int*m)\r\n{\r\ninti;\r\ndoubleav=0.0;\r\n*n=0;\r\n*m=0;\r\nfor(i=0;i<N;i++)\r\nav=av+a[i].S;\r\nav=av/N;/*求平均值*/\r\nfor(i=0;i<N;i++)\r\nif(av<=a[i].s)\r\n{\r\nb[*n]=a[i];/*將高于等于平均分的學(xué)生存從所指存儲(chǔ)單元中,并統(tǒng)計(jì)人數(shù)*/\r\n*n=*n+l;\r\n}\r\nelse\r\n{\r\nc[*m]=a[i];/*將低于平均分的學(xué)生存入c所指存儲(chǔ)單元中,并統(tǒng)計(jì)人數(shù)*/\r\n*m=*m+1;\r\n}\r\nreturnav;/*返回平均分*/\r\n}解析:本題中第1個(gè)循環(huán)的作用求出所有分?jǐn)?shù)的總和,只有進(jìn)行了av=av/N后才得到平均值(我們在前面的程序中碰到過類似問題)。第2個(gè)循環(huán)的作用是將高于等于平均分的學(xué)生存/kb所指存儲(chǔ)單元中,將低于平均分的學(xué)生存入c所指存儲(chǔ)單元中。同一結(jié)構(gòu)體變量之間可以互相賦值。
本程序中直接用*n,*m來分別表示b,c的下標(biāo),注意開始時(shí)要給*n,*m賦0,且使用時(shí)不能少*號(hào)。因?yàn)閱为?dú)的n,m是一個(gè)指針變量,而我們要用的是它所指向的那個(gè)存儲(chǔ)單元中的值。
27.
解析:該程序功能是求解同時(shí)能被3與7整除的所有自然數(shù)之和的平方根。解題過程,首先利用if條件表達(dá)式“if(i%3==0&&i%7==0)”求能同時(shí)被3與7整除的數(shù),然后在此基礎(chǔ)上利用C語言中的sqrt語句求平方根。
28.*c=(b/10)*1000+(a/10)*100+(b%10)*10+(a%10);*c=(b/10)*1000+(a/10)*100+(b%10)*10+(a%10);解析:該程序功能是將正整數(shù)a、b合并形成一個(gè)新整數(shù)。本題類型首先要考慮整數(shù)的位數(shù)分離,然后要進(jìn)行位數(shù)合成。也就是先將數(shù)字的各位數(shù)拆開,改變排列順序后,再組合成新的數(shù)字。
29.
解析:該程序功能是把高于或等于平均分的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,高于等于平均分的學(xué)生人數(shù)通過形參n傳回,平均分通過函數(shù)返回值返回。解題過程首先求得平均分,然后將所有成績與平均分進(jìn)行比較,如果大于或等于平均分,存入指定數(shù)組。
30.unsignedfun(unsignedw){if(w>=10000)returnw%10000;/*求出n位整數(shù)w的后n-1位的數(shù)*/if(w>=1000)returnw%1000;if(w>=100)returnw%100;if(w>=10)returnw%10;}unsignedfun(unsignedw)\r\n{\r\nif(w>=10000)\r\nreturnw%10000;/*求出n位整數(shù)w的后n-1位的數(shù)*/\r\nif(w>=1000)\r\nreturnw%1000;\r\nif(w>=100)\r\nreturnw%100;\r\nif(w>=10)\r\nreturnw%10;\r\n}解析:我們首先應(yīng)該明白無符號(hào)整數(shù)的定義形式,若它大于10000(5位)時(shí),將10000對(duì)它求余則結(jié)果為后4位;當(dāng)它大于1000(4位)時(shí),將1000對(duì)它求余則結(jié)果為后3位,花此類推。特別注意這里所有if()的順序不能顛倒。
31.voidfun(int*aint*n){intij=0;for(i=1;i<=1000;i++)if((i%7=0||i%11==0)&&i%77!=0)a[j++]=i;*n=j;}voidfun(int*a,int*n)\r\n{\r\ninti,j=0;\r\nfor(i=1;i<=1000;i++)\r\nif((i%7=0||i%11==0)&&i%77!=0)\r\na[j++]=i;\r\n*n=j;\r\n}解析:本題的關(guān)鍵是if條件語句及參數(shù)傳遞。本題的設(shè)計(jì)思路是:(1)利用循環(huán)遍歷1到1000之內(nèi)的整數(shù);(2)利用if語句判斷,把查找到的整數(shù)保存到形參數(shù)組a中;(3)把數(shù)組a中數(shù)組元素的個(gè)數(shù)賦值到形參指針n所指的內(nèi)存。注意程序中if語句的判斷條件,本題是找出能被7或11整除但不能同時(shí)被7和11整除的所有整數(shù)。能同時(shí)被7和11整除的數(shù)一定能被77整除,且不能被7整除的數(shù)不一定就是能被7或11整除的數(shù)。所以,可得出程序中的if語句。
32.doublefun(intn){inti;doubles=0.0;for(i=l;i<=n;i++)s=s+l.0/(i*(i+l));/*求級(jí)數(shù)的和*/returns;}doublefun(intn)\r\n{\r\ninti;\r\ndoubles=0.0;\r\nfor(i=l;i<=n;i++)\r\ns=s+l.0/(i*(i+l));/*求級(jí)數(shù)的和*/\r\nreturns;\r\n}解析:解決數(shù)學(xué)序列的問題,我們的思路依然是“數(shù)學(xué)先行”,即先看清楚題目的數(shù)學(xué)邏輯,然后再根據(jù)C語言來“翻譯”出來。本題中,每一項(xiàng)的值都是n*(n+1)的倒數(shù)。當(dāng)輸入n時(shí),從1開始循環(huán),注意,此處for(i=1;i
33.voidfun(char*wintm){intij;chart;for(i=1;i<=m;i++)/*進(jìn)行m次的循環(huán)左移*/{t=w[0];for(j=1/w[j]!='\0';j++)/*從第2個(gè)字符開始以后的每個(gè)字符都依次前移一個(gè)字符*/w[j-1]=w[j];w[j-1]=t;/*將第1個(gè)字符放到最后一個(gè)字符中*/}}voidfun(char*w,intm)\r\n{\r\ninti,j;\r\nchart;\r\nfor(i=1;i<=m;i++)/*進(jìn)行m次的循環(huán)左移*/\r\n{t=w[0];\r\nfor(j=1/w[j]!='\\0';j++)/*從第2個(gè)字符開始以后的每個(gè)字符都依次前移一個(gè)字符*/\r\nw[j-1]=w[j];\r\nw[j-1]=t;/*將第1個(gè)字符放到最后一個(gè)字符中*/\r\n}\r\n}解析:我們在學(xué)習(xí)C語言的時(shí)候,應(yīng)該廣泛地應(yīng)用到循環(huán)的方法,本題應(yīng)采用“循環(huán)左移”的算法。即從第2個(gè)字符開始以后的每個(gè)字符都依次前移一個(gè)字符,而原來的第1個(gè)字符放在串中的最后一個(gè)字符。當(dāng)要平移m個(gè)字符時(shí),則要進(jìn)行m次的循環(huán)左移。內(nèi)嵌的循環(huán)的作用是完成從第2個(gè)字符開始以后的每個(gè)字符都依次前移一個(gè)字符,w[j-1]=t的作用是將第1個(gè)字符放到最后一個(gè)字符中。
34.
解析:(1)該程序功能是對(duì)組合數(shù)公式求值。它的解題思路,可以分解為以下幾步:求m!→求n!→求(m-n)!→求組合數(shù)的值。
(2)從已給部分源程序的main主函數(shù)開始入手,主函數(shù)中的“printf(“P=%f\n”,fun(12,8));”語句中“fun(12,8)”將12、8傳遞給fun中的m與n,fun函數(shù)實(shí)現(xiàn)對(duì)組合數(shù)的求佰。
35.D
36.B解析:堆排序是一種選擇排序。選擇排序有直接選擇排序和堆排序兩種。
37.D解析:C語言中的文件是流式文件。流式文件是一種無結(jié)構(gòu)文件,即整個(gè)文件是一串字符流或二進(jìn)制流。文件的存取以字符或字節(jié)為單位。2022-2023學(xué)年山西省大同市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________
一、單選題(12題)1.程序流程圖中帶有箭頭的線段表示的是()。
A.圖元關(guān)系B.數(shù)據(jù)流C.控制流D.調(diào)用關(guān)系
2.以下敘述中錯(cuò)誤的是()。
A.向量屬于線性結(jié)構(gòu)B.二叉鏈表是二叉樹的存儲(chǔ)結(jié)構(gòu)C.棧和隊(duì)列是線性表D.循環(huán)鏈表是循環(huán)隊(duì)列的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)
3.指針可以用來表示數(shù)組元素,若已知語句:inta[3][7];則下列表示中正確的是()。
A.*(a+1)[5]B.*(*a+3)C.*(*(a+1))D.*(&a[0][0]+2)
4.對(duì)于順序存儲(chǔ)的線性表,訪問結(jié)點(diǎn)和增加、刪除結(jié)點(diǎn)的時(shí)間復(fù)雜度為()。
A.O(n)O(n)B.O(n)O(1)C.O(1)O(n)D.O(1)O(1)
5.
6.對(duì)于關(guān)鍵字值序列(12,13,11,18,60,15,7,18,25,100)
A.100B.12C.60D.15
7.相對(duì)于數(shù)據(jù)庫系統(tǒng),文件系統(tǒng)的主要缺陷有數(shù)據(jù)關(guān)聯(lián)差、數(shù)據(jù)不一致性和()。
A.可重用性差B.安全性差C.非持久性D.冗余性
8.若用一個(gè)大小為6的數(shù)值來實(shí)現(xiàn)循環(huán)隊(duì)列,且當(dāng)前rear和front的值分別為0和3,當(dāng)從隊(duì)列中刪除一個(gè)元素,再加入兩個(gè)元素后,rear和front的值分別為()。
A.1和5B.2和4C.4和2D.5和1
9.有如下形式的函數(shù):intfun(inta[4][5],int*p[10],intn){…}調(diào)用函數(shù)之前需要對(duì)函數(shù)進(jìn)行說明,即所謂的函數(shù)向前引用說明,以下對(duì)fun函數(shù)說明正確的是()。A.intfun(intb[][5],int*r[],intm);
B.intfun(inta[4][],int*p[10],intn);
C.intfun(inta[][],int*p[],intn);
D.intfun(inta[],int*p[],intn);
10.有以下程序:#include<stdio.h>main(){inta=2,b;b=a<<2;printf("%d\n",b);}程序運(yùn)行后的輸出結(jié)果是()。A.2B.4C.6D.8
11.有以下程序:#include<stdio.h>#include<string.h>main(){charstr[][20][{"One*World","One*Dream!"},*p=str[1];prinft("%d,",strlen(p));printf("%s\n",p);}程序運(yùn)行后的輸出結(jié)果是()。A.9,0ne*WorldB.9,0ne*Dream!C.10,One*Dream!D.10,Ome*World
12.
二、2.填空題(12題)13.軟件是程序、數(shù)據(jù)和【】的集合。
14.下面程序的輸出是【】。
main()
{enumem{em1=3,em2=1,em3};
char*aa[]={"AA","BB","CC","DD"};
printf("%s%s%s\n",aa[em1],aa[em2],aa[em3]);
}
15.若要使指針p指向一個(gè)double類型的動(dòng)態(tài)存儲(chǔ)單元,請(qǐng)?zhí)羁铡?/p>
p=【】malloc(sizeof(double));
16.已知存儲(chǔ)結(jié)構(gòu)如下所示,請(qǐng)?zhí)羁铡?/p>
datanext
structlink{chardata;
【】;
}node;
17.算法的復(fù)雜度主要包括空間復(fù)雜度和______復(fù)雜度。
18.長度為n的順序存儲(chǔ)線性表中,當(dāng)在任何位置上插入一個(gè)元素概率都相等時(shí),插入一個(gè)元素所需移動(dòng)元素的平均個(gè)數(shù)為【】。
19.以下程序運(yùn)行后的輸出結(jié)果是()。#definePower2(x)x*xmain(){inti=6,j=8;printf("%d\n",Power2(i+j));}
20.注釋說明了程序的功能,它分為【】注釋和功能性注釋。
21.以下程序的輸出結(jié)果是()。main(){char*p[]={"ABC","DEF","GHI","JKL"};inti;for(i=3;i>=0;i--,i--)printf("%c",*p[i]);}
22.下面程序的運(yùn)行結(jié)果是【】。
main()
{unsigneda=0112,x;
x=a>>3;
printf("x=%o",x);
}
23.軟件工程的出現(xiàn)是由于【】。
24.在關(guān)系模型中,把數(shù)據(jù)看成一個(gè)二維表,每一個(gè)二維表稱為一個(gè)______。
三、3.程序設(shè)計(jì)題(10題)25.請(qǐng)編寫函數(shù)fun(),該函數(shù)的功能是:移動(dòng)一維數(shù)組中的內(nèi)容,若數(shù)組中有n個(gè)整數(shù),要求把下標(biāo)從p~n-1(p<n-1)的數(shù)組元素平移到數(shù)組的前面。
例如,一維數(shù)組中的原始內(nèi)容為1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,P的值為6。移動(dòng)后,一維數(shù)組的內(nèi)容應(yīng)為7,8,9,10,11,12,13,14,15,1,2,3,4,5,6。
[注意]部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。
[試題源程序]
#inciude<stdio.h>
#defineN80
voidfun(int*w,intp,intn)
{
}
main()
{
inta[N]=(i,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
inti,P,n=15;
printf("Theoriginaldata:\n");
for(i=0;i<n;i++)
printf("%3d",a[i]);
printf("\n\nEnterp:");
scanf("%d",&p);
fun(a,P,n);
printf("\nThedataaftermoving:\n");
for(i=0;i<n;i++)
printf("%3d",a[i]);
printf("\n\n");
}
26.學(xué)生的記錄由學(xué)號(hào)和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請(qǐng)編寫函數(shù)fun(),該函數(shù)的功能是:把高于等于平均分的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,低于平均分的學(xué)生數(shù)據(jù)放在c所指的數(shù)組中,高于等于平均分的學(xué)生人數(shù)通過形參n傳回,低于平均分的學(xué)生人數(shù)通過形參m傳回,平均分通過函數(shù)值返回。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#defineN12
typedefstruct
{charnum[10];
doubleS;
}STREC;
doublefun(STREC*a,STREC*b,STREC*C,int*n,int*m)
{
}
main()
{
STRECs[N]={{“GA05”,65},{“GA03”,86},
{“GA02”,76},{“GA04”,95},{“GA01”,93},
{“GA07”,78},{“GA08”,68},{“GA06”,88},
{“GA09”,60},{“GAll”,54},{“GAl2”,56},
{“GAl0”,98}};
STRECh[N],l[N],t;
FILE*out;
inti,j,m,n;
doubleave;
ave=fun(S,h,l,&n,&m);
printf("The%dstudentdatawhichishigherthan%7.3f:\n",n,ave);
for(i=0;i<n;i++)
printf("%s%4.lf\n",h[i].num,
h[i].s);
printf("\n");
printf("The%dStudentdatawhichiSlowerthan%7.3f:\n",m,ave);
for(i=0;i<m;i++)
printf("%s%4.1f\n",l[i].num,l[i].s);
printf("\n");
ut=fopen("out26.dat","w");
fprintf(out,"%d\n%7.3f\n",n,ave);
for(i=0;i<n-1;i++)
for(j=i+1;i<n;j++)
if(h[i].s<h[j].s)
{t=h[i];h[i]=h[i];h[j]=t;}
/*分?jǐn)?shù)從現(xiàn)到低排列*/
for(i=0;i<n;i++)
fprintf(out,“%4.1f\n",h[i].s);
fprintf(out,"%d\n%7.3f\n",m,ave);
for(i=0;i<m-1;i++)
for(j=i+1;i<m;j++)
if(l[i].s<l[j].s)
{t=l[i];l[i]=l[j];l[j]=t;}
/*分?jǐn)?shù)從高到低排列*/
for(i=0;i<m;i++)
fprintf(out,"%4.1f\n",l[i].s);
fclose(out);
}
27.編寫函數(shù)fun,它的功能是:求小于形參n同時(shí)能被3與7整除的所有自然數(shù)之和的平方根,并作為函數(shù)值返回。
例如若n為1000時(shí),程序輸出應(yīng)為:s=153.909064。
注意:部分源程序在文件PROGl.C文件中。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。
28.函數(shù)fun的功能是:將a、b中的兩個(gè)兩位正整數(shù)合并形成一個(gè)新的整數(shù)放在c中。合并的方式是:將a中的十位和個(gè)位數(shù)依次放在變量c的百位和個(gè)位上,b中的十位和個(gè)位數(shù)依次放在變量c的千位和十位上。
例如,當(dāng)a=45,b=12。調(diào)用該函數(shù)后,c=1425。
注意:部分源程序存在文件PROGl.C中。數(shù)據(jù)文件in.dat中的數(shù)據(jù)不得修改。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。
29.學(xué)生的記錄由學(xué)號(hào)和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請(qǐng)編寫函數(shù)fun,它的功能是:把高于等于平均分的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,高于等于平均分的學(xué)生人數(shù)通過形參n傳回,平均分通過函數(shù)值返回。
注意:部分源程序在文件PROGl.C文件中。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。
30.請(qǐng)編寫一個(gè)函數(shù)unsignedfun(unsignedw),w是一個(gè)大于10的無符號(hào)整數(shù),若w是n(n≥2)位的整數(shù),則函數(shù)求出w的后n-1位的數(shù)作為函數(shù)值返回。
例如:w值為5923,則函數(shù)返回923;若w值為923,則函數(shù)返回23。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
unsignedfun(unsignedw)
{
}
main()
{
unsignedx;
clrscr();
printf("Enteraunsignedinteger
number:");
scanf("%u",&x);
printf("Theoriginaldatais:%u\n",x);
if(x<10)
printf("Dataerror!");
else
printf("Theresult:%u\n",fun(x));
}
31.編寫函數(shù)fun(),它的功能是:求出1~1000之內(nèi)能被7或11整除,但不能同時(shí)被7和11整除的所有整數(shù),并將它們放在a所指的數(shù)組中,通過n返回這些數(shù)的個(gè)數(shù)。
[注意]部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。
[試題源程序]
#include<conio.h>
#include<stdio.h>
voidfun(int*a,int*n)
{
}
main()
{
intaa[1000],n,k;
clrscr();
fun(aa,&n);
for(k=0;k<n;k++)
if(k+1)%10==0)
{
printf("%5d",aa[k]);
printf("\n");
}
else
printf("%5d",aa[i]);
}
32.編寫函數(shù)fun(),它的功能是:計(jì)算和輸出下列級(jí)數(shù)的和。
S=1/(1×2)+1/(2×3)+…+1/(n×(n+1))
例如,當(dāng)n=10時(shí),函數(shù)值為0.909091。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。
試題程序;
#include<conio.h>
#include<stdio.h>
doublefun(intn)
{
}
main()
{
clrscr();
printf("%f\n",fun(10));
}
33.請(qǐng)編寫函數(shù)fun(),該函數(shù)的功能是:移動(dòng)字符串中的內(nèi)容,移動(dòng)的規(guī)則是把第1到第m個(gè)字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。
例如,字符串中原有的內(nèi)容為ABCDEFGHIJK,m的值為3,移動(dòng)后,字符串中的內(nèi)容應(yīng)該是DEFGHIJKABC。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#include<string.h>
#defineN80
voidfun(char*w,intm)
{
}
main()
{
chara[N]="ABCDEFGHIJK";
intm;
printf("Theoriginastring:\n");
puts(a);
printf("\n\nEnterm:");
scanf("%d",&m);
fun(a,m);
printf("\nThestringaftermoving:\n");
puts(a);
printf("\n\n");
}
34.編寫函數(shù)fun,其功能是:根據(jù)以下公式求P的值,結(jié)果由函數(shù)值帶回。m與n為兩個(gè)正整數(shù)且要求m>n。
例如:m=12,n=8時(shí),運(yùn)行結(jié)果為495.000000。
注意:部分源程序在文件PROGl.C文件中。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。
四、單選題(0題)35.程序運(yùn)行后的輸出結(jié)果是()。#include<stdio.h>#include<stdlib.h>main(){int*a,*b,*c;a=b=c(int*)malloc(sizeof(int));*a=1;*b=2;*c=3;a=b;printf(“%d,%d,%d\n”,*a,*b,*c);}A.1.1.3B.2.2.3C.1.2.3D.3.3.3
五、單選題(0題)36.堆排序是一種()排序。
A.插入B.選擇C.交換D.歸并
六、單選題(0題)37.C語言中,組成數(shù)據(jù)文件的成分是()。A.A.記錄
B.數(shù)據(jù)行
C.數(shù)據(jù)塊
D.字符(字節(jié))序列
參考答案
1.C解析:程序流程圖是人們對(duì)解決問題的方法、思路或算法的一種描述。其中,圖框表示各種操作的類型,圖框中的文字和符號(hào)表示操作的內(nèi)容,流程線表示操作的先后次序。帶箭頭的線段在數(shù)據(jù)流程圖中表示數(shù)據(jù)流。帶箭頭的線段在程序流程圖中表示控制流。題中給出的選項(xiàng)中,在圖元之間用帶有箭頭的線段表示圖元關(guān)系。在模塊之間用帶有箭頭的線段表示調(diào)用關(guān)系。構(gòu)成程序流程圖的基本圖符及含義:→或↓表示控制流;□表示加工步驟;
表示邏輯條件。
2.D循環(huán)鏈表是線性表的一種鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),循環(huán)隊(duì)列是隊(duì)列的一種順序存儲(chǔ)結(jié)構(gòu)。因此D選項(xiàng)敘述錯(cuò)誤。本題答案為D選項(xiàng)。
3.D
4.C
5.D
6.C
7.D解析:文件系統(tǒng)所管理的數(shù)據(jù)文件基本上是分散的、相互獨(dú)立的,因此相對(duì)于數(shù)據(jù)庫系統(tǒng),以此為基礎(chǔ)的數(shù)據(jù)處理存在3個(gè)缺點(diǎn),數(shù)據(jù)冗余大、數(shù)據(jù)的不一致性、程序與數(shù)據(jù)的相互依賴(簡稱為數(shù)據(jù)依賴)。注意:文件系統(tǒng)和數(shù)據(jù)庫系統(tǒng)各自的特點(diǎn),人工管理階段及數(shù)據(jù)庫系統(tǒng)三代的特點(diǎn)。
8.B
9.A題干中函數(shù)的定義指出了函數(shù)名為fun,返回值的數(shù)據(jù)類型為int。函數(shù)包含3個(gè)參數(shù),第1個(gè)參數(shù)是整型的二維數(shù)組,第2個(gè)參數(shù)是整型數(shù)組,第3個(gè)參數(shù)是整型變量。在定義二維數(shù)組時(shí),必須指定第二維的長度,所以選項(xiàng)B、C、D錯(cuò)誤,選項(xiàng)A正確。本題答案為A選項(xiàng)。
10.D本題考查運(yùn)算符“<<”,b=a<<2,是左移2位,a=2,即b=2*2*2=8。
11.C本題輸出兩個(gè)結(jié)果,第一個(gè)是求字符串的長度。第二個(gè)是輸出的字符串,數(shù)組的下標(biāo)是從0開始的,所以當(dāng)str取1的時(shí)候,應(yīng)為“One*Dream!”。
12.B
13.文檔文檔解析:計(jì)算機(jī)軟件是計(jì)算機(jī)系統(tǒng)中與硬件相互依存的另一部分,是包括程序、數(shù)據(jù)以及相關(guān)文檔的完整集合。
14.DDBBCCDDBBCC解析:C語言對(duì)枚舉的定義規(guī)定:在枚舉中聲明的各個(gè)枚舉元素,如果沒有明確指出某個(gè)枚舉元素的值,它的上一個(gè)元素存在并有明確值的情況下,這個(gè)枚舉元素的值為其上一個(gè)元素的值+1。在本題中,沒有明確說明枚舉元素em3的值,則em3=em2+1=1+1=2,進(jìn)而可知,在printf()打印函數(shù)中,要打印的數(shù)組元素是aa[3]、aa[1]、aa[2],因此最后的打印結(jié)果應(yīng)當(dāng)為“DDBBCC”。
15.(double*)(double*)解析:一般用malloc函數(shù)為變量分配存儲(chǔ)單元時(shí),要在前面用強(qiáng)制類型轉(zhuǎn)換符說明該存儲(chǔ)單元中數(shù)據(jù)的類型。本題要為指向雙精度浮點(diǎn)型數(shù)據(jù)的指針變量p分配存儲(chǔ)單元,因此用(double*)說明。
16.strucklink*nextstrucklink*next解析:結(jié)構(gòu)體變量構(gòu)成鏈表要求結(jié)構(gòu)體中必須有一個(gè)指向該結(jié)構(gòu)體變量自身的指針用來指明鏈表的下一個(gè)結(jié)點(diǎn)。注意:結(jié)構(gòu)體變量的定義及其成員變量的引用。
17.時(shí)間時(shí)間解析:算法的復(fù)雜度主要指時(shí)間復(fù)雜度和空間復(fù)雜度。
18.n/2性表的任何位置插入一個(gè)元素的概率相等,即概率為p=1/(n+1),則插入一個(gè)元素時(shí)所需移動(dòng)元素的平均次數(shù)為E=1/(n+1)(n-i+1)=n/2。
19.6262解析:本題考查的是宏定義。帶參數(shù)的宏定義是按#indefine命令行中指定的字符串從左到右進(jìn)行轉(zhuǎn)換。本題中替換的式子為:6+8*6+8,代入i,j的值得到62。
20.序言性序言性解析:注釋一般分為序言性注釋和功能性注釋。
21.JD
22.x=11x=11解析:在對(duì)無符號(hào)數(shù)的右移是高位補(bǔ)0。
23.軟件危機(jī)的出現(xiàn)軟件危機(jī)的出現(xiàn)
24.關(guān)系關(guān)系解析:關(guān)系模型用;維表表示,則每個(gè);維表代表一種關(guān)系。
25.voidfun(int*wintpintn){intiJt;for(i=p;i<=n-i;i++){t=w[n-1];for(j=n-2;j>=0;j--)w[j+1]=w[j];w[0]=t;}}voidfun(int*w,intp,intn)\r\n{\r\ninti,J,t;\r\nfor(i=p;i<=n-i;i++)\r\n{\r\nt=w[n-1];\r\nfor(j=n-2;j>=0;j--)\r\nw[j+1]=w[j];\r\nw[0]=t;\r\n}\r\n}
26.doublefun(STREC*aSTREC*bSTREC*Cint*nint*m){inti;doubleav=0.0;*n=0;*m=0;for(i=0;i<N;i++)av=av+a[i].S;av=av/N;/*求平均值*/for(i=0;i<N;i++)if(av<=a[i].s){b[*n]=a[i];/*將高于等于平均分的學(xué)生存從所指存儲(chǔ)單元中并統(tǒng)計(jì)人數(shù)*/*n=*n+l;}else{c[*m]=a[i];/*將低于平均分的學(xué)生存入c所指存儲(chǔ)單元中并統(tǒng)計(jì)人數(shù)*/*m=*m+1;}returnav;/*返回平均分*/}doublefun(STREC\u3000*a,STREC*b,STREC*C,int*n,int*m)\r\n{\r\ninti;\r\ndoubleav=0.0;\r\n*n=0;\r\n*m=0;\r\nfor(i=0;i<N;i++)\r\nav=av+a[i].S;\r\nav=av/N;/*求平均值*/\r\nfor(i=0;i<N;i++)\r\nif(av<=a[i].s)\r\n{\r\nb[*n]=a[i];/*將高于等于平均分的學(xué)生存從所指存儲(chǔ)單元中,并統(tǒng)計(jì)人數(shù)*/\r\n*n=*n+l;\r\n}\r\nelse\r\n{\r\nc[*m]=a[i];/*將低于平均分的學(xué)生存入c所指存儲(chǔ)單元中,并統(tǒng)計(jì)人數(shù)*/\r\n*m=*m+1;\r\n}\r\nreturnav;/*返回平均分*/\r\n}解析:本題中第1個(gè)循環(huán)的作用求出所有分?jǐn)?shù)的總和,只有進(jìn)行了av=av/N后才得到平均值(我們在前面的程序中碰到過類似問題)。第2個(gè)循環(huán)的作用是將高于等于平均分的學(xué)生存/kb所指存儲(chǔ)單元中,將低于平均分的學(xué)生存入c所指存儲(chǔ)單元中。同一結(jié)構(gòu)體變量之間可以互相賦值。
本程序中直接用*n,*m來分別表示b,c的下標(biāo),注意開始時(shí)要給*n,*m賦0,且使用時(shí)不能少*號(hào)。因?yàn)閱为?dú)的n,m是一個(gè)指針變量,而我們要用的是它所指向的那個(gè)存儲(chǔ)單元中的值。
27.
解析:該程序功能是求解同時(shí)能被3與7整除的所有自然數(shù)之和的平方根。解題過程,首先利用if條件表達(dá)式“if(i%3==0&&i%7==0)”求能同時(shí)被3與7整除的數(shù),然后在此基礎(chǔ)上利用C語言中的sqrt語句求平方根。
28.*c=(b/10)*1000+(a/10)*100+(b%10)*1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- T-ZTSS 0002-2024 同山燒酒評(píng)價(jià)規(guī)范
- T-ZJSEIA 007-2024 產(chǎn)品碳足跡評(píng)價(jià)技術(shù)規(guī)范光伏組件
- 二零二五年度健康產(chǎn)業(yè)商家入駐戰(zhàn)略合作協(xié)議
- 2025年度離婚財(cái)產(chǎn)分割與子女財(cái)產(chǎn)繼承協(xié)議
- 二零二五年度個(gè)人之間房產(chǎn)交易保密協(xié)議
- 二零二五年度按揭房屋借款協(xié)議書(公積金貸款)
- 2025年度籃球運(yùn)動(dòng)員轉(zhuǎn)會(huì)合同解除條件
- 二零二五年度超市租賃合同書:超市租賃及綠色環(huán)保產(chǎn)品合作協(xié)議
- 二零二五年度智能交通投資暗股協(xié)議
- 2025年度職業(yè)電競選手私教訓(xùn)練協(xié)議
- 五年級(jí)英語下冊素材-Unit1 Cinderella課文翻譯 譯林版(三起)
- 2022年南京信息職業(yè)技術(shù)學(xué)院職業(yè)適應(yīng)性測試模擬試題及答案解析
- 英語演講素材OfMiceandMen課件
- 歐洲鼻竇炎共識(shí)解讀 EPOS 2020
- 第5章 海洋資源開發(fā)與管理
- 工業(yè)氣體企業(yè)公司組織架構(gòu)圖職能部門及工作職責(zé)
- 稅收基礎(chǔ)知識(shí)考試題庫
- 1t燃?xì)庹羝仩t用戶需求(URS)(共13頁)
- 廣發(fā)證券分支機(jī)構(gòu)人員招聘登記表
- 電工每日巡查簽到表
- 機(jī)電一體化系統(tǒng)設(shè)計(jì)課件姜培剛[1]
評(píng)論
0/150
提交評(píng)論