廣西財(cái)經(jīng)學(xué)院2022年C語言期末沖刺卷及答案_第1頁
廣西財(cái)經(jīng)學(xué)院2022年C語言期末沖刺卷及答案_第2頁
廣西財(cái)經(jīng)學(xué)院2022年C語言期末沖刺卷及答案_第3頁
廣西財(cái)經(jīng)學(xué)院2022年C語言期末沖刺卷及答案_第4頁
廣西財(cái)經(jīng)學(xué)院2022年C語言期末沖刺卷及答案_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

2/2廣西財(cái)經(jīng)學(xué)院C語言期末沖刺卷總分:100分 考試時(shí)間:90分鐘注意事項(xiàng):主觀題用黑色字跡的簽字筆作答(切勿使用其它顏色的簽字筆)。答題必須在標(biāo)準(zhǔn)答題卡上作答,凡答案寫在試卷、答卷、草稿紙上一律無效??荚嚱Y(jié)束,不得將試卷、答題卡或草稿紙帶出考場。一、理論基礎(chǔ)(每小題1分,共10分)1、判斷實(shí)數(shù)x屬于閉區(qū)間[a,b]的表達(dá)式為▁▁▁▁▁設(shè)a為整型變量,不能正確表達(dá)數(shù)學(xué)關(guān)系10<a<15的c語言表達(dá)是________。 A、a>10&&a<15 B、a>10||a<15 C、!(a<=10||a>=15) D、!(a<=10)&&!(a>=15)【答案】B2、若整型變量a、b、c、d中的值依次為:1、4、3、2,則條件表達(dá)式a<ba:c<dc:d的值是________。 A、1 B、2 C、3 D、4【答案】A【解析】本題考查的是條件表達(dá)式的嵌套。因?yàn)闂l件運(yùn)算符的結(jié)合方向?yàn)椤白杂抑磷蟆?,所以表達(dá)式a<ba:c<dc:d相當(dāng)于a<ba:(c<dc:d)。由于a=1,b=4,所以a<b的結(jié)果為“真”,整個(gè)表達(dá)式的值為a的值1。所以,4個(gè)選項(xiàng)中選項(xiàng)A)符合題意。3、以下敘述中正確的是________。 A、預(yù)處理命令行必須位于c源程序的起始位置 B、在c語言中,預(yù)處理命令行都以“#”開頭 C、每個(gè)c程序必須在開頭包含預(yù)處理命令行:#include D、C語言的預(yù)處理不能實(shí)現(xiàn)宏定義和條件編譯的功能【答案】B4、在c語言中,存儲(chǔ)一個(gè)字符型、整型、單精度實(shí)型變量所需的空間是________。型、單精度實(shí)型變量所需的空間是________。 A、1、2、4 B、1、1、4 C、1、2、8 D、2、2、8【答案】A5、各種運(yùn)算符間的優(yōu)先順序從高到低是________。 A、比較運(yùn)算符→算術(shù)運(yùn)算符→邏輯運(yùn)算符 B、比較運(yùn)算符→邏輯運(yùn)算符→算術(shù)運(yùn)算符 C、算術(shù)運(yùn)算符→比較運(yùn)算符→邏輯運(yùn)算符 D、算術(shù)運(yùn)算符→邏輯運(yùn)算符→比較運(yùn)算符【答案】C【解析】對于多種運(yùn)算的混合運(yùn)算,一定要記住它們之間的優(yōu)先級,否則就會(huì)得到不同的計(jì)算結(jié)果。6、c語言中運(yùn)算對象必須是整型的運(yùn)算符是________。 A、%= B、/ C、= D、〈=【答案】A7、程序必須在有限的步驟、有限的時(shí)間內(nèi)執(zhí)行完畢,指的是算法的()特點(diǎn) A、確定性 B、有窮性 C、可行性 D、輸入【答案】B8、若有以下定義和語句:doubler=99,*p=&r;*p=r;則以下正確的敘述是______。 A、以下兩處的*p含義相同,都說明給指針變量p賦值 B、在"doubler=99,*p=&r;"中,把r的地址賦值給了p所指的存儲(chǔ)單元 C、語句"*p=r;"把變量r的值賦給指針變量p D、語句"*p=r;"取變量r的值放回r中【答案】D9、下面程序段的功能是

#include<stdio.h>

main()

{

chars1;

s1=putc(getc(stdin),stdout);

} A、從鍵盤輸入一個(gè)字符給字符變量s1 B、從鍵盤輸入一個(gè)字符,然后再輸出到屏幕 C、從鍵盤輸入一個(gè)字符,然后在輸出到屏幕的同時(shí)賦給變量s1 D、在屏幕上輸出stdout的值【答案】C10、下列對整型常量定義的解釋中正確的是________。 A、034代表八進(jìn)制的數(shù)1C B、034代表十進(jìn)制的數(shù)34 C、034代表十六進(jìn)制的數(shù)28 D、34L代表值為34的64位長整數(shù)【答案】D【解析】034代表八進(jìn)制的數(shù)34,即十進(jìn)制數(shù)28,十六進(jìn)制的1C。34L表示長整型的數(shù)34(十進(jìn)制)。11、關(guān)于程序模塊化,以下敘述錯(cuò)誤的 A、程序模塊化可以提高程序運(yùn)行的效率 B、程序模塊化可以提高程序編制的效率 C、程序模塊化可以提高程序代碼復(fù)用率 D、程序模塊化可以提高調(diào)試程序的效率【答案】A12、設(shè)有定義:intn1=0,n2,*p=&n2,*q=&n1;,以下賦值語句中與n2=n1;語句等價(jià)的是________。 A、*p=*q; B、p=q; C、*p=&n1; D、p=*q;【答案】A13、有如下嵌套的if語句if(a<b)if(a<c)k=a;

