湖南中醫(yī)藥大學(xué)C語言程序設(shè)計期末模擬考試及答案_第1頁
湖南中醫(yī)藥大學(xué)C語言程序設(shè)計期末模擬考試及答案_第2頁
湖南中醫(yī)藥大學(xué)C語言程序設(shè)計期末模擬考試及答案_第3頁
湖南中醫(yī)藥大學(xué)C語言程序設(shè)計期末模擬考試及答案_第4頁
湖南中醫(yī)藥大學(xué)C語言程序設(shè)計期末模擬考試及答案_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2/2C語言程序設(shè)計期末模擬考試一、理論基礎(chǔ)(每小題1分,共10分)1、流程圖中,輸入/輸出框用()圖形表示? A、圓角矩形 B、平行四邊形 C、矩形 D、菱形【答案】B2、下面不是c語言整形常數(shù)的是________。 A、02 B、0 C、038 D、0Xal【答案】C3、一個漢字的國標(biāo)碼需用2字節(jié)存儲,其每個字節(jié)的最高二進制位的值分別為______。 A、00 B、10 C、01 D、11【答案】A4、下列屬于c語言合法的字符常數(shù)是______。 A、’\97’ B、"A" C、’\t’ D、"\0\【答案】C【解析】C語言中字符常數(shù)是單引號括住的單個字符或轉(zhuǎn)義字符,轉(zhuǎn)義字符為“\”后跟一個特定字符或八進制或十六進制的整數(shù)。八進制數(shù)前面可以加0也可以不加0,十六進制前面只能加0x。所以本題中,首先可以排除選項B和選項D,由于選項A中,97不是一個正確的八進制數(shù),也不是正確的十六進制數(shù),而選項C是正確的字符常數(shù),它代表的是字符制表符tab。5、在標(biāo)準(zhǔn)ascⅱ編碼表中,數(shù)字碼、小寫英文字母和大寫英文字母的前后次序是________。 A、數(shù)字、小寫英文字母、大寫英文亨母 B、小寫英文字母、大寫英文字母、數(shù)字 C、數(shù)字、大寫英文字母、小寫英文字母 D、大寫英文字母、小寫英文字母、數(shù)字【答案】C【解析】在標(biāo)準(zhǔn)ASCⅡ碼表中,數(shù)字碼、小寫英文字母和大寫英文字母的前后次序是:數(shù)字、大寫英文字母、小寫英文字母。6、以下選項中不正確的字符常量是________。 A、'1' B、'\0' C、'%d' D、'\\'【答案】C7、一個漢字的內(nèi)碼長度為2字節(jié),其每個字節(jié)的最高二進制位的值分別為______。 A、0,0 B、1,1 C、1,0 D、0,1【答案】B【解析】漢字的內(nèi)碼=漢字的國標(biāo)碼+8080H,所以漢字內(nèi)碼的最高位為1。8、下列四個不同數(shù)制表示的數(shù)中,數(shù)值最大的是________。 A、二進制數(shù)11011101 B、八進制數(shù)334 C、十進制數(shù)219 D、十六進制數(shù)DA【答案】A【解析】化為十進制數(shù),二進制數(shù)11011101=221;八進制數(shù)334=210;十進制數(shù)219;十六進制數(shù)DA=218。9、整型變量x=1,y=3,經(jīng)下列計算后,x的值不等于6的是________。 A、x=(x=1+2,x*2) B、x=y>2?6:5P60條件運算符 C、x=9-(--y)P29 D、x=y*4/2【答案】C【解析】B選項y>2?6:5如果y>2,則表達式的值是6,并將值賦給變量x,x=6;否則表達式的值是5,并將值賦給變量x,x=5。C選項x=9-(--y)=7,--y為先自減1再參與運算,y--為先運算再自減1,例如x=9-(y--)=6(運算時y=3,運算結(jié)束y=2)10、下列標(biāo)識符,不合法的是________。 A、abc B、_d C、123 D、e1【答案】C【解析】123不是合法的標(biāo)識符,標(biāo)識符不能以數(shù)字開頭。11、設(shè)有定義:floata=2,b=4,h=3;,以下c語言表達式與代數(shù)式計算結(jié)果不相符的是________。 A、(a+b)*h/2 B、(1/2)*(a+b)*h C、(a+b)*h*1/2 D、h/2*(a+b)【答案】B12、59,73,83,94,() A、107 B、101 C、105 D、113【答案】A【解析】44+4+4=52,52+5+2=59,59+5+9=73,73+7+3=83,83+8+3=94,94+9+4=107,選A。13、下列條件語句中輸出結(jié)果與其他語句不同的是________。 A、if(a)printf(“%d\n”,x);

