版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2021年甘肅省定西市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________
一、單選題(20題)1.對(duì)于關(guān)鍵字值序列(12,13,11,18,60,15,7,18,25,100)
A.100B.12C.60D.15
2.下列選項(xiàng)中,能夠滿足“只要字符串s1等于字符串S2,則執(zhí)行ST”要求的是()。
A.if(s1-s2==0)ST;
B.if(s1==s2)ST;
C.if(strcpy(s1,s2)==1)ST;
D.if(strcmp(s2,s1)==0)ST;
3.已知二叉樹后序遍歷序列是CDABE,中序遍歷序列是CADEB,它的前序遍歷序列是()
A.ABCDEB.ECABDC.EACDBD.CDEAB
4.設(shè)有以下程序段:structMP3{charname[20];charcolor;floatprice;}std,*ptr;ptr=&std:若要引用結(jié)構(gòu)體變量std中的color成員,寫法錯(cuò)誤的是()。A.std.colorB.ptr->colorC.std->colorD.(*ptr)color
5.數(shù)據(jù)流圖(DFD)的作用是()。
A.描述軟件系統(tǒng)的控制流B.支持軟件系統(tǒng)的功能建模C.支持軟件系統(tǒng)的面向?qū)ο蠓治鯠.描述軟件系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)
6.以下選項(xiàng)中表示一個(gè)合法的常量是(說明:符號(hào)口表示空格)()。
A.9口9口9B.0XabC.123E0.2D.2.7e
7.計(jì)算機(jī)硬件組成中,CPU包含______。
A.控制器和存儲(chǔ)器B.控制器和運(yùn)算器C.控制器、運(yùn)算器和存儲(chǔ)器D.內(nèi)存儲(chǔ)器和外存儲(chǔ)器
8.下列排序算法中,其時(shí)間復(fù)雜度和記錄的初始排列無關(guān)的是()
A.插入排序B.堆排序C.快速排序D.冒泡排序
9.有以下程序:#include<stdio.h>main(){charch=‘D’;while(ch>‘A’){ch--;putchar(ch);if(ch==‘A’)break;putchar(ch+1);}}程序運(yùn)行后的輸出結(jié)果是()。
A.CBB.BCAC.CCBBD.CDBCA
10.if語句的基本形式是“if(表達(dá)式)語句”,以下關(guān)于“表達(dá)式”值的敘述中正確的是()。
A.必須是邏輯值B.必須是整數(shù)值C.必須是正數(shù)D.可以是任意合法的數(shù)值
11.對(duì)于下述說明,不能使變量p->b的值增1的表達(dá)式是______。structexm{inta;intb;floatc}*p;
A.++p->bB.++(p++)->bC.p->b++D.(++p)->b++
12.當(dāng)n=5時(shí),函數(shù)輸出為()A.5B.11C.29D.10
13.有如下程序main(){inty=3,x=3,z=1;printf("%d%d\n",(++x,y++),z+2);}運(yùn)行該程序的輸出結(jié)果是______。
A.34B.42C.43D.33
14.如有inta=11;則表達(dá)式(a/1)的值是()。
A.0B.3C.4D.11
15.
16.鏈表不具有的特點(diǎn)是()。A.A.不必事先估計(jì)存儲(chǔ)空間
B.可隨機(jī)訪問任意元素
C.插入、刪除不需要移動(dòng)元素
D.所需空間與線性表長度成正比
17.設(shè)有6個(gè)結(jié)點(diǎn)的無向圖,該圖至少應(yīng)有()條邊才能確保是一個(gè)連通圖。
A.7B.5C.8D.6
18.有以下程序
#include<stdio.h>
voidfun(intP)
{intd=2;
P=d++;printf(“%d”,P);}
main()
{inta=1;
fun(A);prinff(“%.d\n”,A);}
程序運(yùn)行后的輸出結(jié)果是A.32B.12C.21D.22
19.
20.有以下程序:#include<stdio.h>voidf1(char*a,charb){charc;c=*a;*a=b;b=c;}voidf2(chara,charb){charc;c=a;a=b;b=c;}voidf3(char*a,char*b){charc;c=*a;*a=*b;*b=c;}main(){chart1,t2;t1=‘A’;t2=‘B’;f3(&t1,&t2);putchar(t1);putchar(t2);t1=‘A’;t2=‘B’;f2(t1,t2);putchar(t1);putchar(t2);t1=‘A’;t2=‘B’;f1(&t1,t2);putchar(t1);putchar(t2);printf(“\n”);}程序運(yùn)行后的輸出結(jié)果是()。
A.ABBABBB.BAABBBC.BABABAD.BABAAB
二、2.填空題(20題)21.下列程序的輸出結(jié)果是______。
main()
{inti=0,a=0;
while(i<20)
{for(;;)
{if((i%10)==0)break;
elsei--;}
i+=11;
a+=i;
}
printf("%d\n",A);
}
22.數(shù)據(jù)庫系統(tǒng)的主要特點(diǎn)為數(shù)據(jù)集成性、數(shù)據(jù)的高_(dá)_____和低冗余性、數(shù)據(jù)獨(dú)立性和數(shù)據(jù)統(tǒng)一管理和控制。
23.以下程序運(yùn)行后的輸出結(jié)果是【】。
main()
{intx=10,y=20,t=0;
if(x==y)t=x;x=Y;Y=t;
printf(“%d,%d\n”,x,y);
}
24.設(shè)有下列宏定義:
#defineA2
#defineB(A+3)
則執(zhí)行賦值語句"k=B*20;"(k為int型變量)后,k的值是______。
25.耦合和內(nèi)聚是評(píng)價(jià)模塊獨(dú)立性的兩個(gè)主要標(biāo)準(zhǔn),其中______反映了模塊內(nèi)各成分之間的聯(lián)系。
26.隊(duì)列是限定在表的一端進(jìn)行插入和在另一端進(jìn)行刪除操作的線性表。允許插入的一端稱作______。
27.下列程序段中循環(huán)體的執(zhí)行次數(shù)是______。
a=15;
b=0;
do{b+=2;a-=2+b;}while(a>=0);
28.在面向?qū)ο蠓椒ㄖ校尽棵枋龅氖蔷哂邢嗨茖傩耘c操作的一組對(duì)象。
29.軟件生命周期可分為多個(gè)階段,一般分為定義階段、開發(fā)階段和維護(hù)階段。編碼和測試屬于【】階段。
30.用復(fù)合的賦值運(yùn)算符將變量x中的值增大2的賦值表達(dá)式是【】。
31.已有定義:double*p;,請(qǐng)寫出完整的語句,利用malloc函數(shù)使p指向一個(gè)雙精度型的動(dòng)態(tài)存儲(chǔ)單元______。
32.有以下程序:
voidf(inty,int*x)
{y=y+*x;*x=*x+y;}
main()
{intx=2,y=4;
f(y,&x);
printf("%d%d\n",x,y);
}
執(zhí)行后輸出結(jié)果是上【】。
33.設(shè)有下列的程序段;
charstr[]="Hello";
char*ptr;
ptr=str;
執(zhí)行上面的程序段后,*(ptr+5)的值為______。
34.閱讀下面程序,則執(zhí)行后的輸出結(jié)果是【】。
#include"stdio.h"
main()
{intx,y,z;
x=1;y=2;z=3;
if(x>y)if(x>z)printf("%d",x);
elseprintf("%d",y);
printf("%d\n",z);}
35.有以下程序
voidf(inty,int*x)
{y=y+*x;*X=*X+y;}
main()
{intx=2,y=4;
f(y,&x);
printf("%d%d\n",x,y);
}
執(zhí)行后輸出結(jié)果是______。
36.以下程序?qū)蓚€(gè)數(shù)從小到大輸出。請(qǐng)?zhí)羁铡?/p>
{floata,b,【】;
scanf(,【】&a,&b);
if(a>b)
{t=a;
【】;
b=t;
printf("%5.2f%5.2f\n",a,b);
}
37.設(shè)一棵完全二叉樹共有700個(gè)結(jié)點(diǎn),則在該二叉樹中有【】個(gè)葉子結(jié)點(diǎn)。
38.對(duì)于長度為n的順序存儲(chǔ)的線性表,當(dāng)隨機(jī)插入和刪除—個(gè)元素時(shí),需平均移動(dòng)元素的個(gè)數(shù)為【】。
39.以下程序的輸出結(jié)果是______。
voidfun()
{staticinta=0;
a+=2;printf("%d",a);
}
main()
{intcc;
for(cc=1;cc<4;cc++)fun();
printf("\n");
}
40.設(shè)函數(shù)findbig已定義為求3個(gè)數(shù)中的最大值。以下程序?qū)⒗煤瘮?shù)指針調(diào)用findbig函數(shù)。請(qǐng)?zhí)羁铡?/p>
main()
{intfindbig(int,int,int);
int(*f)(),x,y,z,big;
f=【】;
seanf("%d%d%d",&x,&y,&z);
big=(*f)(x,y,2);
printf("big=%d\n",big);
}
三、1.選擇題(20題)41.下列程序的執(zhí)行結(jié)果是______。in(f(char*s){char*p=s;while(*p!='\0')p++;return(p-s);}main(){printf("%d\n",f("goodbye!"));}
A.3B.6C.8D.0
42.以下程序的輸出結(jié)果是______。structHAR{intx,y;structHAR*p;};main(){h[0].x=1;h[0].y=2;h[1].x=3;h[1].y=4;h[0].p=&h[1].p=h;printf("%d%d\n",(h[0].p->y));}
A.12B.23C.14D.32
43.請(qǐng)讀程序:#include<stdio.h>voidfun(int*s){staticintj=0;dos[j]+=s[j+1]while(++j<2);}main(){intk,a[10]={l,2,3,4,5};for(k=l;k<3;k++)fun(a);for(k=0;k<5;k++)prinf("%d",a[k]);}上面程序的輸出結(jié)果是()
A.34756B.23445C.35745D.12345
44.設(shè)有下列二叉樹:
對(duì)此二叉樹后序遍歷的結(jié)果為
A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA
45.運(yùn)行以下程序后,如果從鍵盤上輸入6514<回車>,則輸出結(jié)果為______。main(){intm,n;printf("Enterm,n:");scanf("%d%d",&m,&n);while(m!=n){while(m>n)m-=n;while(n>m)n-=m;}printf("m=%d\n",m);}
A.m=3B.m=2C.m=1D.m=0
46.在下列幾種排序方法中,要求內(nèi)存量最大的是______。
A.插入排序B.選擇排序C.快速排序D.歸并排序
47.能正確表示邏輯關(guān)系“a>=10或a<=0”的C語言表達(dá)式是()。
A.a>=10ora=10
B.a>=0|a<=10
C.a>=10&&a<=0
D.a>=10||a<=0
48.下面程序的輸出是______。main(){inta=6,b=3;printf("%d\n",b=(a/b,a%b));}
A.0B.1C.2D.不確定的值
49.請(qǐng)選出可用作C語言用戶標(biāo)識(shí)符的是
A.void,define,WORD
B.a3_b3,_123,IF
C.FOR,--abc,Case
D.2a,Do,Sizeof
50.以下敘述正確的是()。
A.continue語句的作用是結(jié)束整個(gè)循環(huán)的執(zhí)行
B.只能在循環(huán)體內(nèi)和switch語句體內(nèi)使用break語句
C.在循環(huán)體內(nèi)使用break語句或continue語句的作用相同
D.從多層循環(huán)嵌套中退出時(shí),只能使用goto語句
51.有下列程序:main(){inti,j;for(i=1;i<4;i++){for(j=i;j<4;j++)printf("%d*%d=%d",i,j,i*j);printf("\n");}}程序運(yùn)行后的輸出結(jié)果是()。
A.1*1=11*2=21*3=32*1=22*2=43*1=3
B.1*1=11*2=21*3=32*2=42*3=63*3=9
C.1*1=11*2=22*2=41*3=32*3=63*3=9
D.1*1=12*1=22*2=43*1=33*2=63*3=9
52.以下程序的輸出結(jié)果是______。#include<stdio>main(){inta=200;#definea100printf("%d",a);#undefaprintf("%d",a);}
A.200100B.100100C.100200D.200200
53.若有定義:inta=4,b=5;floatx=3.4,y=2.1;,則下列表達(dá)式的值為()。(float)(a+B)/2+(int)x%(int)y
A.5.5B.55C.5.5D.55
54.運(yùn)行下面的程序,其輸出結(jié)果為______。main(){pintf("%d,%d",5%-3,-5%3);}
A.2,-2B.-2,2C.-2,-2D.2,2
55.為了避免嵌套的if-else的二義性,C語言鋇定:else與______配對(duì)。
A.縮排位置相同的ifB.其之前最近的ifC.其之后最近的ifD.同一行上的if
56.以下正確的數(shù)組定義語句是()。
A.inty[1][4]={1,2,3,4,5,};
B.floatx[3][]={{l},{2},{3}};
C.longs[2][3]={{1},{1,2}{1,2,3,}};
D.doublet[][3]={0}
57.已知inta=1,b=3則a^b的值為
A.3B.1C.2D.4
58.下述關(guān)于數(shù)據(jù)庫系統(tǒng)的敘述中正確的是______。
A.數(shù)據(jù)庫系統(tǒng)減少了數(shù)據(jù)冗余
B.數(shù)據(jù)庫系統(tǒng)避免了一切冗余
C.數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的一致性是指數(shù)據(jù)類型的一致
D.數(shù)據(jù)庫系統(tǒng)比文件系統(tǒng)能管理更多的數(shù)據(jù)
59.若有以下說明和定義uniondt{inta;charb;doublec;}data;以下敘述中錯(cuò)誤的是______。A.data的每個(gè)成員起始地址都相同
B.變量data所占的內(nèi)存字節(jié)數(shù)與成員c所占字節(jié)數(shù)相等
C.程序段data.a=5;printf("%f\n",data.c);輸出結(jié)果為5.000000
D.data可以作為函數(shù)的實(shí)參
60.下列程序的輸出結(jié)果,是______。main(){inta=0,b=0,c=0;if(++a>0||++b>0)++c;printf("\na=%d,b=%d,c=%d",a,b,c);}
A.a=0,b=0,c=0B.a=1,b=1,c=1C.a=1,b=0,c=1D.a=0,b=1,c=1
四、選擇題(20題)61.有以下程序:
當(dāng)運(yùn)行時(shí)輸入:a<回車>后,以下敘述正確的是()。
A.變量c1被賦予字符a,c2被賦予回車符
B.程序?qū)⒌却脩糨斎氲?個(gè)字符
C.變量c1被賦予字符a,c2中仍是原有字符2
D.變量c1被賦予字符a,c2中將無確定值
62.若有定義語句:inta=3,b=2,c=1;以下選項(xiàng)中錯(cuò)誤的賦值表達(dá)式是()。
A.a=(b=4)=3;B.a=b=c+1;C.a=(b=4)+c;D.a=1+(b=c=4);
63.
64.
65.以下描述中正確的是()。
A.由于do-while循環(huán)中循環(huán)體語句只能是一條可執(zhí)行語句,所以循環(huán)體內(nèi)不能使用復(fù)合語句
B.do-while循環(huán)由do開始,用while結(jié)束,在while(表達(dá)式.后面不能寫分號(hào)
C.在do-while循環(huán)體中,是先執(zhí)行一次循環(huán),再進(jìn)行判斷
D.do-while循環(huán)中,根據(jù)情況可以省略while
66.下列數(shù)據(jù)結(jié)構(gòu)中,屬于非線性結(jié)構(gòu)的是A.循環(huán)隊(duì)列B.帶鏈隊(duì)列C.二叉樹D.帶鏈棧
67.有以下程序:
當(dāng)執(zhí)行程序時(shí),按下列方式輸人數(shù)據(jù)(從第l列開始,<CR>代表回車,注意,回車也是—個(gè)字符)l<CR>
234<CR>
則輸出結(jié)果是()。
A.34
B.134
C.123
D.1234
68.
69.若有定義“inta=5,b=7;”,則表達(dá)式a%=(b%2)運(yùn)算后,a的值為()。
A.0B.1C.11D.3
70.第
11
題
若有定義:char*st="howareyou";下列程序段中正確的是
A.chara[11],*p;strcpy(p=a+1,&st[4]);
B.chara[11];strcpy(++a,st);
C.chara[11];strcpy(a,st);
D.chara[],*p;strcpy(p=&a[1],st+2);
71.已知longi=32768;執(zhí)行語句printf(“%d”,i);屏幕顯示()。
A.-1B.-32768C.1D.32768
72.
73.
74.以下程序的輸出結(jié)果是______。intx=3;main(){inti;for(i=1;i<x;i++)incre();}incre(){staticintx=1;x*=x+1;printf("%d",x);}
A.33B.22C.26D.25
75.
76.在長度為n的有序線性表中進(jìn)行二分法查找,最壞情況下需要比較的次數(shù)是()。A.O(n)B.0(n2)C.O(log2n)D.O(nlog2n)
77.假設(shè)a和b為int型變量,則執(zhí)行以下語句后b的值為()。a=1;b=10;do{b-=a;a++;}while(b--<0);A.9B.-2C.-lD.8
78.設(shè)有如下程序
#include<stdio.h>
main()
{
int**k,*j,i=100;
j=&i;k=&j;
printf("%d\n",**k);
}
上述程序的輸出結(jié)果是
A.運(yùn)行錯(cuò)誤B.100
C.i的地址D.j的地址
79.檢查軟件產(chǎn)品是否符合需求定義的過程稱為()。
A.確認(rèn)測試B.集成測試C.驗(yàn)證測試D.驗(yàn)收測試
80.
有以下程序:
main
{inta[]=(2,4,6,8,10},y=0,x,*P;
p=&a[1];
for(x=1;x<3;x++)y+=p[x];
printf("%d\n,y");
}
程序運(yùn)行后的輸出結(jié)果是()。
A.10B.11C.14D.15
五、程序改錯(cuò)題(1題)81.下列給定程序中,函數(shù)proc()的功能是:用冒泡法對(duì)6個(gè)字符串按由小到大的順序進(jìn)行排序。請(qǐng)修改程序中的錯(cuò)誤,使它能得到正確結(jié)果。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計(jì)題(1題)82.某學(xué)生的記錄由學(xué)號(hào)、8門課程成績和平均分組成,學(xué)號(hào)和8門課程的成績已在主函數(shù)中給出,請(qǐng)編寫函數(shù),其功能是:求出該學(xué)生的平均分,并放入記錄的ave成員中。
例如,學(xué)生的成績是:85.5,76,69.5,85,91,72,64.5,87.5,則他的平均分應(yīng)為78.875。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun部位中填入你編寫的若干語句。
試題程序:
#include<stdio.h>
#defineN8
typedefstruct
{
charnum[10];
doubles[N];
doubleave;
}STREC;
voldfun(STREC*a)
{
}
voidmain
STRECs={"GA005",85.5,76,69.5,85,91,72,64.5,87.5};
inti;
fun(&s);
printf("The%ssstudentdata:\n",s.num);
for(i=0;i<N;i++)
printf("%4.1fkn",s.s[i]);
printf("\nknave=%7.3fkn",s.aVe);
printf("\n");
}
參考答案
1.C
2.D在C語言中,對(duì)兩個(gè)字符串進(jìn)行比較,使用字符串比較函數(shù)strcmp。如果這個(gè)函數(shù)的返回值等于0,說明兩個(gè)字符串相等。故本題答案為D選項(xiàng)。
3.C由于后序遍歷的最后一個(gè)兒素為E,所以E為根結(jié)點(diǎn),所以它的前序遍歷的首個(gè)元素為E,敞排除A)和D)選項(xiàng)。由于中序遍歷中,元素B在元素根結(jié)點(diǎn)E自:J后面,所以B為二叉樹的右子樹,并且該二叉樹右子樹只有一個(gè)兒素,所以前序遍歷的最后一個(gè)元素應(yīng)為B,故選項(xiàng)C)為正確選項(xiàng),即該二叉塒的前序遍歷序列是EACDB。
4.C【答案】C
【知識(shí)點(diǎn)】結(jié)構(gòu)體成員變量的引用
【解析】結(jié)構(gòu)體變量包括一個(gè)或多個(gè)成員變量,引用其成員變量的語法格式如下:
結(jié)構(gòu)體變量.成員變量。通過結(jié)構(gòu)體指針變量獲得其結(jié)構(gòu)體變量的成員變量的一般形式為:(*結(jié)構(gòu)體指針變量).成員變量,也可以使用:結(jié)構(gòu)體指針變量->成員變量來引用成員變量。
5.B數(shù)據(jù)流圖是系統(tǒng)邏輯模型的圖形表示,從數(shù)據(jù)傳遞和加工的角度,來刻畫數(shù)據(jù)流從輸入到輸出的移動(dòng)變化過程,它直接支持系統(tǒng)的功能建模。本題答案為B選項(xiàng)。
6.B當(dāng)用指數(shù)形式表示浮點(diǎn)數(shù)據(jù)時(shí),E的前后都要有數(shù)據(jù),并且E的后面數(shù)要為整數(shù)。
7.B
8.B
9.Dputchar函數(shù)的功能是輸出一個(gè)字符,由whlie判斷條件和ch初始值可知,只要“ch≠‘A’”,執(zhí)行兩次putchar函數(shù),否則跳出循環(huán)。第1次輸出“CD”,第2次輸出“BC”,第3次輸出“A”后跳出循環(huán)。故本題答案為D選項(xiàng)。
10.Dif語句中的表達(dá)式可以是任意合法的數(shù)值,如常量、變量表達(dá)式。故本題答案為D選項(xiàng)。
11.D解析:p->b應(yīng)作為一個(gè)整體看待,++p->b和p->b++都使變量b增1,++(p++)->b先使b增1,再使p后移,D中表達(dá)式的含義是使p+1所指結(jié)構(gòu)體變量中的成員b的值增1。
12.C
13.D解析:逗號(hào)表達(dá)式(++x,y++)的值應(yīng)該是y++的值,由于y++是先引用后自增,所以y++的值是3。
14.D
15.C
16.B鏈表采用的是鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),它的結(jié)點(diǎn)空間可以動(dòng)態(tài)申請(qǐng)和釋放;它的數(shù)據(jù)元素的邏輯次序靠結(jié)點(diǎn)的指針來指示,插入、刪除不需要移動(dòng)數(shù)據(jù)元素。但是鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)也有不足之處:每個(gè)結(jié)點(diǎn)中的指針域需額外占用存儲(chǔ)空間,它是一種非隨機(jī)存儲(chǔ)結(jié)構(gòu)。
17.B
18.C程序運(yùn)行后,首先輸出的是p的值,然后再輸出a的值。p=d++,得到p的值為d的初始值2;a的值不變,仍為1。
19.C
20.B函數(shù)f1(*a,b),*a為地址傳遞,b為值傳遞,將b值傳給*a,則f1(&t1,t2)調(diào)用后輸出t1、t2為BB。f2(a,b)為值傳遞,傳入的只是a、b的值,不實(shí)現(xiàn)交換,則f2(t1,t2)調(diào)用后輸出t1、t2為AB。f3(*a,*b)為地址傳遞,可以實(shí)現(xiàn)a、b值的交換,則f3(&t1,&t2)調(diào)用后輸出t1、t2為BA。因此結(jié)果為BAABBB。故本題答案為B選項(xiàng)。
21.3232解析:while(表達(dá)式)的功能是:首先計(jì)算表達(dá)式的值,若為真,則執(zhí)行循環(huán)體語句,執(zhí)行完畢,再計(jì)算表達(dá)式的值,若仍為真,則重復(fù)執(zhí)行循環(huán)體語句,直到表達(dá)式的值為假時(shí),結(jié)束while語句的執(zhí)行,繼續(xù)執(zhí)行while語句后面的語句:i=0時(shí)滿足循環(huán)條件,也滿足if的條件,執(zhí)行語句得i=11,a=11,第2次循環(huán)不滿足if的條件,執(zhí)行i--,i=10,執(zhí)行i+=11;a+=i后,得i=21,a=32,不滿足i<20,循環(huán)結(jié)束。
22.共享性共享性解析:數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)能被不同的應(yīng)用程序使用,實(shí)現(xiàn)了數(shù)據(jù)的高度共享,從而降低了數(shù)據(jù)的冗余,這也是數(shù)據(jù)庫的主要目的。
23.20020,0解析:在主函數(shù)中首先定義了三個(gè)整型變量x、y、t,并分別給它們賦初值為10,20,0,接著執(zhí)行if語句,在if后面括號(hào)內(nèi)的條件表達(dá)式中,條件“x==y”即“10==20”不成立,則不執(zhí)行其后的語句“t=x”,然后退出if語句,順序執(zhí)行語句x=Y;Y=t;。執(zhí)行完這兩條語句后x的值變?yōu)?0,y的值變?yōu)?,所以最后輸出x,y的值為20和0。
24.100100解析:本題考查帶參數(shù)的宏定義及相關(guān)運(yùn)算。運(yùn)算過程為:k=B*20=(A+3)*20=(2+3)*20=100。
25.內(nèi)聚內(nèi)聚
26.隊(duì)尾隊(duì)尾解析:在隊(duì)列中,允許插入的一端叫做“隊(duì)尾”,允許刪除的一端叫做“隊(duì)頭”。
27.33解析:本題考查do…while語句形式:
do循環(huán)體
while表達(dá)式
首先執(zhí)行循環(huán)體語句,然后檢測循環(huán)控制條件表達(dá)式的值,若為真,則重復(fù)執(zhí)行循環(huán)體語句,否則退出循環(huán)。第1次循環(huán):b+=2,b=2,a-=2+b,a=11;第2次循環(huán):b=4,a=5;第3次循環(huán):b=6,a=-3,此時(shí)再判斷循環(huán)條件不滿足,退出循環(huán)。
28.類類解析:在面向?qū)ο蠓椒ㄖ?,類描述的是具有相似屬性與操作的一組對(duì)象。
29.開發(fā)開發(fā)解析:軟件生命周期(SDLC,軟件生存周期)是軟件的產(chǎn)生直到報(bào)廢的生命周期,周期內(nèi)有問題定義、可行性分析、總體描述、系統(tǒng)設(shè)計(jì)、編碼、調(diào)試和測試、驗(yàn)收與運(yùn)行、維護(hù)升級(jí)到廢棄等階段,其中的編碼和測試屬于開發(fā)階段。
30.x+=2
31.p=(double*)malloc(sizeof(double)):或p=(double*)malloc(8);p=(double*)malloc(sizeof(double)):或p=(double*)malloc(8);解析:malloc()函數(shù)只有一個(gè)參數(shù),該參數(shù)指定了需要分配多少字節(jié)的內(nèi)存。然后將分配好的內(nèi)存塊的首地址作為void*(未知類型指針)返回.故標(biāo)準(zhǔn)的調(diào)用形式應(yīng)該寫成:
p(double*)malloc(sizeof(double));
32.8484解析:函數(shù)f(y,*x)的作用是讓y的值加上指針x所指向變量的值,讓指針x所指向變量的值加上y的值。由于形參y是傳值的,形參x是傳地址的,故調(diào)用該函數(shù)后,作為實(shí)參的y的值將不改變,而實(shí)參x的值將改變,故最后輸出的y的值為4,而x的值為8。
33.'\0''\\0'解析:本題涉及字符數(shù)組和指針的兩個(gè)知識(shí)點(diǎn):①在C語言中,字符型數(shù)組在存放字符串時(shí)會(huì)自動(dòng)在末尾加上字符串結(jié)束標(biāo)識(shí)符'\\0'所以題中數(shù)組str有6個(gè)元素。②ptr指向數(shù)組str的首地址,ptr+5是指向str[5],*(ptr+5)是引用str[5]的值,即'\\0'。
34.33解析:C語言的語法規(guī)定:else子句總是與前面最近的不帶else的if相結(jié)合。因?yàn)閤不大于y,所以執(zhí)行printf('%d\\n',z);語句。
35.8484解析:本題考核的知識(shí)點(diǎn)是函數(shù)的調(diào)用、值傳遞和地址傳遞的區(qū)別。“值傳遞”指實(shí)參將值傳遞給形參后,實(shí)參與形參再無聯(lián)系。也就是說對(duì)行參的改變將不影響實(shí)參;地址傳遞是指地址或數(shù)組名作為形參時(shí)的參數(shù)傳遞,這種情況下對(duì)形參的改變將對(duì)實(shí)參產(chǎn)生影響.函數(shù)f(Y*x)的作用是讓y的值加上指針x所指向變量的值,讓指針x所指向變量的值加上y的值。由于形參y是傳值的,形參x是傳地址的,故調(diào)用該函數(shù)后,作為實(shí)參的y的值將不改變,而實(shí)參x的值將改變,故最后輸出的y的值為4,而x的值為8。
36.t"%f%f"a=b
37.350350解析:在任意一棵二叉樹中,度為0的結(jié)點(diǎn)(即葉子結(jié)點(diǎn))總是比度為2的結(jié)點(diǎn)多一個(gè)。在根據(jù)完全二叉樹的定義,在一棵完全二叉樹中,最多有1個(gè)度為1的結(jié)點(diǎn)。因此,設(shè)一棵完全二叉樹具有n個(gè)結(jié)點(diǎn),若n為偶數(shù),則在該二叉樹中有n/2個(gè)葉子結(jié)點(diǎn)以及n/2-1個(gè)度為2的結(jié)點(diǎn),還有1個(gè)是度為1的結(jié)點(diǎn):若n為奇數(shù),則在該二叉樹中有[n/2]+1個(gè)葉子結(jié)點(diǎn)以及[n/2]個(gè)度為2的結(jié)點(diǎn),沒有度為1的結(jié)點(diǎn)。本題中,完全二叉樹共有700個(gè)結(jié)點(diǎn),700是偶數(shù),所以,在該二叉樹中有350個(gè)葉子結(jié)點(diǎn)以及349個(gè)度為2的結(jié)點(diǎn),還有1個(gè)是度為1的結(jié)點(diǎn)。所以,本題的正確答案為350。
38.n/2n/2解析:刪除—個(gè)元素,平均移動(dòng)的元素個(gè)數(shù)為(n-1+n-2+…+0)/n=(n-1)/2;插入一個(gè)元素,平均移動(dòng)元素個(gè)數(shù)為(n+n-1+n-2+…+1)/n=(n+1)/2:所以總體平均移動(dòng)元素個(gè)數(shù)為n/2。
39.246
40.findbigfindbig解析:本題首先定義了一個(gè)指向函數(shù)的指針變量f,如果希望讓它指向某個(gè)函數(shù),只需把函數(shù)名賦給該指針變量即可。所以說本題的空格處應(yīng)該填入函數(shù)名findbig。
41.C解析:字符在內(nèi)存中占一個(gè)字節(jié)的存儲(chǔ)空間,按字符的存儲(chǔ)順序,其地址依次遞增,在函數(shù)f中循環(huán)過后,p指向字符串的結(jié)束位置,s指向字符串首地址,p-s即為字符串長度。
42.D解析:本題中是—個(gè)含有兩個(gè)結(jié)點(diǎn)的循環(huán)鏈表。C語言中結(jié)構(gòu)體的定義為:srtyct結(jié)構(gòu)體類型名{成員項(xiàng)表;}
43.C
44.D解析:二叉樹的遍歷分為先序、中序、后序三種不同方式。本題要求后序遍歷,其遍歷順序應(yīng)該為:后序遍歷左子樹->,后序遍歷右子樹->,訪問根結(jié)點(diǎn)。按照定義,后序遍歷序列是DEBFCA,故答案為D。
45.C解析:分析程序可知,該程序?qū)崿F(xiàn)的功能是對(duì)數(shù)m,n求其最大公約數(shù)。在本題中m與n的值分別為65與14,其最大公約數(shù)為1,故其輸出結(jié)果為m=1。
46.D解析:快速排序的基本思想是,通過一趟排序?qū)⑴判蛴涗浄指畛瑟?dú)立的兩部
分,其中一部分記錄的關(guān)鍵字均比另一部分記錄的關(guān)鍵字小,再分別對(duì)這兩部分記錄繼
續(xù)進(jìn)行排序,以達(dá)到整個(gè)序列有序;插入排序的基本操作是指將無序序列中的各元素依
次插入到已經(jīng)有序的線性表中,從而得到一個(gè)新的序列;選擇排序的基本思想是:掃描整
個(gè)線性表,從中選出最小的元素,將它交換到表的最前面(這是它應(yīng)有的位置),然后對(duì)剩
下的于表采用同樣的方法,直到表空為止;歸并:排序是將兩個(gè)或兩個(gè)以上的有序表組合
成一個(gè)新的有序表。
注意:各種排序方法實(shí)現(xiàn)過程及實(shí)現(xiàn)機(jī)制。
47.D解析:在C語言中,邏輯運(yùn)算符有與&&、或||、非!,關(guān)系運(yùn)算符有大于>、小于<、大于等于>=、小于等于<=、等于==,根據(jù)邏輯關(guān)系很容易看出,符合條件的選項(xiàng)為D。
48.A解析:逗號(hào)表達(dá)式的值為最后一個(gè)表達(dá)式的值,本題將a%b的值0賦給變量b。
49.B解析:C語言規(guī)定用戶標(biāo)識(shí)符由字母、數(shù)字和下畫線組成,且第一個(gè)字符必須是字母或下畫線,可見選項(xiàng)C),D)是錯(cuò)誤的;此外,C語言不允許用戶將關(guān)鍵字作為標(biāo)識(shí)符,而選項(xiàng)A)中的void正是C語言的關(guān)鍵字。
50.B解析:continue是結(jié)束本次循環(huán),直接進(jìn)入到下次循環(huán)中,break用于循環(huán)語句中的作用是直接跳出本層循環(huán),能從多層循環(huán)中退出的語句除了goto語句,exit,return等語句也能直接跳出多層循環(huán)。注意:continue和break語句在while語句中的作用。
51.B解析:外層for循環(huán)的自變量i從1開始,每次循環(huán)后增1,直到i等于3結(jié)束.對(duì)于外層循環(huán)自變量i的每一個(gè)值,內(nèi)層循環(huán)的自變量j每次從i開始,每次循環(huán)后增1,直到j(luò)等于3結(jié)束。所以在每次外循環(huán)開始后,內(nèi)層循環(huán)在一行先打印i*j=兩個(gè)乘數(shù)的積,然后回車換行,下次循環(huán)從下一行開始打印輸出結(jié)果。
52.C解析:#define宏名的有效范圍為定義命令之后到本源文件結(jié)束,可以在程序中使用#undef命令終止宏定義的作用域。本題由于#undef的作用,使a的作用范圍在#definea100到#undefa之間,故答案為C。
53.C解析:在計(jì)算(float)(a+b)/2時(shí),由于通過強(qiáng)制類型轉(zhuǎn)換將(a+b)轉(zhuǎn)換成了float型,所以應(yīng)先將2轉(zhuǎn)換成float型,再進(jìn)行計(jì)算,得4.500000。
在計(jì)算(int)x%(int)y時(shí),先將x和y通過強(qiáng)制類型轉(zhuǎn)換成int型,再進(jìn)行求余運(yùn)算,得1。
又因?yàn)?.500000是float型,所以將1和它相加時(shí),先將1換成float型,再計(jì)算,得到5.500000。
注意:類型轉(zhuǎn)換的一般規(guī)則是:低級(jí)類型服從高級(jí)類型,并進(jìn)行相應(yīng)的轉(zhuǎn)換。數(shù)據(jù)類型的級(jí)別由低到高的排序表示為:char→int→unsigned→long→float→double。
54.A解析:在C中,參與%運(yùn)算的兩個(gè)參數(shù)都必須為整形,在大多數(shù)C編譯器下(包括TurboC)都采用了“向0靠近”的原則,即當(dāng)兩個(gè)運(yùn)算量有一個(gè)為負(fù)數(shù)時(shí),余數(shù)的符號(hào)由被除數(shù)的符號(hào)決定。故本題答案為A。
55.B解析:在if語句中又包含一個(gè)或多個(gè)if語句稱為if語句的嵌套。應(yīng)當(dāng)注意if與else的配對(duì)關(guān)系,在C語言中,從量內(nèi)層開始,else總是與它上面最近的(未曾配對(duì)的)if配對(duì)。
56.D解析:選項(xiàng)A定義了一個(gè)1行4列的二維數(shù)組,只有4個(gè)元素,而初始化列表有5個(gè)初始值,所以不正確。定義二維數(shù)組時(shí)只能省略第二維的長度,選項(xiàng)B省略的是第一維的長度,所以不正確。選項(xiàng)C定義了一個(gè)2行3列的二維數(shù)組,但初始值列表中使用了3個(gè)大括號(hào),使行數(shù)超出定義范圍,所以不正確。故正確答案是選項(xiàng)D。
57.C解析:^是按位異或運(yùn)算,如果對(duì)應(yīng)位不同則結(jié)果為1,相同則為0。
58.A解析:由于數(shù)據(jù)的集成性使得數(shù)據(jù)可為多個(gè)應(yīng)用所共享,特別是在網(wǎng)絡(luò)發(fā)達(dá)的今天,數(shù)據(jù)庫與網(wǎng)絡(luò)的結(jié)合擴(kuò)大了數(shù)據(jù)關(guān)系的應(yīng)用范圍。數(shù)據(jù)的共享自身又可極大地減少數(shù)據(jù)冗余性,不僅減少了不必要的存儲(chǔ)空間,更為重要的是可以避免數(shù)據(jù)的不一致性。這里所謂數(shù)據(jù)的一致性是指在系統(tǒng)中同一數(shù)據(jù)的不同出現(xiàn)應(yīng)保持相同的值,而數(shù)據(jù)的不一致性指的是同一個(gè)數(shù)據(jù)在系統(tǒng)的不同拷貝處有不同的值。
59.C解析:共用體成員a,b,c共占用同一個(gè)內(nèi)存空間,所以data的每個(gè)成員起始地址都相同;共用體變量所占的內(nèi)存長度等于最長的成員的長度,故變量data所占的內(nèi)存字節(jié)數(shù)與成員所占字節(jié)數(shù)相等;由于各成員變量的類型不一致,所以它們的存儲(chǔ)方式也不相同,整型占用2個(gè)字節(jié)的存儲(chǔ)空間,double型占用8個(gè)字節(jié)的存儲(chǔ)空間;data可以作為函數(shù)的實(shí)參,此時(shí)data作為一個(gè)地址進(jìn)行地址傳送;執(zhí)行data.a=5;printf('%f\\n',data.c);系統(tǒng)不能自動(dòng)將整型變量轉(zhuǎn)換為浮點(diǎn)型值,printf函數(shù)只是將內(nèi)存中的數(shù)據(jù)以不同類型輸出,而不能將內(nèi)存中的整型數(shù)據(jù)自動(dòng)轉(zhuǎn)換為等值的浮點(diǎn)數(shù),故選項(xiàng)C)錯(cuò)誤。
60.C解析:“||”是或運(yùn)算,它有個(gè)“短路”的特點(diǎn)需特別注意,當(dāng)“||”運(yùn)算符左邊的表達(dá)式的值為真時(shí),則程序就不再對(duì)“||”右邊的表達(dá)式的值進(jìn)行運(yùn)算,而是使得整個(gè)表達(dá)式的值直接為真。
61.A本題考查的是輸入輸出函數(shù)。函數(shù)get.char的作用是從終端(或系統(tǒng)隱含指定的輸入設(shè)備)輸入一個(gè)字符,且只能接受一個(gè)字符(回車符也算是一個(gè)字符)。故本題中變量cl被賦予字符a,c2被賦予回車符。
62.A不能將變量或常量賦給一個(gè)表達(dá)式,所以A選項(xiàng)中(b=4)=3是錯(cuò)誤的。
63.A
64.D
65.C解析:do-while語句的一般形式為:do循環(huán)體語句while(表達(dá)式);,其中循環(huán)體語句可以是復(fù)合型語句,但必須用花括號(hào)括起來。while后必須要有分號(hào)作為語句的結(jié)束,在do-while循環(huán)中,不可以省略while。
66.C根據(jù)數(shù)據(jù)結(jié)構(gòu)中各數(shù)據(jù)元素之間的前后件關(guān)系的復(fù)雜程度,一般將數(shù)據(jù)結(jié)構(gòu)分為兩大類:線性結(jié)構(gòu)和非線性結(jié)構(gòu)。循環(huán)隊(duì)列、帶鏈隊(duì)列和帶鏈棧都是線性結(jié)構(gòu),而二叉樹是非線性結(jié)構(gòu)。
67.C程序根據(jù)用戶輸入分別給字符型變量a、
68.D
69.A本題考查“%”運(yùn)算符的使用。運(yùn)算符“%”是整數(shù)除法的余數(shù)。本題中表達(dá)式a%=(b%2)等價(jià)于a=a%(b%2)=5%(7%2)=5%1=0。
70.A本題綜合考查字符數(shù)組的賦值和strcpy函數(shù)的用法。C語言不允許用賦值表達(dá)式對(duì)字符數(shù)組賦值,如下面的語句就是非法的:str1='China',如果想把“China”這5個(gè)字符放到數(shù)組str1中,除了逐個(gè)輸入外,還能使用strcpy函數(shù),該函數(shù)的功能是將一個(gè)字符串復(fù)制到一字符數(shù)組中。例如,strcpy(str1,'China');或strcpy(str1,str2);注意,不能企圖用以下語句來實(shí)行賦值(將str2的值傳給str1):str1=str2;不能用賦值語句將一個(gè)字符串常量或字符數(shù)組直接給一個(gè)字符數(shù)組。
strcpy函數(shù)的結(jié)構(gòu)是:strcpy(字符數(shù)組1,字符串2)
其中,需要注意的是,字符數(shù)組1的長度不應(yīng)小于字符串2的長度,“字符數(shù)組1”必須寫成數(shù)組名形式,如(str1),“字符串2”可以是字符數(shù)組名,也可以是字符串常量,不能用賦值語句將一個(gè)字符串常量或字符數(shù)組直接給一個(gè)字符數(shù)組。
71.D整型的數(shù)據(jù)占4個(gè)字節(jié),即-2147483648~2147483648,32768在其表達(dá)的范圍之內(nèi),所以原樣輸出。
72.D
73.D
74.C解析:C語言規(guī)定如果全局變量與局部變量同名,則在局部變量的作用域內(nèi)全局變量不起作用。程序開頭定義的變量x為全局變量,函數(shù)incre中定義的變量x是局部靜態(tài)變量,存放在靜態(tài)存儲(chǔ)區(qū),incre調(diào)用結(jié)束后不釋放x占據(jù)的存儲(chǔ)單元。main函數(shù)中使用的x是全局變量x=3,所以main函數(shù)中調(diào)用函數(shù)incre兩次。調(diào)用過程如下。第1次調(diào)用:x=x*(x+1)=1×(1+1)=2,printf函數(shù)輸出2;第2次調(diào)用:x=x*(x+1)=2×(2+1)=6,printf函數(shù)輸出6。
75.A
76.C當(dāng)有序線性表為順序存儲(chǔ)時(shí)才能用二分法查找??梢宰C明的是,對(duì)于長度為n的有序線性表,在最壞情況下,二分法查找只需要比較log2n次,而順序查找需要比較n次,因此本題答案為C)。
77.D當(dāng)b為10時(shí),執(zhí)行b-=a,此時(shí)b為9,接著b--表達(dá)式值為9,b的值為8,大于0,while不成立,退出循環(huán),故選擇D選項(xiàng)。
78.Bj=&i,j的值就是i的地址,*j=100,再將j的地址賦給k,這時(shí)*k=j,那么,**k=*j,而*j=100,所以**k=100,最后的打印結(jié)果應(yīng)當(dāng)為100。
79.A本題主要考查軟件測試的基本知識(shí)。軟件測試的步驟可分為單元測試(模塊測試)、集成測試、確認(rèn)測試和系統(tǒng)測試。
(1)單元測試是針對(duì)每個(gè)模塊進(jìn)行的測試,它可從程序的內(nèi)部結(jié)構(gòu)出發(fā)設(shè)計(jì)測試用例,多個(gè)模塊可以平行、對(duì)立地測試。單元測試主要用于發(fā)現(xiàn)詳細(xì)設(shè)計(jì)和編程時(shí)犯下的錯(cuò)誤。單元測試多采用白盒測試,輔之以黑盒測試。
(2)集成測試是在單元測試的基礎(chǔ)上,根據(jù)模塊結(jié)構(gòu)圖將各個(gè)模塊連接起來,必須精心計(jì)劃,應(yīng)提交集成測試計(jì)劃、集成測試規(guī)格說明和集成測試分析報(bào)告。主要目標(biāo)是發(fā)現(xiàn)與接口有關(guān)的問題。集成測試可以發(fā)現(xiàn)概要設(shè)計(jì)時(shí)犯的錯(cuò)誤。
(3)確認(rèn)測試用于驗(yàn)證軟件的功能和性能及其他特性是否與用戶的要求一致。確認(rèn)測試主要用于發(fā)現(xiàn)需求分析時(shí)犯下的錯(cuò)誤,一般使用黑盒法測試,以表明軟件符合需求說明書的要求,應(yīng)該仔細(xì)設(shè)計(jì)測試用例和測試過程。確認(rèn)測試必須有用戶參加,或以用戶為主,用戶應(yīng)參與設(shè)計(jì)測試用例,通常情況下,主要使用生產(chǎn)中的實(shí)際數(shù)據(jù)進(jìn)行測試,測試數(shù)據(jù)通過用戶接口輸入。
(4)系統(tǒng)測試是將已經(jīng)通過確認(rèn)測試的軟件,作為整個(gè)計(jì)算機(jī)系統(tǒng)的元素與計(jì)算機(jī)硬件、外設(shè)和網(wǎng)絡(luò)等其他因素結(jié)合在一起,進(jìn)行一系列的組裝測試和確認(rèn)測試。系統(tǒng)測試的目的是通過與系統(tǒng)的需求定義做比較,發(fā)現(xiàn)軟件與系統(tǒng)的定義不符合的地方。系統(tǒng)測試可以發(fā)現(xiàn)問題定義時(shí)犯下的錯(cuò)誤。
80.C
\n由題目的語句P=&a[1]可知,P指向a數(shù)組中下標(biāo)為1的元素“4”,又因?yàn)镻為指針變量,所以P[x]與*(p+x)等價(jià),因而在for循環(huán)語句中,第一次循環(huán)P[1]指向a數(shù)組中下標(biāo)為2的元素“6”,第二次循環(huán)p[2]指向a數(shù)組中下標(biāo)為3的元素“8”,所以y=6+8=14,因而選項(xiàng)C為正確答案。
\n
81.(1)錯(cuò)誤:if(strcmp((pstr+i),(pstr+j))>o)
正確:if(strcmp(*(pstr+i),*(pstr+j))>0)
(2)錯(cuò)誤:*(pstr+j)=*P
正確:*(pstr+j)=p
【解析】變量pstr表示的是字符串?dāng)?shù)組的首地址,pstr+i表示的是字符串首地址偏移量為i處的地址。程序中要比較的是字符,因此,“if(strcmp((pstr+i),(pstr+j))>0)”應(yīng)改為“if(strcmp(*(pstr+i),*(pstr+j))>0)”;根據(jù)程序可知,要交換的是字符串的首地址而不是字符串的內(nèi)容,因此,“*(pstr+j)=*p”應(yīng)改為“*(pstr+j)=P”。
82.voidfun(STREC*a)
\n{
\ninti;
\na->ave=0.0;
\nfor(i=0;i<N;i++)
\na->ave=a->ave+a->s[i];
\n/*求各門課程成績的總和*/
\na->ave=a->ave/N;/*求平均分*/
\n}
\n【解析】本題考查的是指向結(jié)構(gòu)體類型的指針變量做參數(shù)和結(jié)構(gòu)體類型成員的運(yùn)算。fun函數(shù)中求出平均成績,要帶回主函數(shù)則必須定義一個(gè)指針類型的形參STREC*a,同時(shí)引用成員使用指向運(yùn)算符,a->ave和a->s[i]。
\n2021年甘肅省定西市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________
一、單選題(20題)1.對(duì)于關(guān)鍵字值序列(12,13,11,18,60,15,7,18,25,100)
A.100B.12C.60D.15
2.下列選項(xiàng)中,能夠滿足“只要字符串s1等于字符串S2,則執(zhí)行ST”要求的是()。
A.if(s1-s2==0)ST;
B.if(s1==s2)ST;
C.if(strcpy(s1,s2)==1)ST;
D.if(strcmp(s2,s1)==0)ST;
3.已知二叉樹后序遍歷序列是CDABE,中序遍歷序列是CADEB,它的前序遍歷序列是()
A.ABCDEB.ECABDC.EACDBD.CDEAB
4.設(shè)有以下程序段:structMP3{charname[20];charcolor;floatprice;}std,*ptr;ptr=&std:若要引用結(jié)構(gòu)體變量std中的color成員,寫法錯(cuò)誤的是()。A.std.colorB.ptr->colorC.std->colorD.(*ptr)color
5.數(shù)據(jù)流圖(DFD)的作用是()。
A.描述軟件系統(tǒng)的控制流B.支持軟件系統(tǒng)的功能建模C.支持軟件系統(tǒng)的面向?qū)ο蠓治鯠.描述軟件系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)
6.以下選項(xiàng)中表示一個(gè)合法的常量是(說明:符號(hào)口表示空格)()。
A.9口9口9B.0XabC.123E0.2D.2.7e
7.計(jì)算機(jī)硬件組成中,CPU包含______。
A.控制器和存儲(chǔ)器B.控制器和運(yùn)算器C.控制器、運(yùn)算器和存儲(chǔ)器D.內(nèi)存儲(chǔ)器和外存儲(chǔ)器
8.下列排序算法中,其時(shí)間復(fù)雜度和記錄的初始排列無關(guān)的是()
A.插入排序B.堆排序C.快速排序D.冒泡排序
9.有以下程序:#include<stdio.h>main(){charch=‘D’;while(ch>‘A’){ch--;putchar(ch);if(ch==‘A’)break;putchar(ch+1);}}程序運(yùn)行后的輸出結(jié)果是()。
A.CBB.BCAC.CCBBD.CDBCA
10.if語句的基本形式是“if(表達(dá)式)語句”,以下關(guān)于“表達(dá)式”值的敘述中正確的是()。
A.必須是邏輯值B.必須是整數(shù)值C.必須是正數(shù)D.可以是任意合法的數(shù)值
11.對(duì)于下述說明,不能使變量p->b的值增1的表達(dá)式是______。structexm{inta;intb;floatc}*p;
A.++p->bB.++(p++)->bC.p->b++D.(++p)->b++
12.當(dāng)n=5時(shí),函數(shù)輸出為()A.5B.11C.29D.10
13.有如下程序main(){inty=3,x=3,z=1;printf("%d%d\n",(++x,y++),z+2);}運(yùn)行該程序的輸出結(jié)果是______。
A.34B.42C.43D.33
14.如有inta=11;則表達(dá)式(a/1)的值是()。
A.0B.3C.4D.11
15.
16.鏈表不具有的特點(diǎn)是()。A.A.不必事先估計(jì)存儲(chǔ)空間
B.可隨機(jī)訪問任意元素
C.插入、刪除不需要移動(dòng)元素
D.所需空間與線性表長度成正比
17.設(shè)有6個(gè)結(jié)點(diǎn)的無向圖,該圖至少應(yīng)有()條邊才能確保是一個(gè)連通圖。
A.7B.5C.8D.6
18.有以下程序
#include<stdio.h>
voidfun(intP)
{intd=2;
P=d++;printf(“%d”,P);}
main()
{inta=1;
fun(A);prinff(“%.d\n”,A);}
程序運(yùn)行后的輸出結(jié)果是A.32B.12C.21D.22
19.
20.有以下程序:#include<stdio.h>voidf1(char*a,charb){charc;c=*a;*a=b;b=c;}voidf2(chara,charb){charc;c=a;a=b;b=c;}voidf3(char*a,char*b){charc;c=*a;*a=*b;*b=c;}main(){chart1,t2;t1=‘A’;t2=‘B’;f3(&t1,&t2);putchar(t1);putchar(t2);t1=‘A’;t2=‘B’;f2(t1,t2);putchar(t1);putchar(t2);t1=‘A’;t2=‘B’;f1(&t1,t2);putchar(t1);putchar(t2);printf(“\n”);}程序運(yùn)行后的輸出結(jié)果是()。
A.ABBABBB.BAABBBC.BABABAD.BABAAB
二、2.填空題(20題)21.下列程序的輸出結(jié)果是______。
main()
{inti=0,a=0;
while(i<20)
{for(;;)
{if((i%10)==0)break;
elsei--;}
i+=11;
a+=i;
}
printf("%d\n",A);
}
22.數(shù)據(jù)庫系統(tǒng)的主要特點(diǎn)為數(shù)據(jù)集成性、數(shù)據(jù)的高_(dá)_____和低冗余性、數(shù)據(jù)獨(dú)立性和數(shù)據(jù)統(tǒng)一管理和控制。
23.以下程序運(yùn)行后的輸出結(jié)果是【】。
main()
{intx=10,y=20,t=0;
if(x==y)t=x;x=Y;Y=t;
printf(“%d,%d\n”,x,y);
}
24.設(shè)有下列宏定義:
#defineA2
#defineB(A+3)
則執(zhí)行賦值語句"k=B*20;"(k為int型變量)后,k的值是______。
25.耦合和內(nèi)聚是評(píng)價(jià)模塊獨(dú)立性的兩個(gè)主要標(biāo)準(zhǔn),其中______反映了模塊內(nèi)各成分之間的聯(lián)系。
26.隊(duì)列是限定在表的一端進(jìn)行插入和在另一端進(jìn)行刪除操作的線性表。允許插入的一端稱作______。
27.下列程序段中循環(huán)體的執(zhí)行次數(shù)是______。
a=15;
b=0;
do{b+=2;a-=2+b;}while(a>=0);
28.在面向?qū)ο蠓椒ㄖ?,【】描述的是具有相似屬性與操作的一組對(duì)象。
29.軟件生命周期可分為多個(gè)階段,一般分為定義階段、開發(fā)階段和維護(hù)階段。編碼和測試屬于【】階段。
30.用復(fù)合的賦值運(yùn)算符將變量x中的值增大2的賦值表達(dá)式是【】。
31.已有定義:double*p;,請(qǐng)寫出完整的語句,利用malloc函數(shù)使p指向一個(gè)雙精度型的動(dòng)態(tài)存儲(chǔ)單元______。
32.有以下程序:
voidf(inty,int*x)
{y=y+*x;*x=*x+y;}
main()
{intx=2,y=4;
f(y,&x);
printf("%d%d\n",x,y);
}
執(zhí)行后輸出結(jié)果是上【】。
33.設(shè)有下列的程序段;
charstr[]="Hello";
char*ptr;
ptr=str;
執(zhí)行上面的程序段后,*(ptr+5)的值為______。
34.閱讀下面程序,則執(zhí)行后的輸出結(jié)果是【】。
#include"stdio.h"
main()
{intx,y,z;
x=1;y=2;z=3;
if(x>y)if(x>z)printf("%d",x);
elseprintf("%d",y);
printf("%d\n",z);}
35.有以下程序
voidf(inty,int*x)
{y=y+*x;*X=*X+y;}
main()
{intx=2,y=4;
f(y,&x);
printf("%d%d\n",x,y);
}
執(zhí)行后輸出結(jié)果是______。
36.以下程序?qū)蓚€(gè)數(shù)從小到大輸出。請(qǐng)?zhí)羁铡?/p>
{floata,b,【】;
scanf(,【】&a,&b);
if(a>b)
{t=a;
【】;
b=t;
printf("%5.2f%5.2f\n",a,b);
}
37.設(shè)一棵完全二叉樹共有700個(gè)結(jié)點(diǎn),則在該二叉樹中有【】個(gè)葉子結(jié)點(diǎn)。
38.對(duì)于長度為n的順序存儲(chǔ)的線性表,當(dāng)隨機(jī)插入和刪除—個(gè)元素時(shí),需平均移動(dòng)元素的個(gè)數(shù)為【】。
39.以下程序的輸出結(jié)果是______。
voidfun()
{staticinta=0;
a+=2;printf("%d",a);
}
main()
{intcc;
for(cc=1;cc<4;cc++)fun();
printf("\n");
}
40.設(shè)函數(shù)findbig已定義為求3個(gè)數(shù)中的最大值。以下程序?qū)⒗煤瘮?shù)指針調(diào)用findbig函數(shù)。請(qǐng)?zhí)羁铡?/p>
main()
{intfindbig(int,int,int);
int(*f)(),x,y,z,big;
f=【】;
seanf("%d%d%d",&x,&y,&z);
big=(*f)(x,y,2);
printf("big=%d\n",big);
}
三、1.選擇題(20題)41.下列程序的執(zhí)行結(jié)果是______。in(f(char*s){char*p=s;while(*p!='\0')p++;return(p-s);}main(){printf("%d\n",f("goodbye!"));}
A.3B.6C.8D.0
42.以下程序的輸出結(jié)果是______。structHAR{intx,y;structHAR*p;};main(){h[0].x=1;h[0].y=2;h[1].x=3;h[1].y=4;h[0].p=&h[1].p=h;printf("%d%d\n",(h[0].p->y));}
A.12B.23C.14D.32
43.請(qǐng)讀程序:#include<stdio.h>voidfun(int*s){staticintj=0;dos[j]+=s[j+1]while(++j<2);}main(){intk,a[10]={l,2,3,4,5};for(k=l;k<3;k++)fun(a);for(k=0;k<5;k++)prinf("%d",a[k]);}上面程序的輸出結(jié)果是()
A.34756B.23445C.35745D.12345
44.設(shè)有下列二叉樹:
對(duì)此二叉樹后序遍歷的結(jié)果為
A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA
45.運(yùn)行以下程序后,如果從鍵盤上輸入6514<回車>,則輸出結(jié)果為______。main(){intm,n;printf("Enterm,n:");scanf("%d%d",&m,&n);while(m!=n){while(m>n)m-=n;while(n>m)n-=m;}printf("m=%d\n",m);}
A.m=3B.m=2C.m=1D.m=0
46.在下列幾種排序方法中,要求內(nèi)存量最大的是______。
A.插入排序B.選擇排序C.快速排序D.歸并排序
47.能正確表示邏輯關(guān)系“a>=10或a<=0”的C語言表達(dá)式是()。
A.a>=10ora=10
B.a>=0|a<=10
C.a>=10&&a<=0
D.a>=10||a<=0
48.下面程序的輸出是______。main(){inta=6,b=3;printf("%d\n",b=(a/b,a%b));}
A.0B.1C.2D.不確定的值
49.請(qǐng)選出可用作C語言用戶標(biāo)識(shí)符的是
A.void,define,WORD
B.a3_b3,_123,IF
C.FOR,--abc,Case
D.2a,Do,Sizeof
50.以下敘述正確的是()。
A.continue語句的作用是結(jié)束整個(gè)循環(huán)的執(zhí)行
B.只能在循環(huán)體內(nèi)和switch語句體內(nèi)使用break語句
C.在循環(huán)體內(nèi)使用break語句或continue語句的作用相同
D.從多層循環(huán)嵌套中退出時(shí),只能使用goto語句
51.有下列程序:main(){inti,j;for(i=1;i<4;i++){for(j=i;j<4;j++)printf("%d*%d=%d",i,j,i*j);printf("\n");}}程序運(yùn)行后的輸出結(jié)果是()。
A.1*1=11*2=21*3=32*1=22*2=43*1=3
B.1*1=11*2=21*3=32*2=42*3=63*3=9
C.1*1=11*2=22*2=41*3=32*3=63*3=9
D.1*1=12*1=22*2=43*1=33*2=63*3=9
52.以下程序的輸出結(jié)果是______。#include<stdio>main(){inta=200;#definea100printf("%d",a);#undefaprintf("%d",a);}
A.200100B.100100C.100200D.200200
53.若有定義:inta=4,b=5;floatx=3.4,y=2.1;,則下列表達(dá)式的值為()。(float)(a+B)/2+(int)x%(int)y
A.5.5B.55C.5.5D.55
54.運(yùn)行下面的程序,其輸出結(jié)果為______。main(){pintf("%d,%d",5%-3,-5%3);}
A.2,-2B.-2,2C.-2,-2D.2,2
55.為了避免嵌套的if-else的二義性,C語言鋇定:else與______配對(duì)。
A.縮排位置相同的ifB.其之前最近的ifC.其之后最近的ifD.同一行上的if
56.以下正確的數(shù)組定義語句是()。
A.inty[1][4]={1,2,3,4,5,};
B.floatx[3][]={{l},{2},{3}};
C.longs[2][3]={{1},{1,2}{1,2,3,}};
D.doublet[][3]={0}
57.已知inta=1,b=3則a^b的值為
A.3B.1C.2D.4
58.下述關(guān)于數(shù)據(jù)庫系統(tǒng)的敘述中正確的是______。
A.數(shù)據(jù)庫系統(tǒng)減少了數(shù)據(jù)冗余
B.數(shù)據(jù)庫系統(tǒng)避免了一切冗余
C.數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的一致性是指數(shù)據(jù)類型的一致
D.數(shù)據(jù)庫系統(tǒng)比文件系統(tǒng)能管理更多的數(shù)據(jù)
59.若有以下說明和定義uniondt{inta;charb;doublec;}data;以下敘述中錯(cuò)誤的是______。A.data的每個(gè)成員起始地址都相同
B.變量data所占的內(nèi)存字節(jié)數(shù)與成員c所占字節(jié)數(shù)相等
C.程序段data.a=5;printf("%f\n",data.c);輸出結(jié)果為5.000000
D.data可以作為函數(shù)的實(shí)參
60.下列程序的輸出結(jié)果,是______。main(){inta=0,b=0,c=0;if(++a>0||++b>0)++c;printf("\na=%d,b=%d,c=%d",a,b,c);}
A.a=0,b=0,c=0B.a=1,b=1,c=1C.a=1,b=0,c=1D.a=0,b=1,c=1
四、選擇題(20題)61.有以下程序:
當(dāng)運(yùn)行時(shí)輸入:a<回車>后,以下敘述正確的是()。
A.變量c1被賦予字符a,c2被賦予回車符
B.程序?qū)⒌却脩糨斎氲?個(gè)字符
C.變量c1被賦予字符a,c2中仍是原有字符2
D.變量c1被賦予字符a,c2中將無確定值
62.若有定義語句:inta=3,b=2,c=1;以下選項(xiàng)中錯(cuò)誤的賦值表達(dá)式是()。
A.a=(b=4)=3;B.a=b=c+1;C.a=(b=4)+c;D.a=1+(b=c=4);
63.
64.
65.以下描述中正確的是()。
A.由于do-while循環(huán)中循環(huán)體語句只能是一條可執(zhí)行語句,所以循環(huán)體內(nèi)不能使用復(fù)合語句
B.do-while循環(huán)由do開始,用while結(jié)束,在while(表達(dá)式.后面不能寫分號(hào)
C.在do-while循環(huán)體中,是先執(zhí)行一次循環(huán),再進(jìn)行判斷
D.do-while循環(huán)中,根據(jù)情況可以省略while
66.下列數(shù)據(jù)結(jié)構(gòu)中,屬于非線性結(jié)構(gòu)的是A.循環(huán)隊(duì)列B.帶鏈隊(duì)列C.二叉樹D.帶鏈棧
67.有以下程序:
當(dāng)執(zhí)行程序時(shí),按下列方式輸人數(shù)據(jù)(從第l列開始,<CR>代表回車,注意,回車也是—個(gè)字符)l<CR>
234<CR>
則輸出結(jié)果是()。
A.34
B.134
C.123
D.1234
68.
69.若有定義“inta=5,b=7;”,則表達(dá)式a%=(b%2)運(yùn)算后,a的值為()。
A.0B.1C.11D.3
70.第
11
題
若有定義:char*st="howareyou";下列程序段中正確的是
A.chara[11],*p;strcpy(p=a+1,&st[4]);
B.chara[11];strcpy(++a,st);
C.chara[11];strcpy(a,st);
D.chara[],*p;strcpy(p=&a[1],st+2);
71.已知longi=32768;執(zhí)行語句printf(“%d”,i);屏幕顯示()。
A.-1B.-32768C.1D.32768
72.
73.
74.以下程序的輸出結(jié)果是______。intx=3;main(){inti;for(i=1;i<x;i++)incre();}incre(){staticintx=1;x*=x+1;printf("%d",x);}
A.33B.22C.26D.25
75.
76.在長度為n的有序線性表中進(jìn)行二分法查找,最壞情況下需要比較的次數(shù)是()。A.O(n)B.0(n2)C.O(log2n)D.O(nlog2n)
77.假設(shè)a和b為int型變量,則執(zhí)行以下語句后b的值為()。a=1;b=10;do{b-=a;a++;}while(b--<0);A.9B.-2C.-lD.8
78.設(shè)有如下程序
#include<stdio.h>
main()
{
int**k,*j,i=100;
j=&i;k=&j;
printf("%d\n",**k);
}
上述程序的輸出結(jié)果是
A.運(yùn)行錯(cuò)誤B.100
C.i的地址D.j的地址
79.檢查軟件產(chǎn)品是否符合需求定義的過程稱為()。
A.確認(rèn)測試B.集成測試C.驗(yàn)證測試D.驗(yàn)收測試
80.
有以下程序:
main
{inta[]=(2,4,6,8,10},y=0,x,*P;
p=&a[1];
for(x=1;x<3;x++)y+=p[x];
printf("%d\n,y");
}
程序運(yùn)行后的輸出結(jié)果是()。
A.10B.11C.14D.15
五、程序改錯(cuò)題(1題)81.下列給定程序中,函數(shù)proc()的功能是:用冒泡法對(duì)6個(gè)字符串按由小到大的順序進(jìn)行排序。請(qǐng)修改程序中的錯(cuò)誤,使它能得到正確結(jié)果。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、程序設(shè)計(jì)題(1題)82.某學(xué)生的記錄由學(xué)號(hào)、8門課程成績和平均分組成,學(xué)號(hào)和8門課程的成績已在主函數(shù)中給出,請(qǐng)編寫函數(shù),其功能是:求出該學(xué)生的平均分,并放入記錄的ave成員中。
例如,學(xué)生的成績是:85.5,76,69.5,85,91,72,64.5,87.5,則他的平均分應(yīng)為78.875。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun部位中填入你編寫的若干語句。
試題程序:
#include<stdio.h>
#defineN8
typedefstruct
{
charnum[10];
doubles[N];
doubleave;
}STREC;
voldfun(STREC*a)
{
}
voidmain
STRECs={"GA005",85.5,76,69.5,85,91,72,64.5,87.5};
inti;
fun(&s);
printf("The%ssstudentdata:\n",s.num);
for(i=0;i<N;i++)
printf("%4.1fkn",s.s[i]);
printf("\nknave=%7.3fkn",s.aVe);
printf("\n");
}
參考答案
1.C
2.D在C語言中,對(duì)兩個(gè)字符串進(jìn)行比較,使用字符串比較函數(shù)strcmp。如果這個(gè)函數(shù)的返回值等于0,說明兩個(gè)字符串相等。故本題答案為D選項(xiàng)。
3.C由于后序遍歷的最后一個(gè)兒素為E,所以E為根結(jié)點(diǎn),所以它的前序遍歷的首個(gè)元素為E,敞排除A)和D)選項(xiàng)。由于中序遍歷中,元素B在元素根結(jié)點(diǎn)E自:J后面,所以B為二叉樹的右子樹,并且該二叉樹右子樹只有一個(gè)兒素,所以前序遍歷的最后一個(gè)元素應(yīng)為B,故選項(xiàng)C)為正確選項(xiàng),即該二叉塒的前序遍歷序列是EACDB。
4.C【答案】C
【知識(shí)點(diǎn)】結(jié)構(gòu)體成員變量的引用
【解析】結(jié)構(gòu)體變量包括一個(gè)或多個(gè)成員變量,引用其成員變量的語法格式如下:
結(jié)構(gòu)體變量.成員變量。通過結(jié)構(gòu)體指針變量獲得其結(jié)構(gòu)體變量的成員變量的一般形式為:(*結(jié)構(gòu)體指針變量).成員變量,也可以使用:結(jié)構(gòu)體指針變量->成員變量來引用成員變量。
5.B數(shù)據(jù)流圖是系統(tǒng)邏輯模型的圖形表示
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 創(chuàng)造性學(xué)習(xí)環(huán)境下的學(xué)生成長與發(fā)展
- 交通行業(yè)中的安全文化推廣
- 不同文化背景下的服務(wù)溝通策略解析
- 從太陽到家溫暖你的每一天-家用太陽能供暖系統(tǒng)介紹
- 體育與教育融合的未來趨勢分析
- 辦公區(qū)域?qū)嶒?yàn)室內(nèi)務(wù)管理與規(guī)范
- 電子產(chǎn)品質(zhì)檢工藝流程
- 從手工到智能工業(yè)4.0時(shí)代辦公生產(chǎn)管理轉(zhuǎn)變
- 辦公室中的學(xué)生自助餐廳管理與服務(wù)提升
- 兒童數(shù)學(xué)邏輯能力培養(yǎng)路徑研究
- 課堂教學(xué)問卷調(diào)查(學(xué)生).
- 挖掘機(jī)液壓系統(tǒng)講解課件
- 課程設(shè)計(jì)--高位自卸汽車的設(shè)計(jì)
- 管道安裝工程清單價(jià)格
- 四川省普教科研資助金課題檢測報(bào)告
- 古傳五禽戲內(nèi)功法詳解(圖)
- 粵西茂名許氏源流考
- 關(guān)于房屋裝飾裝修價(jià)值評(píng)估的探討
- 六十仙命配二十四山吉兇選擇一覽表
- 小型辦公系統(tǒng)(數(shù)據(jù)庫課程設(shè)計(jì))word格式
- 模擬通信系統(tǒng)(PM調(diào)制)Matlab仿真平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)
評(píng)論
0/150
提交評(píng)論