elsek=c;

elseif(b<c)k=b;

elsek=c;

以下選項(xiàng)中與上述if語句等價(jià)的語句是________。 A、k=(a<b)?a:b;k=(b<c)?b:c; B、k=(a<b)?((b<c)?a:b):((b<c)?b:c); C、k=(a<b)?((a<c)?a:c):((b<c)?b:c); D、k=(a<b)?a:b;k=(a<c)?a;c【答案】C14、在下列選項(xiàng)中,不正確的表達(dá)式是________。 A、a>b>c B、c--,++b,a+=1 C、a=c+b>n-m=k D、p++【答案】C15、已知i,j,k為int型變量,若從鍵盤輸入:1,2,3<回車>,使i的值為1,j的值為2,k的值為3,以下選項(xiàng)中正確的輸入語句是________。 A、scanf(“%2d%2d%2d”,&i,&j,&k); B、scanf(“%d_%d_%d”,&i,&j,&k); C、scanf(“%d,%d,%d”,&i,&j,&k); D、scanf(“i=%d,j=%d,k=%d”,&i,&j,&k);【答案】C16、下列變量中合法的是 A、XX.Tom B、3a6b C、_6a7b D、$ABC【答案】C17、設(shè)ch是char型變量,其值為a,且有下面的表達(dá)式ch=(ch>='a'&&ch<='z')?(ch+32):ch。上面表達(dá)式的值是______。 A、A B、a C、Z D、z【答案】B18、表達(dá)式"~0x11"的值是________。 A、0xFFEE B、0x71 C、0x0071 D、0xFFEl【答案】A19、設(shè)整型變量m,n,a,b,c,d均為1,執(zhí)行(m=a>b)&&(n=c>d)后,m,n的值是________。 A、0,0 B、0,1 C、1,0 D、1,1【答案】B【解析】m=a>b結(jié)果為假,則m的值為0,n=c>d結(jié)果為假,n的值為0。20、下列字符序列中,可用作c標(biāo)識(shí)符的一組字符序列是________。 A、S.b,sum,average,_above B、class,day,lotus_1,2day C、#md,&12x,month,student_n! D、D56,r_1_2,name,_st_1【答案】D二、控制結(jié)構(gòu)(每小題1分,共10分)1、若inti=10;

執(zhí)行下列程序后,變量i的正確結(jié)果是________?

switch(i)

{

case0:i+=1;

case10:i+=1;

case11:i+=1;

default:i+=1;

} A、10 B、11 C、12 D、13【答案】D2、當(dāng)從鍵盤上輸入字符"12134211"下面程序的輸出結(jié)果是________。

main()

{

chars;

intv1=0,v2=0,v3=0,v4=0,k;

for(k=0;k<=7;k++)

{

scanf("%c",&s);

switch(s)

{

default:v4++;

case'1':v1++;

case'3':v3++;

case'2':v2++;

}

}

printf("v1=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4);

} A、v1=4,v2=2,v3=1,v4=1 B、v1=4,v2=9,v3=3,v4=1 C、v1=5,v2=8,v3=6,v4=1 D、v1=8,v2=8,v3=8,v4=8【答案】C3、設(shè)變量x和y均已正確定義并賦值。以下if語句中,在編譯時(shí)將產(chǎn)生錯(cuò)誤信息的是________。 A、if(x++); B、if(x>y&&y!=0); C、if(x>0)x-- D、if(y<0){;}【答案】C【解析】elsey++;elsex++;

本題考查的是if語句。if后表達(dá)式兩側(cè)的圓括號不可少,最后是一條語句或是用花括號括起來的一組語句。選項(xiàng)A和B是在表達(dá)式后跟了一條空語句,選項(xiàng)D是在表達(dá)式后跟了一組空語句,選項(xiàng)C中x--是表達(dá)式而不是語句,所以在編譯時(shí)會(huì)出現(xiàn)錯(cuò)誤信息。故本題答案選C。4、main()

{intx=1,a=0,b=0;

switch(x)

{case0:b++;

case1:a++;

case2:a++;b++;}

printf("a=%d,b=%d",a,b);}

該程序的輸出結(jié)果是() A、2,1 B、1,1 C、1,0 D、2,2【答案】A5、有以下程序

#include<stdio.h>

main()

{

inta=5,b=4,c=3,d=2;

if(a>b>c)

printf("%d\n",d);

elseif((c-1>=d)==1)

printf("%d\n",d+1);

else

printf("%d\n",d+2);

}

執(zhí)行后輸出的結(jié)果是________。 A、2 B、3 C、4 D、編譯時(shí)有錯(cuò),無結(jié)果【答案】B【解析】第二個(gè)if語句中的表達(dá)式“c-1>=d”的值為邏輯值1,所以該條件成立。6、設(shè)變量a、b、c、d和y都已正確定義并賦值。若有以下if語句:if(a<b)if(c==d)y=0;elsey=1;該語句所表示的含義是________。 A、y=0,a

y=1,a≥b B、y=0,a

y=1,a≥b且c≠d C、y=0,a

y=1,a<B且C≠D D、y=0,a

y=1,c≠d【答案】C7、以下敘述中正確的是________。 A、在C語言中,邏輯真值和假值分別對應(yīng)1和0 B、關(guān)系運(yùn)算符兩邊的運(yùn)算對象可以是語言中任意合法的表達(dá)式 C、對于浮點(diǎn)變量x和y,表達(dá)式:x==y是非法的,會(huì)出編譯錯(cuò)誤 D、分支結(jié)構(gòu)是根據(jù)算術(shù)表達(dá)式的結(jié)果來判斷流程走向的【答案】B【解析】A選項(xiàng)中,在C語言中,邏輯真值對應(yīng)非0;C選項(xiàng)中,表達(dá)式:x==y是合法的;D選項(xiàng)中,分支結(jié)構(gòu)的流程走向是根據(jù)表達(dá)式的值,并不僅僅是算數(shù)表達(dá)式的值。因此B選項(xiàng)正確。8、有以下定義語句:doublea,b;intw;longc;若各變量已正確賦值,則下列選項(xiàng)中正確的表達(dá)式是________。 A、a=a+b=b++ B、w%((int)a+b) C、(c+w)%(int)a D、w=a==b【答案】C【解析】選項(xiàng)A不是合法的賦值語句,將最右邊的第一個(gè)賦值表達(dá)式加括號即為a=a+(b=b++)才正確,故選項(xiàng)A不正確。選項(xiàng)B中運(yùn)算符%的對象必須是整型,而在選項(xiàng)B中(int)a+b為double型,故選項(xiàng)B不正確。a,b都為double型,應(yīng)當(dāng)避免使用a==b這樣的關(guān)系表達(dá)式,因?yàn)橥ǔ4娣旁趦?nèi)存中的實(shí)型數(shù)據(jù)是有誤差的,因此不可能精確相等,這將導(dǎo)致關(guān)系表達(dá)式a==b總為0。所以,4個(gè)選項(xiàng)中選項(xiàng)C符合題意。9、有以下程序