elseprintf(“%d\n”,y); B、if(a==0)printf(“%d\n”,y);

elseprintf(“%d\n”,x); C、if(a!=0)printf(“%d\n”,x);

elseprintf(“%d\n”,y); D、if(a==0)printf(“%d\n”,x);

elseprintf(“%d\n”,y);【答案】D14、語句組intx;printf("%d",((x=4*5,x*5),x+25)); A、125 B、100 C、45 D、20【答案】C15、在c語言程序中可用做用戶標(biāo)識符的是________。 A、void

123

BBN B、aa

_abc

cas C、as+b3

-123

If D、6f

Do

SIG【答案】B16、表達式3!=3的值是________? A、0 B、1 C、true D、false【答案】A17、十六進制數(shù)100轉(zhuǎn)換為十進制數(shù)為 A、256 B、512 C、1024 D、64【答案】A【解析】把非十進制數(shù)轉(zhuǎn)換為十進制可采用按權(quán)展開求和的方法,此題為:1X162+oxl61+0x160,計算得到256。18、以下不能作為合法常量的是________。 A、011 B、1e1 C、8.0E0.5 D、115【答案】C19、在c語言中,不正確的int類型的常數(shù)是______。 A、32768 B、0. C、037 D、0xAF【答案】A20、已有定義intk=2;

int*p1,*p2;

且p1,p2均指向變量k,下面不能正確執(zhí)行的賦值語句是________。 A、k=*p1+*p2; B、p2=k; C、p1=p2; D、k=*p1*(*p2);【答案】B二、控制結(jié)構(gòu)(每小題1分,共10分)1、下列表達式為關(guān)系表達式的為_________。(其中a為一整型變量) A、3+4*5 B、a==10 C、a>0a:-a D、a=1【答案】B2、在c語言中,if語句后的一對原括號中,用以決定分支的流程的表達式________。 A、只能用邏輯表達式 B、只能用關(guān)系表達式 C、只能用邏輯表達式或關(guān)系表達式 D、可用任意表達式【答案】D3、有以下程序

#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、編譯時有錯,無結(jié)果【答案】B【解析】第二個if語句中的表達式“c-1>=d”的值為邏輯值1,所以該條件成立。4、switch語句中表達式(expression)的值不允許用的類型是________。 A、byte B、int C、boolean D、char【答案】C【解析】switch語句用于多重選擇,其參數(shù)可以是字節(jié)型、整型或字符型;而布爾型只有兩個值(True、False),一般用于if語句。5、switch語句不能用于下列哪種數(shù)據(jù)類型() A、double B、byte C、short D、char【答案】A【解析】swish語句中表達式expression只能返回這幾種類型的值:int、byte、short和char。如果比較的數(shù)據(jù)類型是double型,則不能使用switch結(jié)構(gòu)。6、將三個數(shù)排序需要比較________次。 A、2 B、3 C、4 D、不確定【答案】B7、若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【答案】D8、執(zhí)行以下程序段后,w的值為________。

intw='a',x=14,y=15;w=((x||y)&&(w<'a')); A、-1 B、NULL C、1 D、0【答案】C【解析】字符變量w的初值為字符'A',其ASCII碼值為65,字符'a'的ASCII碼值為97,所以關(guān)系表達式w<'a'的值為1;變量x=14,變量y=15,x||y為或,x、y均為真,所以x||y的結(jié)果1。因而邏輯表達式(x||y)&&(w<'a')的值為1。9、以下程序的輸出結(jié)果是

main()

{

inta=0,i;

for(i=;i<5;i++)

{

switch(i)

{

case0:case3:a+=2;

case1:case2:a+=3;

default:a+=5;

}

}

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

} A、31 B、13 C、10 D、20【答案】A10、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【答案】A三、循環(huán)結(jié)構(gòu)(每小題1分,共10分)1、有以下程序

main()

{

intk=4,n=0;

for(;n<k;)

{

n++;

if(n%3!=0)continue;

k--;

}

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

}

