




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2022-2023年內(nèi)蒙古自治區(qū)巴彥淖爾市全國計算機(jī)等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.下面算法的時間復(fù)雜度為()A.O(1)B.O(n)C.O(n*n)D.O(n!)
2.設(shè)R是一個2元關(guān)系,有3個元組,S是一個3元關(guān)系,有3個元組。如T=R×S,則T的元組的個數(shù)為()。A.6B.8C.9D.12
3.下列不可用于C語言用戶標(biāo)識符的是A.A.j2_KEY
B.char
C._g_
D.Double
4.
5.算法的時間復(fù)雜度是指______。
A.執(zhí)行算法程序所需要的時間B.算法程序的長度C.算法執(zhí)行過程中所需要的基本運(yùn)算次數(shù)D.算法程序中的指令條數(shù)
6.若有定義語句:“intx=12,y=8,z;”,在其后執(zhí)行語句“z=0.9+x/y;”,則z的值為()。A.1.9B.1C.2D.2.4
7.設(shè)x=011050,則x=x&01252的值是()。A.0000001000101000
B.1111110100011001
C.0000001011100010
D.1100000000101000
8.字符串”a+b=12\n”的長度為()。
A.6B.7C.8D.9
9.程序流程圖中帶有箭頭的線段表示的是()。
A.圖元關(guān)系B.數(shù)據(jù)流C.控制流D.調(diào)用關(guān)系
10.若fp是指向某文件的指針,且尚未讀到文件末尾,則函數(shù)feof(fp)的返回值是()。
A.EOFB.-1C.非零值D.0
11.有以下程序:#include<stdio.h>main(){inta=2,b=2,C=2;print{("%d\n",a/b&c);}程序運(yùn)行后的輸出結(jié)果是()。A.0B.1C.2D.3
12.X、Y、Z被定義為int型變量,若從鍵盤給X、Y、Z輸入數(shù)據(jù),正確的輸入語句是______。
A.INPUTX,Y,Z;
B.scanf("%d%d%d",&X,&Y,&Z);
C.scanf("%d%d%d",X,Y,Z);
D.read("%d%d%d",&X,&Y,&Z);
13.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。
A.hAppychristmAs
B.happychristmas
C.HAppyCHrIstmAs
D.HAPPYCHRISTMAS
14.有以下程序:#include<stdio.h>voidswap(int*a,int*b){intt,*tp;t=*a;*a=*b;*b=t;tp=a;a=b;b=tp;printf(“%d,%d,”,*a,*b);}main(){inti=3,j=7,*p=&i,*q=&j;swap(p,q);printf(“%d,%d,%d,%d”,i,j,*p,*q);}程序運(yùn)行后的輸出結(jié)果是()。
A.3,7,3,7,3,7B.7,3,7,3,7,3C.3,7,3,7,7,3D.3,7,7,3,7,3
15.下面敘述中錯誤的是()。
A.軟件測試的目的是發(fā)現(xiàn)錯誤并改正錯誤
B.對被調(diào)試的程序進(jìn)行“錯誤定位”是程序調(diào)試的必要步驟
C.程序調(diào)試通常也稱為Debug
D.軟件測試應(yīng)嚴(yán)格執(zhí)行測試計劃,排除測試的隨意性
16.若某二叉樹的前序遍歷訪問順序是abdgcefh,中序遍歷訪問順序是dgbaechf,則其后序遍歷的結(jié)點(diǎn)訪問順序是()。
A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca
17.若變量c為char類型,能正確判斷出c為小寫字母的表達(dá)式是A.A.′a′<=c<=′z′c="">=′a′)||(c<=′z′)
B.(′a′>=c)and(′z′>=c)
C.(′a′<=c)and(′z′>=c)
D.(c>=′a′)&&(c<=′z′)
18.數(shù)據(jù)流圖用于抽象地描述一個軟件的邏輯模型,數(shù)據(jù)流圖由一些特定的圖符構(gòu)成。下列圖符名標(biāo)識的圖符不屬于數(shù)據(jù)流圖合法圖符的是()。
A.控制流B.加工C.數(shù)據(jù)存儲D.源和潭
19.
20.有以下程序:#include<stdio.h>intfun(){staticintx=1;X*=2:returnx;}main(){inti,S=1;for(i=1;i<=3;i++)S*=fun();printf("%d\n",s);}程序運(yùn)行后的輸出結(jié)果是()。A.0B.10C.30D.64
二、2.填空題(20題)21.以上程序運(yùn)行后的輸出結(jié)果是【】。
main()
{inti=10,j=0;
do
{j=j+i;i-;}
while(i>2);
printf("%d\n",j);
}
22.按照邏輯結(jié)構(gòu)分類,結(jié)構(gòu)可以分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),棧屬于______。
23.設(shè)x和y均為int型變量,且x=1,y=2,則表達(dá)式2.0+y/x的值為【】。
24.下列語句能循環(huán)______次。
ints=12;
while(s);
--s;
25.下面程序的輸出結(jié)果是【】。
#include<stdio.h>
main()
{staiccharb[]="Goodbye";
char*chp=&b[7];
while(--chp>=&b[0])putchar(*chp);
printf("\n");
}
26.以下程序的功能是計算:s=1+12+123+1234+12345。請?zhí)羁铡?/p>
main()
{intt=0,s=0,i;
for(i=1;i<=5;i++)
{t=i+______;s=s+t;}
printf("s=%d\n",s);
}
27.語句"int(*ptr)();"的含義是______是指向函數(shù)的指針,該函數(shù)返回一個int型數(shù)據(jù)。
28.下列程序的運(yùn)行結(jié)果是______。
#include<string.h>
char*ss(char*s)
{returns+strlen(s)/2;}
main()
{char*p,*str="abcdefgh";
p=ss(str);printf('%s\n",p);
}
29.下列程序的輸出結(jié)果是______。
#include<stdio.h>
fun()
{staticinta=0;
a+=3;printf("%d",A);
}
main()
{intcc;
for(cc=1;cc<5;cc++)fun();
printf("\n");
}
30.軟件是程序、數(shù)據(jù)和【】的集合。
31.以下程序的輸出結(jié)果是【】。
main()
{char*p=“abodefgh”,*r;
long*q;
q=(long*)p;
q++;
r=(char*)q;
printf(“%s\n”,r);
}
32.算法的復(fù)雜度主要包括時間復(fù)雜度和______復(fù)雜度。
33.有以下程序:
floatf1(floatn)
{returnn*n;}
floatf2(floatn)
{return2*n;}
main()
{float(*p1)(float),(*p2)(float),(*t)(float),y1,y2;
p1=f1;p2=f2;
y1=p2(p1(2.0));
t=P1;p1=p2;p2=t;
y2=p2(p1(2.0));
printf("%3.0f,%3.0f\n",y1,y2);
}
程序運(yùn)行后的輸出結(jié)果是【】。
34.若有如下程序:
main()
{inta[][2]={1,2,6,9,11},(*t)[2];
t=a;
printf("%d,%d\n",*(t[1]+1),(*t)[1]);
}
則程序運(yùn)行后輸出的結(jié)果是【】。
35.有以下程序:
main()
{charstr[]="xyz",*ps=str;
while(*ps)ps++;
for(ps--;ps-str>=0;ps--)puts(ps);
}
執(zhí)行后的輸出結(jié)果是【】。
36.某二義樹中度為2的結(jié)點(diǎn)有18個,則該二叉樹中有______個葉子結(jié)點(diǎn)。
37.以下程序的輸出結(jié)果是【】。
main()
{chars[]="ABCD",*p;
for(p=s+1;p<s+4;p++)printf("%s\n",p);}
38.在進(jìn)行模塊測試時,要為每個被測試的模塊另外設(shè)計兩類模塊:驅(qū)動模塊和承接模塊(樁模塊),其中【】的作用是將測試數(shù)據(jù)傳送給被測試的模塊,并顯示被測試模塊所產(chǎn)生的結(jié)果。
39.以下程序運(yùn)行后的輸出結(jié)果是【】。
main()
{charm;
m='B'+32;printf("%c\n",m);
40.以下程序運(yùn)行后的輸出結(jié)果是【】。
structNODE
{intk;
structNODE*link;
};
main()
{structNODEm[5],*p=m,*q=m+4;
inti=0;
while(p!=q){
p->k=++i;p++;
q->k=i++;q--;
}
q->k=i;
for(i=0;i<5;i++)printf("%d",m[i].k);
printf("\n");
}
三、1.選擇題(20題)41.有如下的程序:intf(char*s){char*p=s;while(*p!='\0')p++;return(p-s);}如果在主程序中用下述語句調(diào)用上述函數(shù),則輸出結(jié)果為______。printf("%d\n",f("bestone!"));
A.3B.6C.8D.9
42.設(shè)有inta=15,b=240;,則表達(dá)式(a&b)&b||b的值為______。
A.0B.1C.真D.假
43.有下列程序:#include<stdio.h>main(){inta=6,b=7,m=1;switch(a%2){case0:m++;break;case1:m++;switch(b%2){defaut:m++;case0:m++;break;}}printf("%d\n",m);}程序運(yùn)行后的輸出結(jié)果是()。
A.1B.2C.3D.4
44.fgets(str,n,fp)函數(shù)從文件中讀入一個字符串,以下錯誤的敘述是()。
A.字符串讀入后會自動加入'\0'
B.fp是指向該文件的文件型指針
C.fgets函數(shù)將從文件中最多讀入n個字符
D.fgets函數(shù)將從文件中最多讀入n-1個字符
45.在下面關(guān)于指針的說法中,錯誤的一條是()
A.變量的指針就是變量的地址
B.可以將一個整型量或任何其他非地址類型的數(shù)據(jù)賦給一個指針變量
C.一個指針變量只能指向同一個類型的變量
D.指針變量中只能存放地址(指針)
46.數(shù)據(jù)存儲和數(shù)據(jù)流都是______,僅僅是所處的狀態(tài)不同。
A.分析結(jié)果B.事件C.動作D.數(shù)據(jù)
47.下面的關(guān)鍵字中,不能夠從循環(huán)體中跳到循環(huán)體外的是______。
A.gotoB.breakC.returnD.continue
48.不能把字符串"HELLO!"賦紿數(shù)組b的語句是______。
A.charb[10]={'H,''E','L','L','O','!'};
B.charb[10]={'h','e'.,l','l','o''!'};
C.charb[10];strcpy(b,"Hello!");
D.charb[10]="Hello!";
49.與進(jìn)制數(shù)101.01011等值的十六進(jìn)制數(shù)是()
A.A.BB.5.51C.A.51D.5.58
50.已知函數(shù)的調(diào)用形式為fread(buf,size,count,fp),參數(shù)buf的含義是
A.一個整型變量,代表要讀入的數(shù)據(jù)項(xiàng)總數(shù)
B.一個文件指針,指向要讀的文件
C.一個指針;指向要讀入數(shù)據(jù)的存放地址
D.一個存儲區(qū),存放要讀的數(shù)據(jù)項(xiàng)
51.以下對枚舉類型名的定義中正確的是______。
A.enuma={one,two,three};
B.enuma{one=9,two=-1,three};
C.enuma={one","two","three"};
D.enuma{"one","two","three"};
52.設(shè)有定義inta;floatb;執(zhí)行scanf("%2d%f",&a,&b);語句時,若從鍵盤輸入876543.0<回車>,a和b的值分別是______。
A.876和543.000000
B.87和6.000000
C.87和543.000000
D.76和543.000000
53.對于條件表達(dá)式(M)?(a++):(a--),其中的表達(dá)式M等于()
A.M==0B.M==1C.M!=0D.M!=1
54.下列不屬于靜態(tài)測試方法的是()。A.A.代碼檢查B.白盒法C.靜態(tài)結(jié)構(gòu)分析D.代碼質(zhì)量度量
55.在下列敘述中,錯誤的一條是______。
A.定義char*string="China"中的string是一個字符串變量,其值為China
B.若有一個多維數(shù)組a,則*(a+i)與a[i]等價
C.int(*p)[4]表示p為指針變量,它指向包含4個元素的一維數(shù)組
D.數(shù)組名代表數(shù)組的首地址,固定不變。指針變量可通過指向數(shù)組首地址來代表對應(yīng)的數(shù)組,但其值可以改變
56.若有如下程序:main(){intx=1,n;for(n=0;n<5;n++){switch(n){case3:x+=3;case2:x+=2;case1:case0:default:x+=4;}}printf("%d\n",x);}則程序執(zhí)行后的輸出結(jié)果是()
A.10B.18C.28D.30
57.以下scanf函數(shù)調(diào)用語句中對結(jié)構(gòu)體變量成員的不正確引用是structpupil{charname[20];intageintsex;}pup[5],*p;p=pup;
A.scanf("%s",pup[0].name);
B.scanf("%d",&pup[0].age);
C.scanf("%dT",&(p->sex));
D.scanf("%d",p->age);
58.與“for(i=0;i<10;i++)putchar('a'+i);”功能不同的語句是______。
A.for(i=0;i<10;)putchar('a'+(++i));
B.for(i=0;i<10;)putchar('a'+(i++));
C.for(i=0;i<10;putchar('a'+i),i++);
D.for(i=0;i<=9;i++)putchar('a'+i);
59.有以下程序
intadd(inta,intb){return(a+b);}
main()
{intk,(*f)(),a=5,b=10;
f=add;
…
}
則以下函數(shù)調(diào)用語句錯誤的是A.k=(*f)(a,b);B.k=add(a,b);C.k=*f(a,b);D.k=f(a,b);
60.下面程序段的運(yùn)行結(jié)果是
chara[]="lanuage",*p;
p=a;
while(*p!=′u′){printf("%c",*p-32);p++;}
A.LANGUAGEB.languageC.LAND.langUAGE
四、選擇題(20題)61.
62.以下關(guān)于long、int和short類型數(shù)據(jù)占用內(nèi)存大小的敘述中正確的是(),
A.均占4個字節(jié)B.根據(jù)數(shù)據(jù)的大小來決定所占內(nèi)存的字節(jié)數(shù)C.由用戶自己定義D.由C語言編譯系統(tǒng)決定
63.
64.當(dāng)變量c的值不為2、4、6時,值也為”真”的表達(dá)式是()。
A.(c>=2&&c<=6)&&(c%21=1)
B.(c==2)ll(e==4)II(C==6)
C.(C>=2&&c<=6)&&!(c%2)-
D.(c>=2&&c<=6)Il(c!=3)I|(C!=5)
65.
66.合法的main函數(shù)命令參數(shù)形式是()。
A.main(inta,char*c[])
B.main(intarc,char**arv)
C.main(intargc,char*argv)
D.main(intargv,char*argc[])
67.在C語言中,引用數(shù)組元素時,其數(shù)組下標(biāo)的數(shù)據(jù)類型允許是()。
A.整型表達(dá)式B.整型常量C.整型常量或整型表達(dá)式D.任何類型的表達(dá)式
68.
69.
70.下列程序段的輸出結(jié)果是()。
A.passwarnB.passerrorC.goodpasswarnD.pass
71.有以下程序
main()
{inta[3][3],*p,i;
p=&a[0][0];
for(i=0;i<9;i++)p[i]=i;
for(i=0;i<3;i++)printf("%d",(++p)[i]);
}
程序運(yùn)行后的輸出結(jié)果是()。
A.012B.135C.234D.345
72.
73.
74.下列說法中不正確的是
A.C語言規(guī)定,不能在一個函數(shù)的內(nèi)部再定義函數(shù)
B.在沒有聲明函數(shù)返回值類型的情況下,默認(rèn)的函數(shù)返回值類型為int型
C.函數(shù)的類型可以是整型、實(shí)型、字符型,但不能是指針型
D.函數(shù)可以沒有形參,但函數(shù)名后的一對圓括號不能省略
75.閱讀下列程序段,程序的輸出結(jié)果為()。
A.3B.5C.6D.8
76.語句:“printf("%d",(a=)&&(b=-2));”的輸出結(jié)果是()。A.A.無輸出B.結(jié)果是不確定C.-1D.1
77.
78.
79.下列條件語句中,輸出結(jié)果與其他語句不同的是()。
A.if(a)printf("%dn",x);elseprint[("%d\n",y)
B.if(a=0)pritf("%dn",y);elseprint[("%d\n",x)
C.if(a!一0)printf("%dn",x);elseprint[("%a\n",y)
D.if(a=O)print[("%dn",x);elseprintf("%d\n",y)
80.
五、程序改錯題(1題)81.下列給定程序中,函數(shù)fun()的功能是:求兩個非零正整數(shù)的最大公約數(shù),并作為函數(shù)值返回。例如,若num1和num2分別為49和21,則輸出的最大公約數(shù)為7;若num1和num2分別為27和81,則輸出的最大公約數(shù)為27。請改正程序中的錯誤,使它能得出正確結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:
六、程序設(shè)計題(1題)82.規(guī)定輸入的字符串中只包含字母和*號。編寫函數(shù)fun(),其功能是:刪除字符串中所有的*號。編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。例如,字符串中的內(nèi)容為“****A*BC*DEF*G****”,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是“ABCDEFG”。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入編寫的若干語句。試題程序:
參考答案
1.B
2.CC。R為n元關(guān)系,有P個元組S為m元關(guān)系,有q個元組。兩個關(guān)系笛卡兒積是一個n+m元的關(guān)系,元組個數(shù)是q×p。所以T的元組的個數(shù)為9個。
3.B本題主要考查標(biāo)識符的命名規(guī)則。選項(xiàng)A是合法的用戶標(biāo)識符,它符合命名的規(guī)則;選項(xiàng)B不是一個合法的用戶標(biāo)識符,因?yàn)樗窍到y(tǒng)中定義了的關(guān)鍵字;選項(xiàng)C是一個合法的標(biāo)識符;選項(xiàng)D可能也會有很多人認(rèn)為它不是一個合法的標(biāo)識符,認(rèn)為它是關(guān)鍵字,但事實(shí)上它不是一個關(guān)鍵字,因?yàn)镃語言中嚴(yán)格區(qū)分大小寫,因此,它不是雙精度關(guān)鍵字“double”,所以它是一個合法的用戶標(biāo)識符。
4.B
5.C解析:算法的時間復(fù)雜度實(shí)際上就是執(zhí)行算法程序所需要的計算工作量。為了客觀地反映算法性能,在度量算法的時間復(fù)雜度時,應(yīng)該與編寫算法程序所使用的程序設(shè)計語言、執(zhí)行算法程序時所使用的計算的工具以及程序員的水平無關(guān)。選項(xiàng)A錯誤,因?yàn)橥凰惴ǔ绦蛟谶\(yùn)行速度不同的計算機(jī)上運(yùn)行時,其計算時間是不同的。選項(xiàng)B錯誤,因?yàn)樗惴ㄋ帉懙某绦蜷L度往往與程序設(shè)計語言以及程序員的水平有關(guān),同一個算法,用不同的程序設(shè)計語言或者不同的程序員所編寫出的程序其長度可能會大不相同。選項(xiàng)D錯誤,因?yàn)楦鶕?jù)一個算法所編制出的程序之中,其指令條數(shù)往往與程序設(shè)計語言以及程序員的水平有關(guān),不能用算法程序中的指令條數(shù)來度量算法的時間復(fù)雜度。所以,本題正確答案為C。
6.B此題考查除法運(yùn)算,根據(jù)先乘除后加減,有括號先算括號的原則,先計算x/y,即l2/8=1,所以z=0.9+1=1.9。但是Z是整型的,轉(zhuǎn)化一下取整除部分,結(jié)果Z=1
7.A本題考查按位與運(yùn)算,按位與就是相同為1,不同為0,把x=011050化成二進(jìn)制為0001001000101000,把01252化成二進(jìn)制為0000001010101010,兩者相與得0000001000101000。
8.B
9.C解析:程序流程圖是人們對解決問題的方法、思路或算法的一種描述。其中,圖框表示各種操作的類型,圖框中的文字和符號表示操作的內(nèi)容,流程線表示操作的先后次序。帶箭頭的線段在數(shù)據(jù)流程圖中表示數(shù)據(jù)流。帶箭頭的線段在程序流程圖中表示控制流。題中給出的選項(xiàng)中,在圖元之間用帶有箭頭的線段表示圖元關(guān)系。在模塊之間用帶有箭頭的線段表示調(diào)用關(guān)系。構(gòu)成程序流程圖的基本圖符及含義:→或↓表示控制流;□表示加工步驟;
表示邏輯條件。
10.D解析:文件狀態(tài)檢測函數(shù)feof(fp)的功能是:測試所指的文件的位置指針是否已達(dá)到文件尾,如果已到達(dá)文件尾,則函數(shù)返回非。值;否則返回0,表示文件尚未結(jié)束。
11.A根據(jù)C語言運(yùn)算符的優(yōu)先級與結(jié)合性,先計算a/b,結(jié)果為l,再將a/b的結(jié)果與C做按位與運(yùn)算,即l與2做按位與運(yùn)算,其結(jié)果為0。
12.B解析:scanf()函數(shù)要求將輸入的數(shù)據(jù)存入變量所在的地址。選項(xiàng)A不是C語言中的輸入語句,故選項(xiàng)A不正確;選項(xiàng)C中輸入的是變量字符串而不是地址字符串,不滿足scanf()函數(shù)要求將輸入的數(shù)據(jù)存入變量所在的地址,故選項(xiàng)C不正確;選項(xiàng)D不是C語言中的輸入語句,故選項(xiàng)D不正確:所以,4個選項(xiàng)中選項(xiàng)B符合題意。
13.C程序定義一個字符數(shù)組b和一個字符變量k。for循環(huán)通過循環(huán)變量k,遍歷數(shù)組b中的各個字符,通過if語句判斷當(dāng)前下標(biāo)為k的字符的ASCII值與字符'm'的ASCII值的大小,ASCII值小于‘m’的ASCII值的字符改成大寫字母(b[k]=b[k]-'a'+'A'),然后輸出b[k]。在字符串“happychristmas”中,ASCII值小于'm'的字符有h,a,c,h,i,a,所以程序輸出:HAppyCHrIstmAs。本題答案為C選項(xiàng)。
14.Dmain函數(shù)中,首先定義兩個整型變量i和j,初值為3和7,并將i的地址賦給p,j的地址賦給q,傳給swap函數(shù)。swap函數(shù)接收兩個整型指針變量a、b,然后使用整型變量t交換a、b所指向的值并輸出。通過指針變量的交換改變了實(shí)參i、j的值,使得i=7,j=3。指針變量tp交換a和b的值,由于a、b的值是p、q值的復(fù)制,因此這次交換只改變了形參a、b的值,對實(shí)參p、q的值沒有改變,此時指針變量a指向j,指針變量b指向i。函數(shù)最后輸出*a和*b,所以輸出3,7。由于swap函數(shù)改變了p和q指向的值,因此main函數(shù)輸出i的值為7,j的值為3,*P的值為i,*q的值為j。最終程序輸出:3,7,7,3,7,3。故本題答案為D選項(xiàng)。
15.A軟件測試的目的是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程,并不涉及改正錯誤,所以選項(xiàng)A錯誤。程序調(diào)試的基本步驟有:錯誤定位、修改設(shè)計和代碼,以排除錯誤、進(jìn)行回歸測試,防止引進(jìn)新的錯誤。程序調(diào)試通常稱為Debug,即排錯。軟件測試的基本準(zhǔn)則有:所有測試都應(yīng)追溯到需求、嚴(yán)格執(zhí)行測試計劃,排除測試的隨意性、充分注意測試中的群集現(xiàn)象、程序員應(yīng)避免檢查自己的程序、窮舉測試不可能、妥善保存測試計劃等文件。故答案為A選項(xiàng)。
16.D解析:中序遍歷的遞歸算法定義:①遍歷左子樹;②訪問根結(jié)點(diǎn);③遍歷右子樹。前序遍歷的遞歸算法定義:①訪問根結(jié)點(diǎn);②遍歷左子樹;③遍歷右子樹。后序遍歷的遞歸算法定義:①遍歷左子樹;②遍歷右子樹;③訪問根結(jié)點(diǎn)。根據(jù)前序遍歷的結(jié)果可知,a是根結(jié)點(diǎn)。由中序遍歷的結(jié)果dgbaechf可知,d、g、b是左子樹的結(jié)點(diǎn),e、c、h、f是右子樹的結(jié)點(diǎn)。再由前序遍歷的結(jié)果bdg可知,b是a左邊子樹的根,由cefh可知,c是a右邊子樹的根。再由中序遍歷的結(jié)果dgb可知,d、g是b左邊子樹的結(jié)點(diǎn),b右邊子樹無結(jié)點(diǎn)。再由前序遍歷結(jié)果dg可知,d為b左子樹的根,g是以d為根的子樹的右結(jié)點(diǎn)。至此,a的左子樹已完全弄清楚了。同樣的道理,可以弄清楚以c為根的子樹的結(jié)點(diǎn)位置。所以可知后序遍歷的結(jié)果是D。
17.D
18.A解析:數(shù)據(jù)流圖包括四個方面,即加工(輸入數(shù)據(jù)經(jīng)加工變換產(chǎn)生輸出)、數(shù)據(jù)流(沿箭頭方向傳送數(shù)據(jù)的通道,一般在旁邊標(biāo)注數(shù)據(jù)流名)、存儲文件(數(shù)據(jù)源)(表示處理過程中存放各種數(shù)據(jù)的文件)、源和潭(表示系統(tǒng)和環(huán)境的接口,屬系統(tǒng)之外的實(shí)體),不包括選項(xiàng)中的控制流。
19.A
20.D函數(shù)fun是2的次方的運(yùn)算,而s*=fun,所以答案為64。
21.5252解析:do...while語句的形式為:
do
{
語句;
}while(條件表達(dá)式)
當(dāng)條件表達(dá)式為非零時,繼續(xù)執(zhí)行循環(huán)體,直到條件表達(dá)式為零時退出循環(huán)。
22.線性結(jié)構(gòu)線性結(jié)構(gòu)解析:數(shù)據(jù)的邏輯結(jié)構(gòu)是指數(shù)據(jù)元素之間的邏輯關(guān)系,分為線性結(jié)構(gòu)和非線性結(jié)構(gòu)。常見的線性結(jié)構(gòu)有線性表、棧和隊(duì)列等,常見的非線性結(jié)構(gòu)有樹、二叉樹等。
23.4.0或44.0或4
24.無限無限解析:分析程序“while(s)”語句后面有一個“;”不能執(zhí)行后面的語句,只是執(zhí)行空語句,所以s=12保持不變,因此,沒有條件限制的能循環(huán)無限次(即死循環(huán))。
25.eybdooG
26.t*10或10*tt*10或10*t解析:本題要求累加一系列有規(guī)律的數(shù),從輸出結(jié)果來看,s保存的是最終結(jié)果,而s在循環(huán)體中,每次累加一個t,則說明t在5次循環(huán)中分別等于1.12、123、1234、12345;而t每次循環(huán)等于“填空內(nèi)容”加上循環(huán)變量i,又因?yàn)閕在5次循環(huán)中分別等于1、2、3、4,5,所以t每次循環(huán)要加的“填空內(nèi)容”應(yīng)分別為0、10、120,1230,12340,這一系列值正好是前一次t的值的10倍.所以“填空內(nèi)容”應(yīng)是t*10。
27.ptrptr解析:本題考查函數(shù)指針的概念。函數(shù)指針的定義格式是:類型標(biāo)識符(*旨針變量名)()。注:“類型標(biāo)識符”為函數(shù)返回值的類型。
28.efghefgh解析:本題考核的知識點(diǎn)是通過指針引用字符串.函數(shù)“的作用是讓形參指針s指向該字符串的右半部分.主函數(shù)中首先定義了一個字符型指針變量p和字符型指針str;并初始化為“abcdefgh”,然后調(diào)用函數(shù)ss,將實(shí)參str傳給形參s,因此可知該函數(shù)返回的指針,指向str所指的字符串“abcdefgh”的右半部分,即指向字符串“efgh”,所以最后輸出指針p(指針p的值為調(diào)用函數(shù)ss(sD)的返回值)所指向的字符串為“efgh。
29.3691236912解析:本題考查最基本的for循環(huán):for(cc=1;cc<5;cc++)規(guī)定循環(huán)次數(shù)為4次,每次a+=3即每次a的值增3,但因?yàn)閒un函數(shù)中變量a為static類型,所以每次調(diào)用完于函數(shù)之后,變量a所做的改變都要保存。
30.文檔文檔解析:計算機(jī)軟件是計算機(jī)系統(tǒng)中與硬件相互依存的另一部分,是包括程序、數(shù)據(jù)以及相關(guān)文檔的完整集合。
31.efghefgh解析:本題定義了一個字符型指針變量p并通過賦初值讓它指向了一個字符串,定義了另一個字符型指針變量r和一個長整型指針變量q。首先通過語句“q=(long*)p;”把P的地址值強(qiáng)制轉(zhuǎn)換為長整型地址值并賦值給q,然后執(zhí)行“q++;”,地址值增加了4,執(zhí)行語句“r=(char*)q;”,把長整型指針變量q的值再強(qiáng)制轉(zhuǎn)換成字符型地址值并賦給r,r的值應(yīng)為字符串中字符“e”的地址,最后輸出,指向的字符中,是“efgh”。
32.空間空間解析:算法的復(fù)雜度主要包括時間復(fù)雜度和空間復(fù)雜度。所謂算法的時間復(fù)雜度,是指執(zhí)行算法所需要的計算工作量。一個算法的空間復(fù)雜度,一般是指執(zhí)行這個算法所需要的內(nèi)存空間。
33.8168,16解析:float(*p1)(float)是定義p1為指向函數(shù)的float型的指針變量。因此p1=f1;p2=f2;表示p1指向函數(shù)f1,p2指向函數(shù)f2,故所有y1=p2(p1(2.0))=f2(f1(2.0))=8;后面將p1與p2互換,y2=f1(f2(2.0))=16。
34.929,2解析:本題開始定義了一個int型二維數(shù)組a,并賦以5個初值,系統(tǒng)使數(shù)組的最高維為3,并讓a[0][0]=1,a[0][1]=2,a[1][0]=6,a[1][1]=9,a[2][0]=11,a[2][1]因?yàn)槌踔挡粔蚨跏蓟癁?。然后定義一個行指針t指向數(shù)組a的首地址,因?yàn)楸磉_(dá)式t[1]表示指向元素a[1][0]的int型指針,t[1]+1表示指向a[1][1]的int型指針,故*(t[1]+1)返回的是a[1][1]的值9。而*t表示指向元素a[0][0]的int型指針,故(*t)[1]返回的是a[0][1]的值2。所以正確答案應(yīng)該為9,2。
35.zyzXyzzyzXyz解析:本題考查字符型指針變量的應(yīng)用。程序中字符指針變量ps指向字符串'xyz',while循環(huán)語句的作用使ps指向字符串結(jié)尾,for循環(huán)的執(zhí)行過程如下。
第一次循環(huán):ps指向字符串'z',輸出z。
第二次循環(huán):ps指向字符串'yz',輸出yz。
第三次循環(huán):ps指向字符串'xyz',輸出xyz。
36.1919解析:二叉樹具有如下性質(zhì):在任意一棵二叉樹中,度為。的結(jié)點(diǎn)(即葉子結(jié)點(diǎn))總是比度為2的結(jié)點(diǎn)多一個。根據(jù)題意,度為2的節(jié)點(diǎn)為18個,那么,葉子結(jié)點(diǎn)就應(yīng)當(dāng)是19個。
37.BCDCDDBCD\r\nCD\r\nD解析:本題考查指向字符串的指針的運(yùn)算方法。指針變量p首先指向字符串中的第一個字符A,執(zhí)行p=s+1后,p指向字符串中的第二個字符B,然后輸出值'BCD'并換行,依次執(zhí)行循環(huán)語句。
38.驅(qū)動模塊驅(qū)動模塊解析:在進(jìn)行模塊測試時,要為每個被測試的模塊另外設(shè)計兩類模塊:驅(qū)動模塊和承接模塊(樁模塊)。其中,驅(qū)動模塊相當(dāng)于被測試模塊的主程序,它接收測試數(shù)據(jù),并傳給被測試模塊,輸出實(shí)際測試結(jié)果。承接模塊通常用于代替被測試模塊調(diào)用的其他模塊,其作用僅做少量的數(shù)據(jù)操作,是一個模擬子程序,不必將子模塊的所有功能帶入。
39.bb解析:在ASCII碼表中,至少有3個值考生得記住:,0,的ASCII碼為48;‘A’的ASCII碼為65;‘a(chǎn)’的ASCII碼為97。因?yàn)橛涀∵@3個后,其他字母和數(shù)字的ASCII碼就可以很容易推出來了。本題中,“B”的ASCII碼為‘A’+1=66,所以,字符類型m的ASCII為66+32=98=97+1=‘a(chǎn)’+1,所以最后輸出的結(jié)果為字符‘b’。
40.1343113431解析:初始化時,指針p指向m[0]的地址,指針q指向m[4]的地址,p!=q滿足循環(huán)條件,執(zhí)行循環(huán)語句,得到m[0].k=1,m[4].k=1,此時i=2,指針p指向m[1]的地址,指針q指向m[3]的地址,p!=q滿足循環(huán)條件,執(zhí)行循環(huán)語句,得到m[1].k=3,k=3,此時i=4,指針q指向m[2]的地址,p==q不滿足循環(huán)條件,則退出循環(huán),m[2].k=4。所以最后輸出為13431。
41.D解析:函數(shù)f的功能實(shí)際上是統(tǒng)計字符串s的字符數(shù),“bestone!”共9個字符,所以選D。
42.B
43.B解析:本題考查switch語句。第一個switch語句,因?yàn)閍=6,a%2=0,所以執(zhí)行case0.將m加1,遇到break語句跳出switch語句,結(jié)束循環(huán)。
44.C解析:字符串輸入函數(shù)fgets()的調(diào)用形式為:fgets(s,n,fp)。s可以是一個字符數(shù)組名,或是指向字符串的指針;n為要讀取的最多的字符個數(shù):fp是指向該文件的文件型指針。字符串輸入函數(shù)的功能是:從fp所指向的文件中讀取長度不超過n-1個字符的字符串,并將該字符串存放到字符數(shù)組s中。
45.B
46.D解析:數(shù)據(jù)流圖有4種成分:源點(diǎn)或終點(diǎn)、處理、數(shù)據(jù)存儲和哦數(shù)據(jù)流。數(shù)據(jù)存儲是處于靜止?fàn)顟B(tài)的數(shù)據(jù),數(shù)據(jù)流是處于運(yùn)動中的數(shù)據(jù)。
47.B解析:在C語言中,可以用break語句和continue語句跳出本層循環(huán)和結(jié)束本次循環(huán)。goto語句可跳出多層循環(huán),如果在函數(shù)的循環(huán)體內(nèi)使用return語句,就會直接結(jié)束循環(huán)返回函數(shù)值。
48.B解析:在C語言中,寫字母和小寫字母被認(rèn)為是兩個不同的字符,因此,“hello!”和“Hello!”是兩個不同的字符串。
49.D
50.C解析:這是一道考查fread函數(shù)的題。buf是一個指針,fread是讀入數(shù)據(jù)的存放地址;fwrite是輸出數(shù)據(jù)的地址(以上指的是起始地址)。
51.B解析:聲明枚舉類型用enum開頭。例如:enumweekday(sun,mon,tue,wed,thu,fri,sat);說明:1、在C編譯中,對枚舉元素按常量處理,同時可以改變他們的值。2、枚舉值可以用來做判斷比較。3、一個整數(shù)不能直接賦給一個枚舉變量。
52.B解析:“%2d”指定輸入數(shù)據(jù)所占寬度為2,&是C語言中的求地址運(yùn)算符。
53.C
54.B解析:靜態(tài)測試包括代碼檢查、靜態(tài)結(jié)構(gòu)分析和代碼質(zhì)量度量等。其中白盒測試屬于動態(tài)測試。
55.A
56.C
57.D解析:可用結(jié)構(gòu)體變量名.?dāng)?shù)據(jù)成員名或者結(jié)構(gòu)體指針->數(shù)據(jù)成員名兩種方法來引用。注意:結(jié)構(gòu)體類型的變量、數(shù)組和指針變量的定義。
58.A
59.C答案C
解析:在語句“k=*f(a,b)”中,由于“()”的優(yōu)先級高于“*”,所以“*f(a,b);”表示其返回類型為指針的帶有兩個整型參數(shù)的函數(shù)。
60.C解析:本段程序的作用是輸出字符串'lanuage'中字母u之前的字符,并將其轉(zhuǎn)化為大寫字母。注意:如果一個字符數(shù)組用來作為字符串使用,那么在定義該字符數(shù)組時,數(shù)組的大小就應(yīng)該比它將要實(shí)際存放的最長字符多一個元素,以存放\'\\0\'。
61.C
62.D解析:在C語言的標(biāo)準(zhǔn)中,short占2個字節(jié)、long占4個字節(jié),但int的大小和編譯系統(tǒng)相關(guān)。例如在Turbo\u3000C\u30002.0中,int占2個字節(jié),但在VisualC++6.0(VC6可以用做C語言編譯器)中占4個字節(jié)。故本題應(yīng)該選擇D。
63.A
64.D邏輯或運(yùn)算符中只要有一個運(yùn)算量為真結(jié)果就是真,當(dāng)c>=2&&C<=6條件不成立時c的值肯定不是2、3、4…56所以C!=3,與C!=5均成立。所以D選項(xiàng)的結(jié)果一定為真。
65.A
66.C在C語言中,main函數(shù)也可以有參數(shù),例如,main(intar90,char*argv),argc是指字符串的指針數(shù)組,而其他幾項(xiàng)表達(dá)不正確。
67.C解析:在C語言中,引用數(shù)組元素時,其數(shù)組下標(biāo)的數(shù)據(jù)類型可以是整型常量,也可以是整型表達(dá)式。
68.C
69.B
70.A本題的考查點(diǎn)是switch語句。當(dāng)用戶鍵人字符時,會進(jìn)入一個多分支選擇語句,根據(jù)n的值,來確定下一步執(zhí)行的選擇語句;最后的結(jié)果應(yīng)當(dāng)為passwarn。本題需要注意的是,當(dāng)case語句沒有跟隨break語句時,不會跳出switch,而是繼續(xù)執(zhí)行下一個case語句,直至遇到break語句。
71.B第一個for循環(huán)的結(jié)果是p[9]={0,1,2,3,4,,5,6,7,8},第二個for循環(huán):i=0,++p,使得p指向了1,所以輸出的結(jié)果是1,然后i++,i=1,++p,p指向了3……
72.A
73.A
74.C本題主要考查函數(shù)定義的基本知識。函數(shù)是C語言的基本組成部分,用來完成子程序的功能。一個完整的C程序包括一個main()函數(shù)(主函數(shù))和若干個其他函數(shù),C程序從main()函數(shù)開始執(zhí)行。
在C語言中,函數(shù)定義是平行的,函數(shù)不能嵌套定義,即一個函數(shù)不能在另一個函數(shù)內(nèi)部定義,函數(shù)之間沒有從屬關(guān)系。函數(shù)定義表達(dá)的一般形式為:
<函數(shù)返回值類型>函數(shù)名(<類型名><形式參數(shù)1>,<類型名><形式參數(shù)2>,……)
{
函數(shù)體變量定義部分;
函數(shù)體語句部分;
}
其中,<函數(shù)返回值類型>部分可以省略,默認(rèn)為整型。函數(shù)返回值類型可以為各種整型、字符型、實(shí)型,還可以是指針類型。這里需要注意,在定義沒有形參的函數(shù)時,函數(shù)的括號不能沒有,如果沒有,就不是函數(shù)了,很有可能被當(dāng)成變量處理。
75.A帶參數(shù)的宏定義命令行形式如下:#de-fine宏名(形參表)替換文本。首先進(jìn)行M的宏替換,之后再進(jìn)行N的宏替換.替換后的表達(dá)式為(a)*(b)/(c)。
76.D因?yàn)樵谶壿嫳磉_(dá)式中,兩邊的賦值表達(dá)式都成立,即值為1,故選擇D選項(xiàng)。
77.A
78.A
79.D主要考查if判斷語句,A選項(xiàng)if(a),如果a為真,則輸出X,否則輸出Y。B選項(xiàng)if(a==0),如果a恒等于0,則輸出Y,否則輸出X。C選項(xiàng)a(!=o),如果a不等于0,則輸出X,否則輸出y。D選項(xiàng)if(a==0),如果a恒等于0,則輸出X,否則輸出y。由以上結(jié)論可知,輸出結(jié)果不同的為D選項(xiàng)。
80.D
81.
【解析】本題是考查常用的求最大公約數(shù)的算法,其過程是設(shè)兩數(shù)為a、b,若a大于b.則用a除以b,否則用b除以a,用除得的余數(shù)再去除以除數(shù),再得到一個余數(shù),一直除下去,直到余數(shù)為0,即可求出最大公約數(shù)。要實(shí)現(xiàn)變量a、b互換,應(yīng)該使用t=a;a=b;b=t;,此處t為中問變量;返回值為最大公約數(shù),因此應(yīng)返回除數(shù)b,而不是a。
82.
【解析】此題是刪除字符串中的星號。思路是通過for循環(huán)來完成對字符串的遍歷,通過if判斷,找到不是“*”的字符,將其賦值到數(shù)組a中星號前的位置,“if(a[i]!=ˊ*ˊ)”“a[j++]=a[i]”,最后返回主函數(shù)將刪除*后的字符串輸出即可。
2022-2023年內(nèi)蒙古自治區(qū)巴彥淖爾市全國計算機(jī)等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.下面算法的時間復(fù)雜度為()A.O(1)B.O(n)C.O(n*n)D.O(n!)
2.設(shè)R是一個2元關(guān)系,有3個元組,S是一個3元關(guān)系,有3個元組。如T=R×S,則T的元組的個數(shù)為()。A.6B.8C.9D.12
3.下列不可用于C語言用戶標(biāo)識符的是A.A.j2_KEY
B.char
C._g_
D.Double
4.
5.算法的時間復(fù)雜度是指______。
A.執(zhí)行算法程序所需要的時間B.算法程序的長度C.算法執(zhí)行過程中所需要的基本運(yùn)算次數(shù)D.算法程序中的指令條數(shù)
6.若有定義語句:“intx=12,y=8,z;”,在其后執(zhí)行語句“z=0.9+x/y;”,則z的值為()。A.1.9B.1C.2D.2.4
7.設(shè)x=011050,則x=x&01252的值是()。A.0000001000101000
B.1111110100011001
C.0000001011100010
D.1100000000101000
8.字符串”a+b=12\n”的長度為()。
A.6B.7C.8D.9
9.程序流程圖中帶有箭頭的線段表示的是()。
A.圖元關(guān)系B.數(shù)據(jù)流C.控制流D.調(diào)用關(guān)系
10.若fp是指向某文件的指針,且尚未讀到文件末尾,則函數(shù)feof(fp)的返回值是()。
A.EOFB.-1C.非零值D.0
11.有以下程序:#include<stdio.h>main(){inta=2,b=2,C=2;print{("%d\n",a/b&c);}程序運(yùn)行后的輸出結(jié)果是()。A.0B.1C.2D.3
12.X、Y、Z被定義為int型變量,若從鍵盤給X、Y、Z輸入數(shù)據(jù),正確的輸入語句是______。
A.INPUTX,Y,Z;
B.scanf("%d%d%d",&X,&Y,&Z);
C.scanf("%d%d%d",X,Y,Z);
D.read("%d%d%d",&X,&Y,&Z);
13.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。
A.hAppychristmAs
B.happychristmas
C.HAppyCHrIstmAs
D.HAPPYCHRISTMAS
14.有以下程序:#include<stdio.h>voidswap(int*a,int*b){intt,*tp;t=*a;*a=*b;*b=t;tp=a;a=b;b=tp;printf(“%d,%d,”,*a,*b);}main(){inti=3,j=7,*p=&i,*q=&j;swap(p,q);printf(“%d,%d,%d,%d”,i,j,*p,*q);}程序運(yùn)行后的輸出結(jié)果是()。
A.3,7,3,7,3,7B.7,3,7,3,7,3C.3,7,3,7,7,3D.3,7,7,3,7,3
15.下面敘述中錯誤的是()。
A.軟件測試的目的是發(fā)現(xiàn)錯誤并改正錯誤
B.對被調(diào)試的程序進(jìn)行“錯誤定位”是程序調(diào)試的必要步驟
C.程序調(diào)試通常也稱為Debug
D.軟件測試應(yīng)嚴(yán)格執(zhí)行測試計劃,排除測試的隨意性
16.若某二叉樹的前序遍歷訪問順序是abdgcefh,中序遍歷訪問順序是dgbaechf,則其后序遍歷的結(jié)點(diǎn)訪問順序是()。
A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca
17.若變量c為char類型,能正確判斷出c為小寫字母的表達(dá)式是A.A.′a′<=c<=′z′c="">=′a′)||(c<=′z′)
B.(′a′>=c)and(′z′>=c)
C.(′a′<=c)and(′z′>=c)
D.(c>=′a′)&&(c<=′z′)
18.數(shù)據(jù)流圖用于抽象地描述一個軟件的邏輯模型,數(shù)據(jù)流圖由一些特定的圖符構(gòu)成。下列圖符名標(biāo)識的圖符不屬于數(shù)據(jù)流圖合法圖符的是()。
A.控制流B.加工C.數(shù)據(jù)存儲D.源和潭
19.
20.有以下程序:#include<stdio.h>intfun(){staticintx=1;X*=2:returnx;}main(){inti,S=1;for(i=1;i<=3;i++)S*=fun();printf("%d\n",s);}程序運(yùn)行后的輸出結(jié)果是()。A.0B.10C.30D.64
二、2.填空題(20題)21.以上程序運(yùn)行后的輸出結(jié)果是【】。
main()
{inti=10,j=0;
do
{j=j+i;i-;}
while(i>2);
printf("%d\n",j);
}
22.按照邏輯結(jié)構(gòu)分類,結(jié)構(gòu)可以分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),棧屬于______。
23.設(shè)x和y均為int型變量,且x=1,y=2,則表達(dá)式2.0+y/x的值為【】。
24.下列語句能循環(huán)______次。
ints=12;
while(s);
--s;
25.下面程序的輸出結(jié)果是【】。
#include<stdio.h>
main()
{staiccharb[]="Goodbye";
char*chp=&b[7];
while(--chp>=&b[0])putchar(*chp);
printf("\n");
}
26.以下程序的功能是計算:s=1+12+123+1234+12345。請?zhí)羁铡?/p>
main()
{intt=0,s=0,i;
for(i=1;i<=5;i++)
{t=i+______;s=s+t;}
printf("s=%d\n",s);
}
27.語句"int(*ptr)();"的含義是______是指向函數(shù)的指針,該函數(shù)返回一個int型數(shù)據(jù)。
28.下列程序的運(yùn)行結(jié)果是______。
#include<string.h>
char*ss(char*s)
{returns+strlen(s)/2;}
main()
{char*p,*str="abcdefgh";
p=ss(str);printf('%s\n",p);
}
29.下列程序的輸出結(jié)果是______。
#include<stdio.h>
fun()
{staticinta=0;
a+=3;printf("%d",A);
}
main()
{intcc;
for(cc=1;cc<5;cc++)fun();
printf("\n");
}
30.軟件是程序、數(shù)據(jù)和【】的集合。
31.以下程序的輸出結(jié)果是【】。
main()
{char*p=“abodefgh”,*r;
long*q;
q=(long*)p;
q++;
r=(char*)q;
printf(“%s\n”,r);
}
32.算法的復(fù)雜度主要包括時間復(fù)雜度和______復(fù)雜度。
33.有以下程序:
floatf1(floatn)
{returnn*n;}
floatf2(floatn)
{return2*n;}
main()
{float(*p1)(float),(*p2)(float),(*t)(float),y1,y2;
p1=f1;p2=f2;
y1=p2(p1(2.0));
t=P1;p1=p2;p2=t;
y2=p2(p1(2.0));
printf("%3.0f,%3.0f\n",y1,y2);
}
程序運(yùn)行后的輸出結(jié)果是【】。
34.若有如下程序:
main()
{inta[][2]={1,2,6,9,11},(*t)[2];
t=a;
printf("%d,%d\n",*(t[1]+1),(*t)[1]);
}
則程序運(yùn)行后輸出的結(jié)果是【】。
35.有以下程序:
main()
{charstr[]="xyz",*ps=str;
while(*ps)ps++;
for(ps--;ps-str>=0;ps--)puts(ps);
}
執(zhí)行后的輸出結(jié)果是【】。
36.某二義樹中度為2的結(jié)點(diǎn)有18個,則該二叉樹中有______個葉子結(jié)點(diǎn)。
37.以下程序的輸出結(jié)果是【】。
main()
{chars[]="ABCD",*p;
for(p=s+1;p<s+4;p++)printf("%s\n",p);}
38.在進(jìn)行模塊測試時,要為每個被測試的模塊另外設(shè)計兩類模塊:驅(qū)動模塊和承接模塊(樁模塊),其中【】的作用是將測試數(shù)據(jù)傳送給被測試的模塊,并顯示被測試模塊所產(chǎn)生的結(jié)果。
39.以下程序運(yùn)行后的輸出結(jié)果是【】。
main()
{charm;
m='B'+32;printf("%c\n",m);
40.以下程序運(yùn)行后的輸出結(jié)果是【】。
structNODE
{intk;
structNODE*link;
};
main()
{structNODEm[5],*p=m,*q=m+4;
inti=0;
while(p!=q){
p->k=++i;p++;
q->k=i++;q--;
}
q->k=i;
for(i=0;i<5;i++)printf("%d",m[i].k);
printf("\n");
}
三、1.選擇題(20題)41.有如下的程序:intf(char*s){char*p=s;while(*p!='\0')p++;return(p-s);}如果在主程序中用下述語句調(diào)用上述函數(shù),則輸出結(jié)果為______。printf("%d\n",f("bestone!"));
A.3B.6C.8D.9
42.設(shè)有inta=15,b=240;,則表達(dá)式(a&b)&b||b的值為______。
A.0B.1C.真D.假
43.有下列程序:#include<stdio.h>main(){inta=6,b=7,m=1;switch(a%2){case0:m++;break;case1:m++;switch(b%2){defaut:m++;case0:m++;break;}}printf("%d\n",m);}程序運(yùn)行后的輸出結(jié)果是()。
A.1B.2C.3D.4
44.fgets(str,n,fp)函數(shù)從文件中讀入一個字符串,以下錯誤的敘述是()。
A.字符串讀入后會自動加入'\0'
B.fp是指向該文件的文件型指針
C.fgets函數(shù)將從文件中最多讀入n個字符
D.fgets函數(shù)將從文件中最多讀入n-1個字符
45.在下面關(guān)于指針的說法中,錯誤的一條是()
A.變量的指針就是變量的地址
B.可以將一個整型量或任何其他非地址類型的數(shù)據(jù)賦給一個指針變量
C.一個指針變量只能指向同一個類型的變量
D.指針變量中只能存放地址(指針)
46.數(shù)據(jù)存儲和數(shù)據(jù)流都是______,僅僅是所處的狀態(tài)不同。
A.分析結(jié)果B.事件C.動作D.數(shù)據(jù)
47.下面的關(guān)鍵字中,不能夠從循環(huán)體中跳到循環(huán)體外的是______。
A.gotoB.breakC.returnD.continue
48.不能把字符串"HELLO!"賦紿數(shù)組b的語句是______。
A.charb[10]={'H,''E','L','L','O','!'};
B.charb[10]={'h','e'.,l','l','o''!'};
C.charb[10];strcpy(b,"Hello!");
D.charb[10]="Hello!";
49.與進(jìn)制數(shù)101.01011等值的十六進(jìn)制數(shù)是()
A.A.BB.5.51C.A.51D.5.58
50.已知函數(shù)的調(diào)用形式為fread(buf,size,count,fp),參數(shù)buf的含義是
A.一個整型變量,代表要讀入的數(shù)據(jù)項(xiàng)總數(shù)
B.一個文件指針,指向要讀的文件
C.一個指針;指向要讀入數(shù)據(jù)的存放地址
D.一個存儲區(qū),存放要讀的數(shù)據(jù)項(xiàng)
51.以下對枚舉類型名的定義中正確的是______。
A.enuma={one,two,three};
B.enuma{one=9,two=-1,three};
C.enuma={one","two","three"};
D.enuma{"one","two","three"};
52.設(shè)有定義inta;floatb;執(zhí)行scanf("%2d%f",&a,&b);語句時,若從鍵盤輸入876543.0<回車>,a和b的值分別是______。
A.876和543.000000
B.87和6.000000
C.87和543.000000
D.76和543.000000
53.對于條件表達(dá)式(M)?(a++):(a--),其中的表達(dá)式M等于()
A.M==0B.M==1C.M!=0D.M!=1
54.下列不屬于靜態(tài)測試方法的是()。A.A.代碼檢查B.白盒法C.靜態(tài)結(jié)構(gòu)分析D.代碼質(zhì)量度量
55.在下列敘述中,錯誤的一條是______。
A.定義char*string="China"中的string是一個字符串變量,其值為China
B.若有一個多維數(shù)組a,則*(a+i)與a[i]等價
C.int(*p)[4]表示p為指針變量,它指向包含4個元素的一維數(shù)組
D.數(shù)組名代表數(shù)組的首地址,固定不變。指針變量可通過指向數(shù)組首地址來代表對應(yīng)的數(shù)組,但其值可以改變
56.若有如下程序:main(){intx=1,n;for(n=0;n<5;n++){switch(n){case3:x+=3;case2:x+=2;case1:case0:default:x+=4;}}printf("%d\n",x);}則程序執(zhí)行后的輸出結(jié)果是()
A.10B.18C.28D.30
57.以下scanf函數(shù)調(diào)用語句中對結(jié)構(gòu)體變量成員的不正確引用是structpupil{charname[20];intageintsex;}pup[5],*p;p=pup;
A.scanf("%s",pup[0].name);
B.scanf("%d",&pup[0].age);
C.scanf("%dT",&(p->sex));
D.scanf("%d",p->age);
58.與“for(i=0;i<10;i++)putchar('a'+i);”功能不同的語句是______。
A.for(i=0;i<10;)putchar('a'+(++i));
B.for(i=0;i<10;)putchar('a'+(i++));
C.for(i=0;i<10;putchar('a'+i),i++);
D.for(i=0;i<=9;i++)putchar('a'+i);
59.有以下程序
intadd(inta,intb){return(a+b);}
main()
{intk,(*f)(),a=5,b=10;
f=add;
…
}
則以下函數(shù)調(diào)用語句錯誤的是A.k=(*f)(a,b);B.k=add(a,b);C.k=*f(a,b);D.k=f(a,b);
60.下面程序段的運(yùn)行結(jié)果是
chara[]="lanuage",*p;
p=a;
while(*p!=′u′){printf("%c",*p-32);p++;}
A.LANGUAGEB.languageC.LAND.langUAGE
四、選擇題(20題)61.
62.以下關(guān)于long、int和short類型數(shù)據(jù)占用內(nèi)存大小的敘述中正確的是(),
A.均占4個字節(jié)B.根據(jù)數(shù)據(jù)的大小來決定所占內(nèi)存的字節(jié)數(shù)C.由用戶自己定義D.由C語言編譯系統(tǒng)決定
63.
64.當(dāng)變量c的值不為2、4、6時,值也為”真”的表達(dá)式是()。
A.(c>=2&&c<=6)&&(c%21=1)
B.(c==2)ll(e==4)II(C==6)
C.(C>=2&&c<=6)&&!(c%2)-
D.(c>=2&&c<=6)Il(c!=3)I|(C!=5)
65.
66.合法的main函數(shù)命令參數(shù)形式是()。
A.main(inta,char*c[])
B.main(intarc,char**arv)
C.main(intargc,char*argv)
D.main(intargv,char*argc[])
67.在C語言中,引用數(shù)組元素時,其數(shù)組下標(biāo)的數(shù)據(jù)類型允許是()。
A.整型表達(dá)式B.整型常量C.整型常量或整型表達(dá)式D.任何類型的表達(dá)式
68.
69.
70.下列程序段的輸出結(jié)果是()。
A.passwarnB.passerrorC.goodpasswarnD.pass
71.有以下程序
main()
{inta[3][3],*p,i;
p=&a[0][0];
for(i=0;i<9;i++)p[i]=i;
for(i=0;i<3;i++)printf("%d",(++p)[i]);
}
程序運(yùn)行后的輸出結(jié)果是()。
A.012B.135C.234D.345
72.
73.
74.下列說法中不正確的是
A.C語言規(guī)定,不能在一個函數(shù)的內(nèi)部再定義函數(shù)
B.在沒有聲明函數(shù)返回值類型的情況下,默認(rèn)的函數(shù)返回值類型為int型
C.函數(shù)的類型可以是整型、實(shí)型、字符型,但不能是指針型
D.函數(shù)可以沒有形參,但函數(shù)名后的一對圓括號不能省略
75.閱讀下列程序段,程序的輸出結(jié)果為()。
A.3B.5C.6D.8
76.語句:“printf("%d",(a=)&&(b=-2));”的輸出結(jié)果是()。A.A.無輸出B.結(jié)果是不確定C.-1D.1
77.
78.
79.下列條件語句中,輸出結(jié)果與其他語句不同的是()。
A.if(a)printf("%dn",x);elseprint[("%d\n",y)
B.if(a=0)pritf("%dn",y);elseprint[("%d\n",x)
C.if(a!一0)printf("%dn",x);elseprint[("%a\n",y)
D.if(a=O)print[("%dn",x);elseprintf("%d\n",y)
80.
五、程序改錯題(1題)81.下列給定程序中,函數(shù)fun()的功能是:求兩個非零正整數(shù)的最大公約數(shù),并作為函數(shù)值返回。例如,若num1和num2分別為49和21,則輸出的最大公約數(shù)為7;若num1和num2分別為27和81,則輸出的最大公約數(shù)為27。請改正程序中的錯誤,使它能得出正確結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:
六、程序設(shè)計題(1題)82.規(guī)定輸入的字符串中只包含字母和*號。編寫函數(shù)fun(),其功能是:刪除字符串中所有的*號。編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。例如,字符串中的內(nèi)容為“****A*BC*DEF*G****”,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是“ABCDEFG”。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入編寫的若干語句。試題程序:
參考答案
1.B
2.CC。R為n元關(guān)系,有P個元組S為m元關(guān)系,有q個元組。兩個關(guān)系笛卡兒積是一個n+m元的關(guān)系,元組個數(shù)是q×p。所以T的元組的個數(shù)為9個。
3.B本題主要考查標(biāo)識符的命名規(guī)則。選項(xiàng)A是合法的用戶標(biāo)識符,它符合命名的規(guī)則;選項(xiàng)B不是一個合法的用戶標(biāo)識符,因?yàn)樗窍到y(tǒng)中定義了的關(guān)鍵字;選項(xiàng)C是一個合法的標(biāo)識符;選項(xiàng)D可能也會有很多人認(rèn)為它不是一個合法的標(biāo)識符,認(rèn)為它是關(guān)鍵字,但事實(shí)上它不是一個關(guān)鍵字,因?yàn)镃語言中嚴(yán)格區(qū)分大小寫,因此,它不是雙精度關(guān)鍵字“double”,所以它是一個合法的用戶標(biāo)識符。
4.B
5.C解析:算法的時間復(fù)雜度實(shí)際上就是執(zhí)行算法程序所需要的計算工作量。為了客觀地反映算法性能,在度量算法的時間復(fù)雜度時,應(yīng)該與編寫算法程序所使用的程序設(shè)計語言、執(zhí)行算法程序時所使用的計算的工具以及程序員的水平無關(guān)。選項(xiàng)A錯誤,因?yàn)橥凰惴ǔ绦蛟谶\(yùn)行速度不同的計算機(jī)上運(yùn)行時,其計算時間是不同的。選項(xiàng)B錯誤,因?yàn)樗惴ㄋ帉懙某绦蜷L度往往與程序設(shè)計語言以及程序員的水平有關(guān),同一個算法,用不同的程序設(shè)計語言或者不同的程序員所編寫出的程序其長度可能會大不相同。選項(xiàng)D錯誤,因?yàn)楦鶕?jù)一個算法所編制出的程序之中,其指令條數(shù)往往與程序設(shè)計語言以及程序員的水平有關(guān),不能用算法程序中的指令條數(shù)來度量算法的時間復(fù)雜度。所以,本題正確答案為C。
6.B此題考查除法運(yùn)算,根據(jù)先乘除后加減,有括號先算括號的原則,先計算x/y,即l2/8=1,所以z=0.9+1=1.9。但是Z是整型的,轉(zhuǎn)化一下取整除部分,結(jié)果Z=1
7.A本題考查按位與運(yùn)算,按位與就是相同為1,不同為0,把x=011050化成二進(jìn)制為0001001000101000,把01252化成二進(jìn)制為0000001010101010,兩者相與得0000001000101000。
8.B
9.C解析:程序流程圖是人們對解決問題的方法、思路或算法的一種描述。其中,圖框表示各種操作的類型,圖框中的文字和符號表示操作的內(nèi)容,流程線表示操作的先后次序。帶箭頭的線段在數(shù)據(jù)流程圖中表示數(shù)據(jù)流。帶箭頭的線段在程序流程圖中表示控制流。題中給出的選項(xiàng)中,在圖元之間用帶有箭頭的線段表示圖元關(guān)系。在模塊之間用帶有箭頭的線段表示調(diào)用關(guān)系。構(gòu)成程序流程圖的基本圖符及含義:→或↓表示控制流;□表示加工步驟;
表示邏輯條件。
10.D解析:文件狀態(tài)檢測函數(shù)feof(fp)的功能是:測試所指的文件的位置指針是否已達(dá)到文件尾,如果已到達(dá)文件尾,則函數(shù)返回非。值;否則返回0,表示文件尚未結(jié)束。
11.A根據(jù)C語言運(yùn)算符的優(yōu)先級與結(jié)合性,先計算a/b,結(jié)果為l,再將a/b的結(jié)果與C做按位與運(yùn)算,即l與2做按位與運(yùn)算,其結(jié)果為0。
12.B解析:scanf()函數(shù)要求將輸入的數(shù)據(jù)存入變量所在的地址。選項(xiàng)A不是C語言中的輸入語句,故選項(xiàng)A不正確;選項(xiàng)C中輸入的是變量字符串而不是地址字符串,不滿足scanf()函數(shù)要求將輸入的數(shù)據(jù)存入變量所在的地址,故選項(xiàng)C不正確;選項(xiàng)D不是C語言中的輸入語句,故選項(xiàng)D不正確:所以,4個選項(xiàng)中選項(xiàng)B符合題意。
13.C程序定義一個字符數(shù)組b和一個字符變量k。for循環(huán)通過循環(huán)變量k,遍歷數(shù)組b中的各個字符,通過if語句判斷當(dāng)前下標(biāo)為k的字符的ASCII值與字符'm'的ASCII值的大小,ASCII值小于‘m’的ASCII值的字符改成大寫字母(b[k]=b[k]-'a'+'A'),然后輸出b[k]。在字符串“happychristmas”中,ASCII值小于'm'的字符有h,a,c,h,i,a,所以程序輸出:HAppyCHrIstmAs。本題答案為C選項(xiàng)。
14.Dmain函數(shù)中,首先定義兩個整型變量i和j,初值為3和7,并將i的地址賦給p,j的地址賦給q,傳給swap函數(shù)。swap函數(shù)接收兩個整型指針變量a、b,然后使用整型變量t交換a、b所指向的值并輸出。通過指針變量的交換改變了實(shí)參i、j的值,使得i=7,j=3。指針變量tp交換a和b的值,由于a、b的值是p、q值的復(fù)制,因此這次交換只改變了形參a、b的值,對實(shí)參p、q的值沒有改變,此時指針變量a指向j,指針變量b指向i。函數(shù)最后輸出*a和*b,所以輸出3,7。由于swap函數(shù)改變了p和q指向的值,因此main函數(shù)輸出i的值為7,j的值為3,*P的值為i,*q的值為j。最終程序輸出:3,7,7,3,7,3。故本題答案為D選項(xiàng)。
15.A軟件測試的目的是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程,并不涉及改正錯誤,所以選項(xiàng)A錯誤。程序調(diào)試的基本步驟有:錯誤定位、修改設(shè)計和代碼,以排除錯誤、進(jìn)行回歸測試,防止引進(jìn)新的錯誤。程序調(diào)試通常稱為Debug,即排錯。軟件測試的基本準(zhǔn)則有:所有測試都應(yīng)追溯到需求、嚴(yán)格執(zhí)行測試計劃,排除測試的隨意性、充分注意測試中的群集現(xiàn)象、程序員應(yīng)避免檢查自己的程序、窮舉測試不可能、妥善保存測試計劃等文件。故答案為A選項(xiàng)。
16.D解析:中序遍歷的遞歸算法定義:①遍歷左子樹;②訪問根結(jié)點(diǎn);③遍歷右子樹。前序遍歷的遞歸算法定義:①訪問根結(jié)點(diǎn);②遍歷左子樹;③遍歷右子樹。后序遍歷的遞歸算法定義:①遍歷左子樹;②遍歷右子樹;③訪問根結(jié)點(diǎn)。根據(jù)前序遍歷的結(jié)果可知,a是根結(jié)點(diǎn)。由中序遍歷的結(jié)果dgbaechf可知,d、g、b是左子樹的結(jié)點(diǎn),e、c、h、f是右子樹的結(jié)點(diǎn)。再由前序遍歷的結(jié)果bdg可知,b是a左邊子樹的根,由cefh可知,c是a右邊子樹的根。再由中序遍歷的結(jié)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 一文讀懂社會穩(wěn)定風(fēng)險評估報告
- 2025年綠化景觀工程項(xiàng)目節(jié)能評估報告(節(jié)能專)
- 中國小商品行業(yè)市場運(yùn)行現(xiàn)狀及投資戰(zhàn)略研究報告
- 2025年竹茶飲料項(xiàng)目可行性研究報告
- 220kV鶴高甲乙線保護(hù)通道改造工程的研究與實(shí)施的開題報告
- 社區(qū)食堂合同范本
- 中國格列齊特緩釋片行業(yè)市場全景評估及發(fā)展戰(zhàn)略研究報告
- 中國嬰幼兒產(chǎn)品行業(yè)市場調(diào)查研究及投資前景預(yù)測報告
- 中國電火花堆焊修復(fù)機(jī)項(xiàng)目投資可行性研究報告
- 中國軌道交通屏蔽門行業(yè)全景評估及投資規(guī)劃建議報告
- 2025年內(nèi)蒙古呼倫貝爾農(nóng)墾拉布大林上庫力三河蘇沁農(nóng)牧場招聘115人歷年高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- (2025)特種設(shè)備安全管理員考試題庫及參考答案
- 2025年廣東省廣州市食品檢驗(yàn)所事業(yè)單位招聘若干人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 《移動通信市場推廣策略》課件
- 2024年湖南工業(yè)職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測驗(yàn)歷年參考題庫(頻考版)含答案解析
- 2024年湖南司法警官職業(yè)學(xué)院高職單招職業(yè)技能測驗(yàn)歷年參考題庫(頻考版)含答案解析
- 2025年國家藥品監(jiān)督管理局藥品審評中心招聘11人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024年廣東省《輔警招聘考試必刷500題》考試題庫含必背答案
- 餐飲企業(yè)牛奶產(chǎn)品推廣方案
- 2025年中國南光集團(tuán)有限公司招聘筆試參考題庫含答案解析
- 工程造價鑒定申請書
評論
0/150
提交評論