main()

{

inti=1,j=1,k=2;

if((j++‖k++)&&i++)

printf("%d,%d,%d\n",i,j,k);

}

執(zhí)行后輸出結(jié)果是________。 A、1,1,2 B、2,2,1 C、2,2,2 D、2,2,3【答案】C【解析】首先計(jì)算if語句后面的表達(dá)式值,先計(jì)算運(yùn)算符&&前面括號里的“||”運(yùn)算。在“||”運(yùn)算中先計(jì)算j++,值為1(j的值為2),為真,后面的k++將不再計(jì)算,k的值依舊為2。計(jì)算&&后面的表達(dá)式i++,值為1(i的值變?yōu)?)。整個(gè)表達(dá)式的值為真,所以執(zhí)行后面的輸出語句,最后輸出的i、j和k的值為2、2和2。10、switch語句不能用于下列哪種數(shù)據(jù)類型() A、double B、byte C、short D、char【答案】A【解析】swish語句中表達(dá)式expression只能返回這幾種類型的值:int、byte、short和char。如果比較的數(shù)據(jù)類型是double型,則不能使用switch結(jié)構(gòu)。三、循環(huán)結(jié)構(gòu)(每小題1分,共10分)1、下列程序的運(yùn)行結(jié)果是________。

voidmain()

{

ints=0,k;

for(k=7;k>1;k--)

{

switch(k)

{

case1:case4:case7:s++:break;

case2:case3:case6:break;

case0:case5:s+=2:break;

}

}

printf("s=%d",s);

} A、s=3 B、s=4 C、s=5 D、無輸出結(jié)果【答案】B2、若變量已正確定義,有以下程序段

i=0;

doprintf("%d,"i);

while(i++);

printf("%d\n",i);

其輸出結(jié)果是________。 A、0,0 B、0,1 C、1,1 D、程序進(jìn)入無限循環(huán)【答案】B3、執(zhí)行下面程序片段的結(jié)果是______。intx=23;

do

{

printf("%2d",x--);

}

while(!x); A、打印出321 B、打印出23 C、不打印任何內(nèi)容 D、陷入死循環(huán)【答案】B4、c語言中下列敘述正確的是_______。 A、不能使用do...while語句構(gòu)成的循環(huán) B、do...while語句構(gòu)成的循環(huán),必須用break語句才能退出 C、do...while語句構(gòu)成的循環(huán),當(dāng)while語句中的表達(dá)式值為非零時(shí)結(jié)束循環(huán) D、do...while語句構(gòu)成的循環(huán),當(dāng)while語句中的表達(dá)式值為零時(shí)結(jié)束循環(huán)【答案】D【解析】選項(xiàng)A是錯(cuò)誤的,C語言支持do…while語句;選項(xiàng)B是錯(cuò)誤的,do…while構(gòu)成的循環(huán),當(dāng)while語句中的表達(dá)式值為零時(shí)結(jié)束循環(huán),而不是非零;選項(xiàng)C也是錯(cuò)誤的。5、下面程序的運(yùn)行結(jié)果是________。

#include<stdio.h>

voidmain()

{

inty=10;

do

{

y--;

}

while(--y);

printf("%d\n",y--);

} A、-1 B、1 C、8 D、0【答案】A【解析】該題可以使用一個(gè)簡單的做法,要想程序退出循環(huán),則必--y的值為0,也就是退出循環(huán)是y的值為0。6、以下敘述中正確的是________。 A、do-while語句構(gòu)成的循環(huán)不能用其他語句構(gòu)成的循環(huán)來代替 B、do-while語句構(gòu)成的循環(huán)只能用break語句退出 C、用do-while語句構(gòu)成循環(huán)時(shí),只有在while后的表達(dá)式為非零時(shí)結(jié)束循環(huán) D、用do-while語句構(gòu)成循環(huán)時(shí),只有在while后的表達(dá)式為零時(shí)結(jié)束循環(huán)【答案】D7、定義如下變量:intn=10;