程序運行后的輸出結(jié)果是________。 A、1,1 B、2,2 C、3,3 D、4,4【答案】C2、以下程序中,while循環(huán)的循環(huán)次數(shù)是______。

main()

{

inti=0;

while(i<10)

{

if(i<1)continue;

if(i==5)break;

i++;

}

} A、1 B、10 C、6 D、死循環(huán)【答案】D3、有以下程序:

main()

{

ints=0.n;

for(n=0;n<3;n++)

{

switch(s)

{

case0;

case1:s+=1;

case2:s+=2;

break;

case3:s+=3;

default:s+=4;

}

printf("%d,"s);

}

}

程序運行后的輸出結(jié)果是________。 A、1,2,4, B、1,3,6, C、3,10,14, D、3,6,10,【答案】C4、有如下程序

#include<stdio.h>

voidmain()

{

intx=23;

do

{

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

}

while(!x);

}

該程序的執(zhí)行結(jié)果是_________。 A、321 B、23 C、不輸出任何內(nèi)容 D、陷入死循環(huán)【答案】B5、若變量已正確定義,要求程序段完成求5!的計算,不能完成此操作的程序段是________。 A、for(i=1,p=1;i<=5;i++)p*=i; B、for(i=1;i<=5;i++){p=1;p*=i;} C、i=1;p=1;while(i<=5){p*=i;i++}; D、i=1;p=1;do{p*=i;i++;}while(1<=5)【答案】B【解析】選項B中for循環(huán)了5次,而每次循環(huán)的時候,都將p的值重新賦值為1后,再乘以當(dāng)前數(shù)字i,最后的結(jié)果為5,顯然不是5!的值,同樣的分析可知選項A、選項C和選項D計算的都是5!。所以,4個選項中選項B符合題意。6、以下for語句中不是死循環(huán)的是________。 A、for(inti=0;i<1;i++); B、for(inti=0;i++); C、for(inti=1;i>0;++i); D、for(;;);【答案】A【解析】考查循環(huán)語句for的使用。

[解題要點]for循環(huán)的一般格式為for(初始化部分;終止條件判斷部分;迭代部分){循環(huán)體;}說明如下:for循環(huán)開始時,首先執(zhí)行初始化操作,然后判斷終止條件是否滿足,如果滿足,則執(zhí)行循環(huán)體中的語句,最后執(zhí)行迭代部分。完成一次循環(huán)后,重新判斷終止條件。

[錯解分析]在for語句中,如果省略了終止條件判斷部分,開且在語句中沒有break,或者是終止條件判斷部分始終沒有終止,都將出現(xiàn)死循環(huán)。

[考點鏈接]for循環(huán)語句可由while循環(huán)語句來代替。7、下列語句中執(zhí)行跳轉(zhuǎn)功能的語句是________。 A、for語句 B、while語句 C、continue語句 D、switch語句【答案】C【解析】for語句和while語句都是循環(huán)控制語句;switch語句是多分支語句;選項C的continue語句是跳轉(zhuǎn)語句,continue語句跳過循環(huán)體中下面尚未執(zhí)行的語句,回到循環(huán)體的開始繼續(xù)下一輪的循環(huán)。8、下面程序的運行結(jié)果是________。

main()

{

intm=7,n=5,i=1;

do

{

if(i%m==0);

if(i%n==0)

{

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

break;

}

i++;

}

while(i!=0);

} A、7 B、6 C、5 D、4【答案】C9、定義如下變量:intn=10;則下列循環(huán)的輸出結(jié)果是________?

while(n>7)

{

n--;

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

} A、10

9

8 B、9

8

7 C、10

9

8

7 D、9

8

7

6【答案】B10、下列語句中,可以作為無限循環(huán)語句的是________。 A、for(;;) B、for(inti=0;i<10000;i++) C、while(false) D、do)while(false)【答案】A【解析】B的循環(huán)終止條件為10000,CD的終止條件為常量false,都不能無限循環(huán)。四、數(shù)組/指針數(shù)組(每小題1分,共10分)1、以下函數(shù)的功能是:通過鍵盤輸入數(shù)據(jù),為數(shù)組中的所有元素賦值。#defineN10

voidarrin(intx[N])

{

inti=0;

while(i<N)scanf("%d",______);

}