則下列循環(huán)的輸出結(jié)果是________。

while(n>7)

{

n--;

printf(''%d'',n);

} A、1098 B、987 C、10987 D、9876【答案】A8、有以下程序

main()

{

inta=15,b=21,m=0;

switch(a%3)

{

case0:m++;

break;

case1:m++;

switch(b%2)

{

default:m++;

case0:m++;

break;

}

}

printf("%d\n",m);

}

程序運(yùn)行后的輸出結(jié)果是______。 A、1 B、2 C、3 D、4【答案】A9、程序段如下:則以下說法中正確的是:

intk=5;

do

{

k--;

}

while(k<=0); A、循環(huán)執(zhí)行5次 B、循環(huán)是無限循環(huán) C、循環(huán)體語句一次也不執(zhí)行 D、循環(huán)體語句執(zhí)行一次【答案】D10、結(jié)構(gòu)化程序設(shè)計(jì)的3種結(jié)構(gòu)是________。 A、順序結(jié)構(gòu),分支結(jié)構(gòu),跳轉(zhuǎn)結(jié)構(gòu) B、順序結(jié)構(gòu),選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu) C、分支結(jié)構(gòu),選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu) D、分支結(jié)構(gòu),跳轉(zhuǎn)結(jié)構(gòu),循環(huán)結(jié)構(gòu)【答案】B【解析】程序設(shè)計(jì)語言僅僅使用順序、選擇和重復(fù)(循環(huán))三種基本控制結(jié)構(gòu)就足以表達(dá)出各種其他形式結(jié)構(gòu)的程序設(shè)計(jì)方法。遵循程序結(jié)構(gòu)化的設(shè)計(jì)原則,按結(jié)構(gòu)化程序設(shè)計(jì)方法設(shè)計(jì)出的程序易于理解、使用和維護(hù);可以提高編程工作的效率,降低軟件的開發(fā)成本。四、數(shù)組/指針數(shù)組(每小題1分,共10分)1、設(shè)有數(shù)組定義:chararray[]="china";則數(shù)組array所占的空間為________。 A、6字節(jié) B、5字節(jié) C、4字節(jié) D、7字節(jié)【答案】A【解析】在本題的定義方式中,系統(tǒng)會(huì)自動(dòng)在數(shù)組最后加入一個(gè)'\0',表示字符數(shù)組的結(jié)束,因此數(shù)組的長度是6個(gè)字節(jié)。2、以下不能對二維數(shù)組a進(jìn)行正確初始化的語句是________? A、inta[2][3]={0}; B、inta[][3]={{1,2},{0}}; C、inta[2][3]={{1,2},{3,4},{5,6}}; D、inta[][3]={1,2,3,4,5,6}【答案】C3、在下面語句中,其含義為"p為指向含n個(gè)元素的一維數(shù)組的指針變量"的定義語句是________。 A、intp[n] B、int*p(); C、int*p(n); D、int(*p)[n]【答案】D4、設(shè)有如下定義:char*aa[2]="abcd","abcd",則以下說法中正確的是________。 A、aa數(shù)組中元素的值分別是"abcd","ABCD"; B、aa是指針變量,它指向含有兩個(gè)數(shù)組元素的字符型一維數(shù)組 C、aa數(shù)組的兩個(gè)元素分別存放的是含有4個(gè)字符的一維字符數(shù)組的首地址 D、aa數(shù)組的兩個(gè)元素中各自存放了字符‘a(chǎn)’和‘A’的地址【答案】C【解析】aa數(shù)組被定義為字符型指針數(shù)組,有兩個(gè)元素,分別存放字符串"abcd"和"ABCD"的首地址。5、算法指的是________。 A、解決問題的方法、步驟和思路的一種描述 B、計(jì)算機(jī)程序 C、排序方法 D、數(shù)據(jù)處理【答案】A6、具有相同類型的指針變量p與數(shù)組a,不能進(jìn)行的操作是________。 A、p=a; B、*p=a[0]; C、p=&a[0]; D、p=&a;【答案】D7、若有以下說明和語句:intc[4][5],(*p)[5];p=c;能夠正確引用c數(shù)組元素的是________。 A、p+l B、*(p+3) C、*(p+1)+3 D、*(p[0]+2)【答案】D【解析】本題中定義了一個(gè)二維數(shù)組c和一個(gè)指針數(shù)組p,并初始化讓p指向c。顯然此時(shí)p中的各元素為地址,選項(xiàng)A中p+1,此時(shí)其中的1代表的長度是整個(gè)二維數(shù)組c的長度,故p+l將讓p指向c數(shù)組后面的元素,不能引用c數(shù)組中的成員,故選項(xiàng)A錯(cuò)誤;同理選項(xiàng)B和選項(xiàng)C都不正確,選項(xiàng)D中p[0]指的是指針數(shù)組中的第一個(gè)元素的地址即c的首地址,此時(shí)的1的長度代表的是數(shù)組C中一行的長度,故p[0]+2代表的是第3行的首地址,而*(p[0]+2)將代表第3行的第一個(gè)元素的地址,所以,4個(gè)選項(xiàng)中選項(xiàng)D符合題意。8、要定義一個(gè)字符串,下列選項(xiàng)中錯(cuò)誤的是________。 A、chars[5]="hello"; B、chars[]="hello"; C、char*s="hello"; D、chars[]={"h","e","l","l","o"};【答案】D【解析】定義字符數(shù)組,字符元素要用單引號括起來。9、已知:chars[100];inti;則引用數(shù)組元素的錯(cuò)誤的形式是________。 A、s[i+10] B、*(s+i) C、*(i+s) D、*((s++)+i)【答案】D10、若有以下語句,則正確的描述是chara[]="toyou";