在下劃線處應(yīng)填入的是______。 A、x+i B、&x[i+1] C、&x[i++] D、&x[++i]【答案】C2、在c語言中,引用數(shù)組元素時,其數(shù)組下標(biāo)的數(shù)據(jù)類型允許是________。 A、整型表達式 B、整型常量 C、整型常量或整型表達式 D、任何類型的表達式【答案】C【解析】在C語言中,引用數(shù)組元素時,其數(shù)組下標(biāo)的數(shù)據(jù)類型可以是整型常量,也可以是整型表達式。3、下列一維數(shù)組初始化語句中,正確且與語句floata[]={0,3,8,0,9};等價的是__________. A、floata[6]={

0,3,8,0,9}; B、floata[4]={

0,3,8,0,9}; C、floata[7]={

0,3,8,0,9}; D、floata[5]={

0,3,8,0,9};【答案】D4、數(shù)組inta[3][4];其中錯誤的數(shù)組引用為________。 A、a[0][0] B、a[1][3] C、a[3][3] D、a[0]【答案】C5、若已定義:inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,則對a數(shù)組元素的引用不正確的是________。 A、a[p-a] B、*(&a[i]) C、p[i] D、*(*(a十i))【答案】D6、以下語句或語句組中,能正確進行字符串賦值的是________。 A、char*sp;*sp="right!"; B、chars[10];s="right!"; C、chars[10];*s="right!"; D、char*sp="right!";【答案】D【解析】本題考查了考生對字符串常量的理解。字符串常量是一段以雙引號括起來的字符序列,它既可以出現(xiàn)在對字符數(shù)組的初始化中,也可以出現(xiàn)在表達式中。當(dāng)它用于對字符數(shù)組的初始化時,應(yīng)注意系統(tǒng)自動為其添加的結(jié)束標(biāo)志'\0'。而當(dāng)它出現(xiàn)在表達式中時,應(yīng)該將其看作一個constchar*類型的指針常量。在選項A中,首先定義了一個字符指針sp,然后將一個字符串賦給甲所指的地址,這是錯誤的。因為sp是一個未經(jīng)初始化的野指針,不知其指向哪兒,往一個不確定的地址中寫數(shù)據(jù)很容易讓程序出錯。選項B首先定義了一個字符數(shù)組,然后將一個字符串賦給數(shù)組名,這是錯誤的。因為數(shù)組名是一個指針常量,不可以被改變。選項C首先定義了一個字符數(shù)組,然后將一個字符串賦給數(shù)組的第一個元素,這也是錯誤的。因為字符串在表達式中相當(dāng)于一個常字符指針,將一個指針值賦給一個字符型變量是行不通的。選項D是定義一個字符指針sp,同時使其指向一個字符串常量,即將一個常字符型指針賦給sp。這是可行的。所以,4個選項中選項D符合惠意。7、以下敘述中正確的是________。 A、語句inta[8]={0};是合法的 B、語句inta={0};是不合法的,遺漏了數(shù)組的大小 C、語句chara[2]={"A","B"};是合法的,定義了一個包含兩個字符的數(shù)組 D、語句char[3];a="AB";是合法的,因為數(shù)組有三個字符空間的容量,可以保存兩個字符【答案】A【解析】B選項中,如給全部元素賦值,則在數(shù)組說明中,可以不給出數(shù)組元素的個數(shù);C選項中,char2={

ab不合法,應(yīng)為char【2】={

a,"}選項中,用字符串方式賦值比用字符逐個賦值要多占1個字節(jié),在該選項中應(yīng)為3個字節(jié)。因此A選項正確。8、數(shù)組a[1..5,1..6]的每個元素占5個單元,將其按行優(yōu)先順序存儲在起始地址為1000的連續(xù)的內(nèi)存單元中,則元素a[5,5]的地址為(15)。 A、1140 B、1145 C、1120 D、1125【答案】A【解析】注意是按行優(yōu)先順序存儲。9、若有定義:inta[4][10];則以下選項中對數(shù)組元素a[i][j]引用錯誤的是______。(0<=i<4,0<=j<10) A、*(&a[0][0]+10*i+j) B、*(a+i)+j C、*(*(a+i)+j) D、*(a[i]+【答案】B【解析】本題中選項B是錯誤的引用,*(a+i)+j只代表了a[i][j]的地址。10、設(shè)有如下定義:char*aa[2]="abcd","abcd",則以下說法中正確的是________。 A、aa數(shù)組中元素的值分別是"abcd","ABCD"; B、aa是指針變量,它指向含有兩個數(shù)組元素的字符型一維數(shù)組 C、aa數(shù)組的兩個元素分別存放的是含有4個字符的一維字符數(shù)組的首地址 D、aa數(shù)組的兩個元素中各自存放了字符‘a(chǎn)’和‘A’的地址【答案】C【解析】aa數(shù)組被定義為字符型指針數(shù)組,有兩個元素,分別存放字符串"abcd"和"ABCD"的首地址。五、字符串/字符串指針(每小題1分,共10分)1、以下選項中能表示合法常量的是________。 A、整數(shù):1,200 B、實數(shù):1.5E2.0 C、字符斜杠:"\" D、字符串:"\007"【答案】D2、下列選項中,表示字符串末尾的結(jié)束標(biāo)志是________。 A、'\n' B、'\r' C、'\0' D、NULL【答案】C【解析】字符串末尾結(jié)束標(biāo)志為'\0'3、若輸入字符串:abcde<回車>,則以下while循環(huán)體將執(zhí)行多少次。while((ch=getchar())!='e')printf("*"); A、5 B、4 C、6 D、1【答案】B4、下面選項中合法的字符常量是________。 A、"X" B、'X' C、'abc' D、'\'【答案】B【解析】字符常量是用單引號括起來的一個字符。A選項中,使用雙引號,所以是錯誤的;C選項中,abc是字符串,字符常量只能是單個字符,不能是字符串;D選項中,以反斜線"開頭的是轉(zhuǎn)義字符。因此B選項正確。5、下列字符常量的寫法中,正確的是________。 A、'abc' B、'\5A' C、A D、'\73'【答案】D【解析】選項A不是一個字符常量,因為C++基本數(shù)據(jù)類型中不存在與其相對應(yīng)的類型,如果將起止符號改為雙引號,它就是一個字符串類型的常量。選項B中缺少開始標(biāo)記字母x。選項C中的字符A沒有用單引號括起來,只能看成一個標(biāo)識符。6、宏定義是最常用的預(yù)處理功能之一,它用于將一個標(biāo)識符定義為一個______ A、單精度數(shù) B、雙精度數(shù) C、常量 D、字符串【答案】D【解析】宏定義是最常用的預(yù)處理功能之一,它用于將一個標(biāo)識符定義為一個字符串。這樣,在源程序被編譯器處理之前,預(yù)處理器會將標(biāo)識符替換成所定義的字符串。7、以下能正確定義字符串的語句是________。 A、charstr[]={′\064′}; B、charstr="kx43"; C、charstr="; D、charstr[]="\0";【答案】D8、下列字符串中可以用作c標(biāo)識符的是________。 A、2009var B、goto C、test-2009 D、-123【答案】D【解析】在C中,變量標(biāo)識符必須以大小寫字母或下畫線開始,是由數(shù)字或者字母下畫線等組成的一個字符串,其中C++關(guān)鍵字不能作為標(biāo)識符,不能包含-、+、*、/等運算符號。C++變量區(qū)分大小寫。9、下面描述正確的是________。 A、兩個字符串包含的字符個數(shù)相同時,才能比較字符串 B、字符個數(shù)多的字符串比字符個數(shù)少的字符串大 C、字符串"STOP"與"STOP■"相等 D、字符串"That"小于字符串"The"【答案】D10、下列關(guān)于串的敘述中,哪一條是正確的() A、串是由至少1個字符組成的有限序列 B、串中字符的數(shù)目就是串的長度 C、空串就是由空格構(gòu)成的串 D、串只能順序存儲【答案】B【解析】串(或字符串)是由零個或多個字符組成的有限序列,零個字符的串是空串,串中字符的數(shù)目就是串的長度,串的存儲方式有順序存儲和鏈?zhǔn)酱鎯煞N。串的基本運算有連接、賦值、求長度、全等比較、求子串、找子串位置以及替換等。六、函數(shù)/函數(shù)指針(每小題1分,共10分)1、假設(shè)有語句sizeof(double),則它是________。 A、一個整型表達式 B、一個雙精度浮點型表達式 C、一種函數(shù)調(diào)用 D、一種函數(shù)定義【答案】A【解析】sizeof(double)是C語言內(nèi)部規(guī)定的一個計算參數(shù)(double)在計算機的內(nèi)存中所占用的字節(jié)數(shù)量的函數(shù),它返回一個整數(shù)值。2、c語言允許函數(shù)值類型缺省定義,此時該函數(shù)值隱含的類型是________. A、float B、int C、long D、double【答案】B3、以下正確的函數(shù)定義形式是________. A、doublefun(intx,inty) B、doublefun(intx;inty) C、doublefun(intx,inty); D、doublefun(intx,y);【答案】C4、結(jié)構(gòu)化程序設(shè)計的三種基本邏輯結(jié)構(gòu)是________。 A、選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu)和嵌套結(jié)構(gòu) B、順序結(jié)構(gòu),選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu) C、選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu)和模塊結(jié)構(gòu) D、循環(huán)結(jié)構(gòu),遞歸結(jié)構(gòu)和循環(huán)結(jié)構(gòu)【答案】B5、下列關(guān)于strstr()函數(shù)的描述,錯誤的是________。 A、用于在指定的字符串中查找指定的字符 B、用于在指定的字符串中查找指定的子字符串 C、該函數(shù)接收兩個字符指針類型的參數(shù) D、該函數(shù)若查找到子字符串則返回子字符串的指針,否則返回空指針【答案】A【解析】用于在指定的字符串中查找指定的子字符串6、在printf的格式字符中,e格式字符的作用是________。 A、以十六進制無符號形式輸出整數(shù) B、以帶符號的十進制形式輸出整數(shù) C、以指數(shù)形式輸出實數(shù) D、以字符形式輸出,且只輸出一個字符【答案】C【解析】本題考查printf。函數(shù)的格式。格式字符“e”或者“E”都表示以指數(shù)形式輸出單精度或雙精度數(shù)。7、設(shè)函數(shù)fun的定義形式為________?

voidfun(charch,floatx)

{

}

則以下對函數(shù)fun的調(diào)用語句中,正確的是________。 A、fun("abc",3.0); B、t=fun('D',16.5); C、fun('65',2.8); D、fun(32,32);【答案】D8、用戶定義的函數(shù)不可以調(diào)用的函數(shù)是()。 A、非整型返回值的 B、本文件外的 C、main函數(shù) D、本函數(shù)下面定義的【答案】C9、c語言程序中,若對函數(shù)類型未加顯式說明,則函數(shù)的隱含說明類型為________。 A、void B、double C、int D、char【答案】C10、在函數(shù)調(diào)用過程中,如果函數(shù)funa調(diào)用了函數(shù)funb,函數(shù)funb又調(diào)用了函數(shù)funa,則________。 A、稱為函數(shù)的直接遞歸調(diào)用 B、稱為函數(shù)的間接遞歸調(diào)用 C、稱為函數(shù)的循環(huán)調(diào)用 D、C語言中不允許這樣的遞歸調(diào)用【答案】B【解析】在調(diào)用一個函數(shù)的過程中又出現(xiàn)直接或間接地調(diào)用該函數(shù)本身,稱為函數(shù)的遞歸調(diào)用。本題描述的函數(shù)調(diào)用屬于函數(shù)的間接遞歸調(diào)用。七、指針(每小題1分,共10分)1、下面關(guān)于編譯預(yù)處理命令,正確的是________。 A、#definecharCHAR B、#DefineE0.0000034 C、##defineFALSE0 D、#defineDIM26【答案】D【解析】無參宏定義的一般格式:#define標(biāo)識符語言符號字符串,其中:“define”為宏定義命令;“標(biāo)識符為所定義的宏名,通常用大寫字母表示,以便于與變量區(qū)別;“語言符號字符串”可以是常數(shù)、表達式、格式串(格式串是用雙引號括起來的字符串)等,選項ABC錯誤,選項D正確;本題答案為D。2、以下與庫函數(shù)strcmp(char*s,char*t)的功能相等的程序段是________。 A、strcmp1(char*s,char*t){

for(;*s++==*t++;)

If(*s=='\0')

return0;

return(*s-*t);

} B、strcmp2(char*s,char*t){

for(;*s++==*t++;)

If(!*s)return0;

return(*s-*t);

} C、strcmp3(char*s,char*t){

for(;*t==*s;){

if(!*t)

return0;

t++;

s++;

}

return(*s-*t);

} D、strcmp4(char*s,char*t){

for(;*s==*t;s++,t++)

If(!*s)return0;

return(*t-*s);

}【答案】C3、設(shè)有如下定義:charaa[2][20]={"abcd","abcd"};則以下說法中錯誤的是__________. A、aa是個二維數(shù)組,可以存放2個19個字符以下的字符串 B、aa是個二維數(shù)組,每行中分別存放了字符串"abcd"和"ABCD" C、aa[0]可以看作是一維數(shù)組名 D、aa[0][0]可以看作是一維數(shù)組名【答案】D4、下列說法正確的是________。 A、main函數(shù)必須放在C程序的最后面 B、main函數(shù)必須放在C程序的最前面 C、main函數(shù)可以放在C程序的中間部分,但在執(zhí)行C程序時是從程序開頭執(zhí)行的 D、main函數(shù)可以放在C程序的中間部分,但在執(zhí)行C程序時是從main函數(shù)開始的【答案】D【解析】每個C程序有且只有一個主函數(shù)(main),且程序必須從main()函數(shù)開始執(zhí)行。別外main()函數(shù)可以放在程序中的任意位置。5、程序中對fun函數(shù)有如下說明void*fun();此說明的含義是________。 A、fun函數(shù)無返回值 B、fun函數(shù)的返回值可以是任意的數(shù)據(jù)類型 C、fun函數(shù)的返回值是無值型的指針類型 D、指針fun指向一個函數(shù)、該函數(shù)無返回值【答案】C【解析】指針函數(shù)是指其返回值的類型為地址即指針類型。本題中定義了一個指針類型的函數(shù)。6、若有語句int*point,a=4;和point=&a;下面均代表地址的一組選項是________。 A、a,point,*&a B、&*a,&a,*point C、*&point,*point,&a D、&a,&*point,point【答案】D【解析】對于運算符“&”和“*”的運用。

[解題要點]“&”是求址運算符,“*”是指針變量的說明符,說明該變量只能存放所定義類型變量的地址。本題中選項D)中的第一項和第三項所表達的是同樣的意思。

[錯解分析]選項A)中a是一個整型變量。選項B)中&*a等價于a,*point是指針變量所指的內(nèi)容。選項C)中也是同理。

[考點鏈接]在指針運算中,&和*的作用相互抵消。7、對于int*pa[5];的描述,以下哪個選項是正確的 A、pa是一個指向數(shù)組的指針,所指向的數(shù)組是五個int類型的指針 B、pa是一個具有五個元素的指針數(shù)組,每個元素都是一個int類型的指針 C、pa[5]表示某個數(shù)的第五個元素的值 D、pa是一個指向某個數(shù)組中第五個元素的指針,該元素是int類型的變量【答案】B8、若使用一位數(shù)組名作為函數(shù)實參,則以下正確的說法是________。 A、必須在主調(diào)函數(shù)中說明此數(shù)組的大小 B、實參數(shù)組類型與形參數(shù)組類型可以不匹配 C、在被調(diào)函數(shù)中,不需要考慮形參數(shù)組的大小 D、實參數(shù)組名與形參數(shù)組名必須一致【答案】C9、下列變量定義中,錯誤的是______。 A、intx=3; B、floatf;d; C、Strings="Hello!"; D、booleanb=true;【答案】B【解析】A選項定義了一個整型;C選項定義了一個字符串;D選項定義了一個布爾型變量:B選項中的f;d不符合標(biāo)識符規(guī)范,因而選B。10、有如下語句:s=int(100*rnd)執(zhí)行完畢后,s的值是________。 A、[0,99]的隨機整數(shù) B、[0,100]的隨機整數(shù) C、[1,99]的隨機整數(shù) D、[1,100]的隨機整數(shù)【答案】A【解析】Rnd是一個隨機數(shù)函數(shù),其返回值是(0,1)內(nèi)的數(shù)。Int(100*Rnd)對100*Rnd的結(jié)果取整,得到的是[0,99]內(nèi)的隨機整數(shù)。八、結(jié)構(gòu)體(每小題1分,共10分)1、有以下結(jié)構(gòu)體說明和變量的定義,且指針p指向變量a,指針q指向變量b。則不能把結(jié)點b連接到結(jié)點a之后的語句是