charb[]={′t′,′o′,′y′,′o′,′u′}; A、a數(shù)組和b數(shù)組的長度相同 B、a數(shù)組長度小于b數(shù)組長度 C、a數(shù)組長度大于b數(shù)組長度 D、a數(shù)組等價(jià)于b數(shù)組【答案】C五、字符串/字符串指針(每小題1分,共10分)1、如果在一個(gè)運(yùn)算表達(dá)式中包含有邏輯運(yùn)算、關(guān)系運(yùn)算和算術(shù)運(yùn)算,并且其中未用圓括號規(guī)定這些運(yùn)算的先后順序,那么這樣的綜合型表達(dá)式的運(yùn)算順序是______。 A、邏輯→算術(shù)→關(guān)系 B、關(guān)系→邏輯→算術(shù) C、算術(shù)→邏輯→關(guān)系 D、算術(shù)→關(guān)系→邏輯【答案】D【解析】在VisualFoxPro中,運(yùn)算符類型主要有四種:算術(shù)運(yùn)算符、字符串運(yùn)算符、關(guān)系運(yùn)算符和邏輯運(yùn)算符,它們的運(yùn)算優(yōu)先級為:算術(shù)運(yùn)算符→字符串運(yùn)算符→關(guān)系運(yùn)算符→邏輯運(yùn)算符在進(jìn)行表達(dá)式求值時(shí),應(yīng)注意按照它們的優(yōu)先級進(jìn)行計(jì)算。2、下面程序段的運(yùn)行結(jié)果是char*s="abcde";s+=2;printf("%d",s); A、cde B、字符'c' C、字符'c'的地址 D、無確定的輸出結(jié)果【答案】C【解析】對于字符串指針,其保留的是整個(gè)串的首地址,即第一個(gè)字符的起始地址;當(dāng)該指針做算術(shù)運(yùn)算時(shí),就是該指針根據(jù)其類型向后移動(dòng)相應(yīng)的存儲(chǔ)空間。3、下面選項(xiàng)中合法的字符常量是________。 A、"X" B、'X' C、'abc' D、'\'【答案】B【解析】字符常量是用單引號括起來的一個(gè)字符。A選項(xiàng)中,使用雙引號,所以是錯(cuò)誤的;C選項(xiàng)中,abc是字符串,字符常量只能是單個(gè)字符,不能是字符串;D選項(xiàng)中,以反斜線"開頭的是轉(zhuǎn)義字符。因此B選項(xiàng)正確。4、chara[]="Thisisaprogram.";輸出前5個(gè)字符的語句是()。 A、printf("%.5s",a); B、puts(a); C、printf("%s",a); D、a[5*2]=0;puts(a);【答案】A5、請讀程序片段(字符串內(nèi)沒有空格字符):printf("%d\n",strlen("ats\n012\1\\"));

上面程序片段的輸出結(jié)果是______。 A、11 B、10 C、9 D、8【答案】C6、下面程序的功能是將字符串s中所有的字符'c'刪除。

#include"stdio.h"

main()

{

chars[80];

inti,j;

gets(s);

for(i=j=0;s[i]!='\0';i++)if(s[i]!='c');

s[j]='\0';

puts(s);

} A、s[j++]=s[i] B、s[++j]=s[i] C、s[j]=s[i];j++ D、s[j]=s[i]【答案】A7、下列數(shù)據(jù)中為字符串常量的是________? A、'A' B、"9" C、Howdoyoudo D、'$abd'【答案】B8、下面程序段輸出兩個(gè)字符串中對應(yīng)相等的字符。請分析程序填空。

charx[]="programming";

chary[]="fortran";

inti=0;

while(x[i]!='\0'&&y[i]!='\0')

if(x[i]==y[i])printf("%c",_____);

elsei++; A、x[i++] B、y[++i] C、x[i] D、y[i]【答案】A9、設(shè)有以下語句,若0<k<4,下列選項(xiàng)中對字符串的非法引用是()。

charstr[4][2]={"aaa","bbb","ccc","ddd"},*strp[4];

intj;

for(j=0;j<4;j++)

strp[j]=str[j]; A、strp B、str[k] C、strp[k] D、*strp【答案】A10、字符串"\\\"abc\"\\"的長度是______。 A、11 B、7 C、5 D、3【答案】B六、函數(shù)/函數(shù)指針(每小題1分,共10分)1、以下程序運(yùn)行后的輸出結(jié)果是

#include<stdio.h>

voidfun(inta,intb){

intt;

t=a;

a=b;

b=t;

}

main(){

intc[10]=1,2,3,4,5,6,7,8,9,0,i;

for(i=0;i<10;i+=2)fun(c[i],c[i+1]);

for(i=0;i<10;i++)prinff("%d,",c[i]);

printf("\n");

} A、1,2,3,4,5,6,7,8,9,0 B、2,1,4,3,6,5,8,7,0,9 C、0,9,8,7,6,5,4,3,2,1 D、0,1,2,3,4,5,6,7,8,9【答案】A【解析】fun函數(shù)無值返回。