structnodechardata;

structnode*next;

a,b,*p=&a,*q=&b; A、next=q; B、next=&b; C、p->next=&b; D、(*p).next=q;【答案】B【解析】要把結(jié)點b連接到結(jié)點a之后,必須把b的地址給a的next指針,選項A中,指針變量q保存的就是變量b的地址,選項B中的p是指針變量,應(yīng)該是p->next=&b;在選項D中,用*運算符取出結(jié)構(gòu)體變量,并且保存的就是b的地址,所以正確。2、有以下程序

structstu

{

charname[10];

intnum;

};

voidf(char*name,intnum)

{

structstus[2]={{"sundan",20044},{"penghua",20045}};

num=s[0].num;

strcpy(name,s[0].name);

}

main()

{

structstus[2]={{"yangsan",20041},{"lisiguo",20042}},*p;

p=&s[1];

f(p->name,p->num);

printf("%s%d\n",p->name,p->num);

}

程序運行后的輸出結(jié)果是________。 A、SunDan20042 B、SunDan20044 C、LiSiGuo20042 D、YangSan20041【答案】A3、下面定義結(jié)構(gòu)變量的語句中錯誤的是________。 A、structstudent{

intnum;charname[20];

}s; B、struct{

intnum;charname[20];

}s; C、structstudent{

intnum;charname[20];

};

structstudents; D、structstudent{

intnum;charname[20];

};

students;【答案】D4、下面程序的輸出是______。

main()

{

structcmplx

{

intx;

inty;

}

cnum[2]={1,3,2,7};

printf("%d\n",cnum[0].y/cnum[0].x*cnum[1].x);

} A、0 B、1 C、3 D、6【答案】D5、在說明一個結(jié)構(gòu)體變量時系統(tǒng)分配給它的存儲空間是________。 A、該結(jié)構(gòu)體中第一個成員所需存儲空間 B、該結(jié)構(gòu)體中最后一個成員所需存儲空間 C、該結(jié)構(gòu)體中占用最大存儲空間的成員所需存儲空間 D、該結(jié)構(gòu)體中所有成員所需存儲空間的總和【答案】D6、有以下程序

structstu

{

intnum;

floattotalscore;

};

voidf(structstup)

{

structstus[2]={{20044,550},{20045,537}};

p.num=s[1].num;

p.totalscore=s[1].totalscore;

}

main()

{

structstus[2]={{20041,703},{20042,580}};

f(s[0]);

printf("%d%3.0f\n",s[0].num,s[0].totalscore);

}

程序運行后的輸出結(jié)果是________。 A、20045537 B、20044550 C、20042580 D、20041703【答案】D7、有以下程序