main函數(shù)調(diào)用時(shí)數(shù)組元素作實(shí)參,形參的改變不會(huì)影響實(shí)參。因此,循環(huán)調(diào)用結(jié)束后,C數(shù)組沒有任何改變。2、以下敘述中錯(cuò)誤的是________。 A、C程序必須由一個(gè)或一個(gè)以上的函數(shù)組成 B、函數(shù)調(diào)用可以作為一個(gè)獨(dú)立的語句存在 C、若函數(shù)有返回值,必須通過咖語句返回 D、函數(shù)形參的值也可以傳回給對應(yīng)的實(shí)參【答案】D【解析】本題主要考查函數(shù)的概念。C語言規(guī)定,實(shí)參變量對形參變量的數(shù)據(jù)傳遞是“值傳遞”,即單向傳遞,只由實(shí)參傳給形參,而不能由形參傳回來給實(shí)參。由此可知選項(xiàng)D不正確,故應(yīng)該選擇D。3、若有定義:char*x="abcdefghi";以下選項(xiàng)中正確運(yùn)用了strcpy函數(shù)的是______。 A、chary[10];strcpy(y,x[4]); B、chary[10];strcpy(++y,&x[1]); C、chary[10],*s;strcpy(s=y+5,x); D、chary[10],*s;strcpy(s=y+1,x+1);【答案】D【解析】字符串復(fù)制函數(shù)strcpy調(diào)用形式為:“strcpy(s1,s2)”,其功能為把s2所指字符串的內(nèi)容復(fù)制到s1所指空間,函數(shù)返回s1的值,即目的串的首地址。為保證復(fù)制的合法性,s1必須指向一個(gè)足夠容納s2串的存儲(chǔ)空間。4、每個(gè)c程序中都必須有且僅有一個(gè)________。 A、類 B、預(yù)處理命令 C、主函數(shù) D、語句【答案】C【解析】每個(gè)C程序中都要有且僅有一個(gè)主函數(shù),該函數(shù)是程序的入口,而語句、預(yù)處理命令和函數(shù)及類在程序中都可以有多個(gè)。5、以下關(guān)于程序中函數(shù)的定義、調(diào)用和聲明的敘述中,正確的是______。 A、函數(shù)的定義必須放在該函數(shù)的調(diào)用之前 B、函數(shù)的聲明必須放在該函數(shù)的調(diào)用之前 C、函數(shù)的定義必須放在該函數(shù)的聲明之前 D、函數(shù)的聲明必須放在該函數(shù)的定義之前【答案】B【解析】在程序中,函數(shù)定義是指對函數(shù)的完整定義,包括函數(shù)首部和I函數(shù)體,函數(shù)調(diào)用是指對所定義函數(shù)的使用,一個(gè)函數(shù)只有被調(diào)用才能得到執(zhí)行。函數(shù)聲明是指函數(shù)的定義在后面,而前面需要對它進(jìn)行調(diào)用,這樣就需要預(yù)先進(jìn)行聲明,以便編洋程序檢查調(diào)用的合法性。一般來說,函數(shù)的聲明只是函數(shù)首部加上分號即可。函數(shù)聲明不是必需的,若函數(shù)調(diào)用在函數(shù)定義之后,則無須聲明。6、若主調(diào)用函數(shù)類型為double,被調(diào)用函數(shù)定義中沒有進(jìn)行函數(shù)類型說明,而return語句中的表達(dá)式類型為float型,則被調(diào)函數(shù)返回值的類型是__________。 A、int型 B、float型 C、double型 D、由系統(tǒng)當(dāng)時(shí)的情況而定【答案】A7、函數(shù)rewind的作用是()。 A、使位置指針重新返回文件的開頭 B、將位置指針指向文件中所要求的特定位置 C、使位置指針指向文件的末尾 D、使位置指針自動(dòng)移至下一個(gè)字符位置【答案】A8、以下關(guān)于return語句的敘述中不正確的是________。 A、一個(gè)自定義函數(shù)中必須有一條return語句 B、一個(gè)自定義函數(shù)中可以根據(jù)不同情況設(shè)置多條return語句 C、如果一個(gè)函數(shù)有多個(gè)return語句,那么不論運(yùn)行到哪一個(gè)return語句,該函數(shù)將結(jié)束 D、沒有return語句的自定義函數(shù)在執(zhí)行完最后一條語句時(shí)返回到調(diào)用處【答案】A【解析】return語句主要用于返回函數(shù)的值。在一個(gè)自定義函數(shù)中,可以根據(jù)不同的情況設(shè)置多條return語句返回函數(shù)的值,也可以不包含return語句。9、若調(diào)用一個(gè)函數(shù),且此函數(shù)中沒有return語句,則正確的說法是________。 A、該函數(shù)沒有返回值 B、該函數(shù)返回若干個(gè)系統(tǒng)默認(rèn)值 C、能返回一個(gè)用戶所希望的函數(shù)值 D、返回一個(gè)不確定的值【答案】D10、若已定義的函數(shù)有返回值,則以下關(guān)于該函數(shù)調(diào)用的敘述中錯(cuò)誤的是________。 A、函數(shù)調(diào)用可以作為獨(dú)立的語句存在 B、函數(shù)調(diào)用可以作為一個(gè)函數(shù)的實(shí)參 C、函數(shù)調(diào)用可以出現(xiàn)在表達(dá)式中 D、函數(shù)調(diào)用可以作為一個(gè)函數(shù)的形參【答案】D七、指針(每小題1分,共10分)1、閱讀以下程序

#include<stdio.h>

main()

{

intcase;

floatprintf;

printf("請輸入2個(gè)數(shù):");

scanf("%d%f",&case,&printf);

printf("%d%f\n",case,printf);

}

該程序在編譯時(shí)產(chǎn)生錯(cuò)誤,其出錯(cuò)原因是________。 A、定義語句出錯(cuò),case是關(guān)鍵字,不能用作用戶自定義標(biāo)識(shí)符 B、定義語句出錯(cuò),printF不能用作用戶自定義標(biāo)識(shí)符 C、定義語句無錯(cuò),scanf不能作為輸入函數(shù)使用 D、定義語句無措,printf不能輸出case的值【答案】A2、考慮函數(shù)原型voidtest(inta,intb=7,charz='*'),下面的函數(shù)調(diào)用中,屬于不合法調(diào)用的是________。 A、test(5); B、test(5,8); C、test(6,'#'); D、test(0,0,'*');【答案】C【解析】題中函數(shù)聲明帶有默認(rèn)參數(shù),那么在C選項(xiàng)的調(diào)用中,將會(huì)把字符型實(shí)參#賦值給整型形參b,這不符合參數(shù)傳遞規(guī)則。3、下面程序的運(yùn)行結(jié)果是

#include<stdio.h>

main()

{

inta=28,b;

chars[10],*p;

p=s;

do

{

b=a%16;

if(b<10)*p=b+48;

else*p=b+55;

p++;

a=a/5;

}

while(a>0);

*p='\0';

puts(s);

} A、10 B、C2 C、C51 D、\0【答案】C【解析】考查用字符指針處理字符串的方法。[解題要點(diǎn)]語句“p=s;”是使指針P指向字符數(shù)組s。*p則引用了p所指位置的數(shù)組元素。[考點(diǎn)鏈接]通過指針來引用一維數(shù)組元素。4、對下述程序的判斷中,正確的是________。

main()

{

char*p,s[256];

p=s;

while(strcmp(s,"theend"))

{

printf("inputthestring:");

gets(s);

while(*p)putchar(*p++);

}

} A、此程序循環(huán)接收字符串并輸出,直到接收到字符串“theend”為止 B、此程序循環(huán)接收字符串,接收到字符串“theend”則輸出,否則程序終止 C、此程序循環(huán)接收字符串并輸出,直到接收字符串“theend”為止,但因?yàn)榇a有錯(cuò)誤,程序不能正常工作 D、此程序循環(huán)接收字符串并將其連接在一起,直到接收字符串“theend”為止,輸出連接在一起的字符串【答案】C5、若在某函數(shù)內(nèi)部有定義:inta[3][4];則數(shù)組a中各元素________。 A、可在程序的運(yùn)行階段得到初值0 B、可在程序的編譯階段得到初值0 C、不能得到確定的初值 D、可在程序的編譯或運(yùn)行階段得到初值0【答案】C【解析】在函數(shù)內(nèi)部定義的存儲(chǔ)類型為auto的變量或數(shù)組,如果沒有進(jìn)行初始化,就不能得到確定值。6、下列選項(xiàng)中合法的數(shù)組定義是________。 A、inta[]="string"; B、inta[5]={

0,1,2,3,4,5}; C、chara="sting"; D、chara[]={

0,1,2,3,4}【答案】A7、下列關(guān)于函數(shù)參數(shù)的敘述中,正確的是________。 A、在函數(shù)原型中不必聲明形參類型 B、函數(shù)的實(shí)參和形參共享內(nèi)存空間 C、函數(shù)形參的生存期與整個(gè)程序的運(yùn)行期相向 D、函數(shù)的形參在函數(shù)被調(diào)用時(shí)獲得初始值【答案】D8、設(shè)有如下函數(shù)定義:intfun(intk)

{

if(k<1)return0;

elseif(k==l)returnl;

elsereturnfun(k-1)+1:

}

若執(zhí)行調(diào)用語句:"n=fun(3);

",則函數(shù)fun總共被訶用的次數(shù)是________。 A、2 B、3 C、4 D、5【答案】B9、有如下定義:inta[5]={1,3,5,7,9},*p=a;下列表達(dá)式中不能得到數(shù)值5的是________。 A、a[2] B、a[3] C、*(p+2) D、*p+4【答案】B10、下面程序的運(yùn)行結(jié)果是

#include<stdio.h>

main()

{

chara[]="morning",t;

inti,j=0;

for(i=1;i<7;i++){

if(a[j]<a[i]){

j=i;

t=a[j];

a[j]=a[7];

a[7]=a[j];

}

}

printf("%s",a);

} A、mrgninr B、m C、moring D、morning【答案】B【解析】本題考查了一維數(shù)組元素的引用方法。題中數(shù)組a為一字符串?dāng)?shù)組,通過數(shù)組首地址和下標(biāo)可以引用數(shù)組中的每個(gè)元素。因?yàn)樽址麛?shù)組相當(dāng)于字符串八、結(jié)構(gòu)體(每小題1分,共10分)1、設(shè)有以下說明語句:

typedefstructstu

{

inta;

floatb;

}stutype;

則下面敘述中錯(cuò)誤的是________。 A、struct是結(jié)構(gòu)類型的關(guān)鍵字 B、structstu是用戶定義的結(jié)構(gòu)類型 C、a和b都是結(jié)構(gòu)成員名 D、stutype是用戶定義的結(jié)構(gòu)體變量名【答案】C2、設(shè)有如下定義:

structsk

{

intn;

floatx;

}data,*p;