#include<stdio.h>

main()

{

structstu

{

charname[9];

charsex;

doublescore[2];

}

;

structstua={"zhao",'m',85.0,90.0},b={"qian",'f',95.0,92.0};

b=a;

printf("%s,%c,%2.0f,%2.0f\n",,b.sex,b.score[0],b.score[1]);

}

程序的運行結(jié)果是______。 A、Qian,f,95,92 B、Qian,m,85,90 C、Zhao,f,95,92 D、Zhao,m,85,90【答案】D8、下面關(guān)于主程序的說法,錯誤的是________。 A、a.next=q; B、p.next=&b; C、p->next=&b; D、(*p).next=q;【答案】B【解析】要把結(jié)點b連接到結(jié)點a之后,必須把b的地址給a的next指針,選項A)中,指針變量q保存的就是變量b的地址,選項B)中的p是指針變量,應(yīng)該是p->next=&b;在選項D)中,用*運算符取出結(jié)構(gòu)體變量,并且保存的就是b的地址,所以正確。9、有以下結(jié)構(gòu)體說明和變量的定義,且指針p指向變量a’指針q指向變量b,則不能把結(jié)點b連接到結(jié)點a之后的語句是________。

structnode

{

chardata;

structnode*next;

}

a,b,*p=&a,*q=&b; A、a.next=q; B、P.next=&b: C、p—>next=&b; D、(*p).next=q;【答案】B10、若有以下說明語句:

structdate

{

intyear;

intmonth;

intday;

}brithday;

則下面的敘述不正確的是_____. A、struct是聲明結(jié)構(gòu)體類型時用的關(guān)鍵字 B、structdate是用戶定義的結(jié)構(gòu)體類型名 C、brithday是用戶定義的結(jié)構(gòu)體類型名 D、year,day都是結(jié)構(gòu)體成員名【答案】C九、程序題

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論