若要使p指向data中的n域,正確的賦值語句是________。 A、p=&datn; B、*p=datn; C、p=(structsk*)&datn; D、p=(structsk*)datn;【答案】C【解析】本題主要考查了結(jié)構(gòu)體變量引用成員數(shù)據(jù)的方法,主要有以下幾種:結(jié)構(gòu)體變量名,成員名或結(jié)構(gòu)體指針->,成員名的方法來引用結(jié)構(gòu)體成員。3、enuma

{

sum=9,mon=-1,tue

}

;

定義了________。 A、枚舉變量 B、3個(gè)標(biāo)識(shí)符 C、枚舉數(shù)據(jù)類型 D、整數(shù)9和-1【答案】C4、設(shè)有如下定義:

structsk

{

inta;

floatb;

}

data,*p;

若有p=&data;

,則對data中的a域的正確引用是______。 A、(*p).data.a B、(*p).a C、p->data.a D、p.data.a【答案】B5、若有定義:

structkeyword

{

charkey[20];

intid;

}

kw[]={"void",1,"char",2,"int",3,"float",4,"double",5};

則printf("%c,%d\n",kw[3].key[0],kw[3].id);

語句的輸出結(jié)果為________。 A、i3 B、n3 C、f4 D、l4【答案】C【解析】kw[3].Key[0]是第4個(gè)元素中key數(shù)組的第1個(gè)字符即f;

kw[3].ID是第4個(gè)元素中成員ID值;6、當(dāng)定義一個(gè)結(jié)構(gòu)體變量時(shí),系統(tǒng)為它分配的內(nèi)存空間是________。 A、結(jié)構(gòu)中一個(gè)成員所需的內(nèi)存容量 B、結(jié)構(gòu)中第一個(gè)成員所需的內(nèi)存容量 C、結(jié)構(gòu)體中占內(nèi)存容量最大者所需的容量 D、結(jié)構(gòu)中各成員所需內(nèi)存容量之和【答案】D7、設(shè)有以下語句:

typedefstructtt{charc;inta[4];}cin;則下面敘述中正確的是________。 A、可以用TT定義結(jié)構(gòu)體變量 B、TT是struct類型的變量 C、可以用CIN定義結(jié)構(gòu)體變量 D、CIN是structTT類型的變量【答案】C【解析】將題目中的定義語句去掉前面的typedef和后面的CIN(分號保留),就是一條完整的結(jié)構(gòu)體定義語句,其中struct是說明符,TT是結(jié)構(gòu)體名,大括號里面的是結(jié)構(gòu)體成員的定義。此時(shí)要聲明該結(jié)構(gòu)體變量時(shí)需要使用struct加結(jié)構(gòu)體名一起來聲明,structTT一起構(gòu)成一個(gè)結(jié)構(gòu)體類型,就好像字符類型char。若只去掉前面的typedef,就是一條結(jié)構(gòu)體定義同時(shí)聲明個(gè)結(jié)構(gòu)體變量CIN的語句,因?yàn)镃IN的前面部分是structTT的完整寫法,可以看作是structTT。C語言允許用typedef說明一種新類型名,其語法格式為:

typedef類型名標(biāo)識(shí)符;

以后就可以用該標(biāo)識(shí)符來代替被說明的類型名了。因此,當(dāng)前面存在typedef時(shí),該語句就變成了給structTT的定義一個(gè)新的名稱CIN。所以,此時(shí)的CIN是一個(gè)結(jié)構(gòu)體類型,它相當(dāng)于structTT,即可以和char一樣單獨(dú)用來聲明該結(jié)構(gòu)體變量,而TT只是一個(gè)結(jié)構(gòu)體名,不能單獨(dú)用來聲明變量。所以,4個(gè)選項(xiàng)中C符合題意。8、下面關(guān)于主程序的說法,錯(cuò)誤的是________。 A、a.next=q; B、p.next=&b; C、p->next=&b; D、(*p).next=q;【答案】B【解析】要把結(jié)點(diǎn)b連接到結(jié)點(diǎn)a之后,必須把b的地址給a的next指針,選項(xiàng)A)中,指針變量q保存的就是變量b的地址,選項(xiàng)B)中的p是指針變量,應(yīng)該是p->next=&b;在選項(xiàng)D)中,用*運(yùn)算符取出結(jié)構(gòu)體變量,并且保存的就是b的地址,所以正確。9、c語言結(jié)構(gòu)體類型變量在程序執(zhí)行期間,________。 A、所有成員一直駐留在內(nèi)存中 B、沒有成員駐留在內(nèi)存中 C、部分成員駐留在內(nèi)存中 D、只有一個(gè)成員駐留在內(nèi)存中【答案】A10、有以下程序

structstu

{

charnum[10];

floatscore[3];

};

main()

{

structstus[3]={{"20021",90,95,85},{"20022",95,80,75},{"20023",100,95,90}},*p;

inti;

floatsum=0;

p=s+2;

for(i=0;i<3;i++)sum=sum+p->score[i];

printf("%6.2f\n",sum);

}

程序運(yùn)行后的輸出結(jié)果是________。 A、250.00 B、250 C、285.00 D、285【答案】C九、程序題(每小題1分,共10分)1、有以下程序

main()

{

inta[3][3],*p,i;

p=&a[0][0];

for(i=0;i<9;i++)p[i]=i+1;

printf("%d\n",a[1][2]);

}

程序運(yùn)行后的輸出結(jié)果是________。 A、3 B、6 C、9 D、2【答案】B2、有以下程序:

#include

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論