C語言程序設(shè)計(西華大學)知到智慧樹章節(jié)測試課后答案2024年秋西華大學_第1頁
C語言程序設(shè)計(西華大學)知到智慧樹章節(jié)測試課后答案2024年秋西華大學_第2頁
C語言程序設(shè)計(西華大學)知到智慧樹章節(jié)測試課后答案2024年秋西華大學_第3頁
C語言程序設(shè)計(西華大學)知到智慧樹章節(jié)測試課后答案2024年秋西華大學_第4頁
C語言程序設(shè)計(西華大學)知到智慧樹章節(jié)測試課后答案2024年秋西華大學_第5頁
已閱讀5頁,還剩77頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

C語言程序設(shè)計(西華大學)知到智慧樹章節(jié)測試課后答案2024年秋西華大學第一章單元測試

下列敘述中正確的是()。

A:C語言的函數(shù)可以嵌套定義B:C語言的子程序有過程和函數(shù)兩種C:C語言編譯時不檢查語法D:C語言所有函數(shù)都是外部函數(shù)

答案:C語言的子程序有過程和函數(shù)兩種以下敘述中正確的是()。

A:C語言中的函數(shù)不可以單獨進行編譯B:C語言的源程序不必通過編譯就可以直接運行C:C源程序經(jīng)編譯形成的二進制代碼可以直接運行D:C語言中的每條可執(zhí)行語句最終都將被轉(zhuǎn)換成二進制的機器指令

答案:C語言中的每條可執(zhí)行語句最終都將被轉(zhuǎn)換成二進制的機器指令C語言的注釋定界符是()。

A:/**/B:{}C:\**\D:[]

答案:/**/C語言源程序的基本單位是()。

A:子程序B:函數(shù)C:標識符D:過程

答案:函數(shù)一個算法應(yīng)該具有“確定性”等五個特性,下面對另外4個特性的描述中錯誤的是()

A:可行性B:有零個或多個輸出C:有窮性D:有零個或多個輸入

答案:有零個或多個輸出以下敘述中正確的是()。

A:C語言比其他語言高級B:C語言可以不用編譯就能被計算機識別執(zhí)行C:C語言以接近英語國家的自然語言和數(shù)學語言作為語言的表達形式D:C語言出現(xiàn)的最晚,具有其他語言的一切優(yōu)點

答案:C語言以接近英語國家的自然語言和數(shù)學語言作為語言的表達形式有一個命名為C001.C的C語言源程序,當正常執(zhí)行后,在當前目錄下不存在的文件是

A:C001.CB:C001.EXEC:C001.DATD:C001.OBJ

答案:C001.DAT能將高級語言編寫的源程序轉(zhuǎn)換為目標程序的是()。

A:解釋程序B:編輯程序C:鏈接程序D:編譯程序

答案:編譯程序結(jié)構(gòu)化程序由三種基本結(jié)構(gòu)組成,由這三種基本結(jié)構(gòu)組成的算法()。

A:可以完成任何復(fù)雜的任務(wù)B:只能完成部分復(fù)雜的任務(wù)C:只能完成一些簡單的任務(wù)D:能完成符合結(jié)構(gòu)化的任務(wù)

答案:能完成符合結(jié)構(gòu)化的任務(wù)以下敘述中錯誤的是()。

A:用C語言編寫的程序稱為源程序,它以ASCII代碼形式存放在一個文本文件中B:C語言源程序經(jīng)編譯后生成后綴為.obj的目標程序C:C程序經(jīng)過編譯、連接步驟之后才能形成一個真正可執(zhí)行的二進制機器指令文件D:C語言中的每條可執(zhí)行語句和非執(zhí)行語句最終都將被轉(zhuǎn)換成二進制的機器指令

答案:C語言中的每條可執(zhí)行語句和非執(zhí)行語句最終都將被轉(zhuǎn)換成二進制的機器指令C語言程序?qū)脑闯绦蛑械谝粋€函數(shù)開始執(zhí)行

A:錯B:對

答案:錯C語言程序中可以有多個函數(shù),但只能有一個主函數(shù)。

A:對B:錯

答案:對在C語言中,程序的模塊化是利用函數(shù)實現(xiàn)的

A:錯B:對

答案:對結(jié)構(gòu)化程序設(shè)計中由三種基本結(jié)構(gòu)構(gòu)成的程序只能解決小規(guī)模的問題

A:對B:錯

答案:錯所有C程序都需要編譯鏈接無誤后才能進行

A:對B:錯

答案:對C程序在運行過程中所有計算都以十進制方式進行

A:對B:錯

答案:錯C語言具有簡潔明了的特點。

A:對B:錯

答案:對C語言是一種具有某些低級語言特征的高級語言。

A:錯B:對

答案:對C語言的書寫格式不會影響程序的可讀性。

A:錯B:對

答案:錯

第二章單元測試

以下語句中,不能實現(xiàn)回車換行的是()。

A:printf("\n");B:fprintf(stdout,"\n")C:fwrite("\n",1,1,stdout);D:putchar("\n");

答案:putchar("\n");以下標識符中,不能作為合法的C用戶定義標識符的是()。

A:toB:signedC:_ifD:answer

答案:signed下面四個選項中,均是不合法的用戶標識符的選項是()。

A:AP_0doB:b-agotointC:floatla0_AD:_123tempint

答案:b-agotoint執(zhí)行以下程序段后,輸出結(jié)果和a的值是()。

inta=10;printf("%d",a++);

A:11和10B:10和10C:11和11D:10和11

答案:10和11下列字符序列中,是C語言保留字的是()。

A:scanfB:sizeofC:sqrtD:include

答案:sizeof以下數(shù)據(jù)中,不正確的數(shù)值或字符常量是()。

A:9861B:o13C:5LD:0

答案:o13若整型變量a與i已正確定義,且i已正確賦值,合法的語句是()。

A:a==1B:a++=i;C:++i;D:a=a++=5;

答案:++i;下列變量說明語句中,正確的是()。

A:intx,z;B:chara;b;c;C:char:abc;D:intx;z;

答案:intx,z;設(shè)a、b、c、d、m、n均為int型變量,且a=5、b=6、c=7、d=8、m=2、n=2,則邏輯表達式(m=a>b)&&(n=c>d)運算后,n的值()。

A:0B:2C:1D:3

答案:2C語言標準格式輸出函數(shù)printf()的參數(shù)表是由若干個表達式組成。

A:錯B:對

答案:對C語言規(guī)定:定義符號常量時必須用大寫字母。

A:錯B:對

答案:錯double型變量在內(nèi)存中占的字節(jié)數(shù)比int型變量在內(nèi)存中占的字節(jié)數(shù)多。

A:對B:錯

答案:對C語言標準輸入操作中,gets()函數(shù)一次只可讀取一個字符。

A:對B:錯

答案:錯下劃線是標識符中的合法字符。

A:錯B:對

答案:對變量的類型通常指存儲類型和數(shù)據(jù)類型兩種。

A:錯B:對

答案:對C語言標準輸出操作中,putchar()函數(shù)可以輸出顯示一個字符串。

A:錯B:對

答案:錯一個變量的數(shù)據(jù)類型被強制轉(zhuǎn)換后,它將保持被強制轉(zhuǎn)換后的數(shù)據(jù)類型。

A:對B:錯

答案:錯任何表達式語句都是表達式加分號組成的。

A:錯B:對

答案:對

第三章單元測試

下列()表達式的值為真,其中a=5;b=8;c=10;d=0

A:(a*2-c)||dB:a&&dC:a*2>8+2D:a-b

答案:a-b在C語言中,要求運算數(shù)必須是整型或字符型的運算符是()。

A:&&B:||C:&D:!

答案:&如果inta=2,b=3,c=0,下列描述正確的是()

A:a&&b>c的結(jié)果為假B:a>b!=c和a>(b!=c)的執(zhí)行順序是一樣的C:a||(b=c)執(zhí)行后b的值為0D:!a!=(b!=c)表達式的值為1

答案:!a!=(b!=c)表達式的值為1voidmain()

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

switch(x)

{case

0:b++;

case

1:a++;

case

2:a++;b++;

}

printf("a=%d,b=%d",a,b);}該程序的輸出結(jié)果是(

)

A:1,1B:1,0C:2,1D:2,2

答案:2,1以下程序的運行結(jié)果是(

)。

voidmain()

{inta=2,b=-1,c=2;

if(a<b)

if(b<0)c=0;

else

c+=1;

printf(“%d”,c);

}

A:1B:2C:0D:3

答案:2設(shè)有定義:inta=1,b=2,c=3;,以下語句中執(zhí)行效果與其它三個不同的是()。

A:if(a>b)c=a,a=b,b=c;B:if(a>b){c=a,a=b,b=c;}C:if(a>b)c=a;a=b;b=c;D:if(a>b){c=a;a=b;b=c;}

答案:if(a>b)c=a;a=b;b=c;有以下程序

#include<stdio.h>

voidmain()

{intc=0,k;

for(k=1;k<3;k++)

switch(k)

{default:c+=k;

case2:

c++;

break;

case4:

c+=2;break;

}

printf(“%d\n”,c);

}

程序運行后的輸出結(jié)果是(

)。

A:9B:5C:3D:7

答案:3與語句:k=a>b?(b>c?1:0):0;功能相同的是()。

A:if((a>b)||(b>c)k=1;

elsek=0;B:if((a>b)&&(b>c))k=1;

elsek=0;C:if(a>b)k=1;

elseif(b>c)k=1;

elsek=0;D:if(a<=b)k=0;

elseif(b<=c)k=1;

答案:if((a>b)&&(b>c))k=1;

elsek=0;若a是數(shù)值類型,則邏輯表達式(a==1)||(a!=1)的值是()。

A:1B:2C:不知道a的值,不能確定D:0

答案:1一個結(jié)構(gòu)化程序必須同時由順序、分支、循環(huán)三種結(jié)構(gòu)組成

A:錯B:對

答案:對邏輯表達式的值只能為1或0。

A:錯B:對

答案:對有條件表達式:(EXP)?i++;j--,中(EXP)與EXP==1是等價的

A:對B:錯

答案:錯正確表達某個人的年齡age在10~20歲之間(不含邊界)的C語言表達式是10

A:對B:錯

答案:錯在if語句的三種形式中,如果要想在滿足條件時執(zhí)行一組(多個)語句,則必須把這一組語句用{}括起來組成一個復(fù)合語句。

A:對B:錯

答案:對在switch語句中,每一個的case常量表達式的值可以相同。

A:錯B:對

答案:錯case語句后如沒有break,順序向下執(zhí)行。

A:錯B:對

答案:對C語言表達式’0’<=c<=’9’可以判斷c中的字符是否為數(shù)字字符

A:對B:錯

答案:錯條件表達式不能取代一般if的語句。

A:錯B:對

答案:錯if(a=5)是允許的。

A:錯B:對

答案:對

第四章單元測試

C語言中while和do-while循環(huán)的主要區(qū)別是()。

A:do-while的循環(huán)體至少無條件執(zhí)行一次B:do-while循環(huán)體不能是復(fù)合語句C:While的循環(huán)控制條件比do-while的循環(huán)控制條件嚴格D:do-while允許從外部轉(zhuǎn)到循環(huán)體內(nèi)

答案:do-while的循環(huán)體至少無條件執(zhí)行一次以下不是死循環(huán)的語句是()。

A:for(;(c=getchar())!=’\n’;)printf(“%c”,c);B:for(;;x+=i);C:for(i=10;;i++)sum+=i;D:while(1){x++;}

答案:for(;(c=getchar())!=’\n’;)printf(“%c”,c);以下程序段的輸出結(jié)果是(

)。

inti,j,m=0;

for(i=1;i<=15;i+=4)

for(j=3;j<=19;j+=4)

m++;

printf(“%d”,m);

A:15B:20C:25D:12

答案:20有以下程序:#include<stdio.h>voidmain(){inty=9;for(

;y>0;y--)if(y%3==0)

printf("%d",--y);}程序的運行結(jié)果是()。

A:741B:875421C:852D:963

答案:852有以下程序:#include<stdio.h>voidmain()

{inti,j,m=1;for(i=1;i<3;i++){for(j=3;j>0;j--){if(i*j>3)

break;m*=i*j;}}printf("m=%d\n",m);

}程序運行后的輸出結(jié)果是()。

A:m=4B:m=2C:m=5D:m=6

答案:m=6有以下程序

#include<stdio.h>voidmain()

{inty=10;

while(y--);

printf(“y=%d\n”,y);

}

程序執(zhí)行后的輸出結(jié)果是(

)。

A:y=-1B:while構(gòu)成無限循環(huán)C:y=0D:y=1

答案:y=-1有以下程序

#include<stdio.h>

voidmain()

{intn=2,k=0;

while(k++&&n++>2);

printf(“%d%d\n”,k,n);}

程序運行后的輸出結(jié)果是(

)。

A:13B:02C:57D:12

答案:12以下程序中的變量已正確定義for(i=0;i<4;i++,j++)

for(k=1;k<3;k++);

printf(”*”);程序段的輸出結(jié)果是(

)。

A:*B:********C:**D:****

答案:*設(shè)變量已正確定義,以下不能統(tǒng)計出一行中輸入字符個數(shù)(不包含回車符)的程序段是()。

A:for(n=0;getchar()!=’\n’;n++);B:n=0;while((ch=getchar())!=’\n’)n++;C:n=0;for(ch=getchar();ch!=’\n’;n++);D:n=0;while(getchar()!=’\n’)n++;

答案:n=0;for(ch=getchar();ch!=’\n’;n++);有以下程序#include<stdio.h>voidmain(){inti,j;

for(i=3;i>=l;i--)

{for(j=1;j<=2;j++)

printf("%d",i+j);

printf("\n");

}}程序的運行結(jié)果是(

)。

A:45

34

23B:234

345C:23

34

45D:432

543

答案:45

34

23for循環(huán)的三個表達式可以任意省略,while,do-while也是如此。

A:對B:錯

答案:錯循環(huán)體如包括有一個以上的語句,則必須用{}括起來,組成復(fù)合語句。

A:錯B:對

答案:對break則是結(jié)束整個循環(huán)過程,不再判斷執(zhí)行循環(huán)的條件是否成立。

A:對B:錯

答案:對do-while循環(huán)至少要執(zhí)行一次循環(huán)語句。

A:錯B:對

答案:對break用于結(jié)束本次循環(huán)

A:對B:錯

答案:錯continue不是結(jié)束本次循環(huán),而是終止整個循環(huán)的執(zhí)行。

A:對B:錯

答案:錯C語言的三種循環(huán)不可以互相嵌套。

A:對B:錯

答案:錯do-while循環(huán)的while后的分號可以省略。

A:錯B:對

答案:錯結(jié)構(gòu)化程序使用goto語句會很便捷

A:對B:錯

答案:錯已定義inti=-3;則while(i++);是死循環(huán)

A:錯B:對

答案:錯

第五章單元測試

以下數(shù)組定義中錯誤的是()。

A:intx[2][3]={1,2,3,4,5,6};B:intx[][3]={{1,2,3},{4,5,6}};C:intx[][3]={0};D:intx[2][3]={{1,2},{3,4},{5,6}};

答案:intx[2][3]={{1,2},{3,4},{5,6}};有以下程序:#include<stdio.h>#defineN

4voidfun(inta[][N],int

b[]){inti;for(i=0;i<N;i++)

b[i]=a[i][i]-a[i][N-1-i];}voidmain(){intx[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},y[N],i;fun(x,y);for(i=0;i<N;i++)

printf("%d,",y[i]);

printf("\n");

}程序運行后的輸出結(jié)果是()。

A:-3,-3,-3,-3,B:0,1,2,3,C:-3,-1,1,3,D:-12,-3,0,0,

答案:-3,-1,1,3,設(shè)有定義:chars[81];inti=0;,以下不能將一行(不超過80個字符)帶有空格的字符串正確讀入的語句或語句組是()。

A:gets(s);B:while((s[i++]=getchar())!='\n');s[i]='\0';C:do{scanf("%c";&s[i]);}while(s[i++]!='\n');s[i]='\0';D:scanf("%s",s);

答案:scanf("%s",s);有以下程序:#include<stdio.h>voidmain(){char

s[]="012xy\08s34f4w2";

inti,n=0;

for(i=0;s[i]!=0;i++)

if(s[i]>='0'&&s[i]<='9')

n++;

printf("%d\n",n);}程序運行后的輸出結(jié)果是()。

A:8B:7C:3D:0

答案:3下列定義數(shù)組的語句中,正確的是()。

A:intx[0..10];B:intN=10;

intx[N];C:intx[];D:#defineN10

intx[N];

答案:#defineN10

intx[N];有以下程序:#include<stdio.h>voidmain(){inta[]={2,3,5,4},i;for(i=0;i<4;i++)switch(i%2){case0:

switch(a[i]%2){case0:a[i]++;break;case1:a[i]--;

}break;case1:a[i]=0;}for(i=0;i<4;i++)

printf("%d",a[i]);

printf("\n");}程序運行后的輸出結(jié)果是()。

A:3040B:0304C:3344D:2050

答案:3040有以下程序:#include<stdio.h>voidmain(){intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;for(i=0;i<3;i++)for(j=i;j<=i;j++)

t+=b[i][b[j][i]];printf("%d\n",t);}程序運行后的輸出結(jié)果是()。

A:4B:3C:9D:1

答案:4有以下程序#include<stdio.h>voidmain(){chars[]="012xy\08s34f4w2";

inti,n=0;

for(i=0;s[i]!=0;i++)

if(s[i]>='0'&&s[i]<='9')

n++;

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

}程序運行后的輸出結(jié)果是(

)。

A:0B:8C:3D:7

答案:3有以下程序段charname[20];intnum;scanf("name=%snum=%d",name;&num);當執(zhí)行上述程序段,并從鍵盤輸入:name=Lilinum=1001<回車>后,name的值為(

)。

A:name=Lilinum=1001B:LiliC:name=LiliD:Lilinum=

答案:Lili在C語言中能逐個地使用下標變量,也能一次引用整個數(shù)組。

A:錯B:對

答案:錯能對二維數(shù)組a進行正確初始化的語句是inta[2][]={{1,0,1},{5,2,3,}};

A:錯B:對

答案:錯若有定義語句:intb[3][4];按在內(nèi)存中的存放順序,b數(shù)組的第4個元素是a[1][3].

A:對B:錯

答案:錯能對二維數(shù)組a進行正確初始化的語句是inta[][3]={{1,0,1},{},{1,1}};

A:對B:錯

答案:錯在c語言中,引用數(shù)組元素時,其數(shù)組下標的數(shù)據(jù)類型允許是整型表達式

A:對B:錯

答案:對一個數(shù)組是由連續(xù)的一塊內(nèi)存單元組成的,數(shù)組名就是這塊連續(xù)內(nèi)存單元的首地址

A:錯B:對

答案:對C語言允許用字符串的方式對數(shù)組作初始化賦值。

A:對B:錯

答案:對用字符串方式賦值比用字符逐個賦值要多占一個字節(jié),用于存放字符串結(jié)束標志’\0’。

A:對B:錯

答案:對

第六章單元測試

函數(shù)調(diào)用可以作為一個獨立的語句存在

A:對B:錯

答案:對若函數(shù)調(diào)用時的實參為變量,函數(shù)的實參和其對應(yīng)的形參共占同一存儲單元

A:對B:錯

答案:錯定義時,函數(shù)的形參只是形式上的存在,不占用具體存儲單元

A:對B:錯

答案:對函數(shù)可以沒有參數(shù),但是不能沒有返回值

A:錯B:對

答案:錯函數(shù)定義時必須給出函數(shù)體,函數(shù)體內(nèi)至少有一條語句

A:對B:錯

答案:錯C語言中,函數(shù)可以用原型說明,也可用簡單說明

A:錯B:對

答案:錯函數(shù)的存儲類別有外部的和靜態(tài)的兩種,它們的作用域分別是程序級的和文件級的

A:對B:錯

答案:對C程序函數(shù)的形參不可以說明為static型變量

A:對B:錯

答案:對C程序函數(shù)中定義的自動變量,系統(tǒng)不自動賦確定的初值

A:對B:錯

答案:對在一個C源程序文件中所定義的全局變量,其作用域為所在程序的全部范圍

A:對B:錯

答案:錯有以下程序:

#include<stdio.h>

intfun(inta,intb)

{if(b==0)

returna;

else

return(fun(--a,--b));

}

voidmain(){printf("%d\n",fun(4,2));}程序的運行結(jié)果是(

)。

A:2B:4C:3D:1

答案:2有以下程序:#include<stdio.h>intf(intx);voidmain(){intn=1,m;m=f(f(f(n)));

printf("%d\n",m);}intf(intx)

{returnx*2;}程序運行后的輸出結(jié)果是()。

A:8B:1C:2D:4

答案:8有以下程序:#include<stdio.h>voidfun(inta[],intn){inti,t;

for(i=0;i<n/2;i++)

{t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}}voidmain(){intk[10]={1,2,3,4,5,6,7,8,9,10},i;fun(k,5);for(i=2;i<8;i++)

printf("%d",k[i]);printf("\n");}程序的運行結(jié)果是()。

A:876543B:321678C:1098765D:345678

答案:321678有以下程序:#include<stdio.h>intfun(intx,inty){if(x!=y)

return((x+y)/2);else

return(x);}voidmain(){inta=4,b=5,c=6;printf("%d\n",fun(2*a,fun(b,c)));}程序運行后的輸出結(jié)果是()。

A:3B:8C:12D:6

答案:6有以下程序:#include

<stdio.h>int

fun(){static

int

x=1;x*=2;return

x;}voidmain(){inti,s=1;for(i=1;i<=3;i++)

s*=fun();printf("%d\n",s);}程序運行后的輸出結(jié)果是()。

A:0B:30C:10D:64

答案:64有以下程序

#include<stdio.h>

intf(intx);

voidmain()

{inta,b=0;

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

{b=b+f(a);

purchar('A'+b);

}

}

intf(intx)

{

returnx*x+1;

}程序運行后的輸出結(jié)果是()。

A:ABEB:BD1C:BCDD:BCF

答案:BD1有以下程序#include<stdio.h>#defineN

3voidfun(inta[][N],intb[]){inti,j;

for(i=0;i<N;i++)

{b[i]=a[i][0];

for(j=1;j<N;j++)

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

b[i]=a[i][j];

}

}

voidmain(){intx[N][N]={1,2,3,4,5,6,7,8,9},y[N],i;

fun(x,y);

for(i=0;i<N;i++)

printf("%d,",y[i]);

printf("\n");}

程序運行后的輸出結(jié)果是(

)。

A:1,3,5B:3,6,9C:2,4,8D:3,5,7

答案:3,6,9有以下程序#include<stdio.h>inta=1,b=2;voidfun1(inta,intb){printf("%d%d",a,b);}voidfun2(){a=3;b=4;}voidmain(){fun1(5,6);

fun2();

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

}程序運行后的輸出結(jié)果是(

)。

A:5612B:5634C:3456D:1256

答案:5634設(shè)有如下函數(shù)定義intfun(intk){if(k<1)return0;

elseif(k==1)

return1;

else

returnfun(k-1)+1;}若執(zhí)行調(diào)用語句:n=fun(3);,則函數(shù)fun總共被調(diào)用的次數(shù)是(

)。

A:3B:2C:4D:5

答案:3有以下程序

#include<stdio.h>intfun()

{staticintx=1;

x+=1;

returnx;

}voidmain()

{inti,s=1;

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

s+=fun();

printf(“%d\n”,s);

}

程序運行后的輸出結(jié)果是(

)。

A:120B:21C:6D:11

答案:21有以下程序#include<stdio.h>intf(intt[],intn);voidmain(){inta[4]={1,2,3,4},s;

s=f(a,4);

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

}intf(intt[],intn){if(n>0)

returnt[n-1]+f(t,n-1);

elsereturn0;

}程序運行后的輸出結(jié)果是(

)。

A:10B:4C:14D:6

答案:10有以下程序#include<stdio.h>intf(intx,inty)

{return((y-x)*x);}voidmain(){inta=3,b=4,c=5,d;

d=f(f(a,b),f(a,c));

printf(“%d\n”,d);}程序運行后的輸出結(jié)果是(

)。

A:7B:8C:9D:10

答案:9有以下程序

#include<stdio.h>

intf(intx)

{inty;

if(x==0||x==1)return(3);

y=x*x-f(x-2);

returny;

}

voidmain()

{intz;

z=f(3);

printf(“%d\n”,z);

}

程序的運行結(jié)果是(

)。

A:0B:9C:8D:6

答案:6在C語言中,只有在使用時才占用內(nèi)存單元的變量,其存儲類型是()。

A:auto和staticB:static和registerC:auto和registerD:extern和register

答案:auto和register有以下程序voidf(intb[]){inti;

for(i=2;i<6;i++)b[i]*=2;}voidmain(){inta[10]={1,2,3,4,5,6,7,8,9,10},i;

f(a);

for(i=0;i<10;i++)

printf(“%d,”,a[i]);}程序運行后的輸出結(jié)果是(

)。

A:1,2,6,8,10,12,14,16,9,10,B:1,2,6,8,10,12,7,8,9,10C:1,2,3,4,5,6,7,8,9,10,D:1,2,3,4,10,12,14,16,9,10,

答案:1,2,6,8,10,12,7,8,9,10在函數(shù)調(diào)用過程中,如果函數(shù)funA調(diào)用了函數(shù)funB,函數(shù)funB又調(diào)用了函數(shù)funA,則()。

A:C語言中不允許這樣的遞歸調(diào)用B:稱為函數(shù)的間接遞歸調(diào)用C:稱為函數(shù)的循環(huán)調(diào)用D:稱為函數(shù)的直接遞歸調(diào)用

答案:稱為函數(shù)的間接遞歸調(diào)用以下程序中函數(shù)f的功能是將n個字符串按由大到小的順序進行排序。voidf(charp[][10],intn)

{chart[20];

inti,j;

for(i=0;i<n-1;i++)

for(j=i+1;j<n;j++)

if(strcmp(p[i],p[j])<0)

{strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[j],t);}

}voidmain()

{charp[][10]={“abc”,“aabdfg”,“abbd”,“dcdbe”,“cd”};

inti;f(p,5);

printf(“%d\n”,strlen(p[0]));

}

程序運行后的輸出結(jié)果是(

)。

A:6B:4C:5D:3

答案:5有如下程序

voidf(intx,inty)

{intt;

if(x<y)

{t=x,x=y;}

}

voidmain()

{inta=4,b=3,c=5;

f(a,b);

f(a,c);

f(b,c);

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

}

執(zhí)行后輸出結(jié)果是(

)。

A:5,3,4B:5,4,3C:4,3,5D:3,4,5

答案:4,3,5

第七章單元測試

有以下程序:#include<stdio.h>#definef(x)x*x*xvoidmain(){inta=3,s,t;

s=f(a+1);

t=f((a+1));

printf("%d,%d\n",s,t);}程序運行后的輸出結(jié)果是(

)。

A:10,10B:64,10C:10,64D:64,64

答案:10,64有以下程序:#include<stdio.h>#definePT3.5;#define

S(x)

PT*x*x;voidmain(){inta=1,b=2;

printf("%4.1f\n",S(a+b));}程序運行后的輸出結(jié)果是()。

A:7.5B:31.5C:14.0D:程序有錯無輸出結(jié)果

答案:程序有錯無輸出結(jié)果fun函數(shù)的功能是:通過鍵盤輸入給x所指的整型數(shù)組所有元素賦值。在下列劃線處應(yīng)該填寫的是()。#include<stdio.h>#defineN5viodfun(intx[N]){intm;

for(m=N-1;m>=0;m--)

scanf(“%d”,

);}

A:&x[m+1]B:&x[++m]C:x+mD:x+(m++)

答案:x+m有以下程序#include<stdio.h>#defineS(x)4*(x)*x+1voidmain(){intk=5,j=2;

printf("%d\n",S(k+j));}程序運行后的輸出結(jié)果是(

)。

A:143B:33C:28D:197

答案:143有以下程序#include<stdio.h>#defineN8voidfun(int*x,inti){*x=*(x+i);}voidmain(){inta[N]={1,2,3,4,5,6,7,8},i;fun(a,2);for(i=O;i<N/2;i++)

{printf("%d",a[i]);}printf("\n");

}程序運行后的輸出結(jié)果是(

)。

A:1234B:1313C:2234D:3234

答案:3234在“文件包含”預(yù)處理語句的使用形式中,當#inlcude后面的文件名用“”(雙引號)括起時,尋找被包含文件的方式是()。

A:僅僅搜索源程序所在目錄B:先在源程序所在目錄搜索,再按系統(tǒng)設(shè)定的標準方式搜索C:直接按系統(tǒng)設(shè)定的標準方式搜索目錄D:僅僅搜索當前目錄

答案:先在源程序所在目錄搜索,再按系統(tǒng)設(shè)定的標準方式搜索有以下程序#include<stdio.h>#defineN4voidfun(inta[][N],intb[]){inti;

for(i=0;i<N;i++)

b[i]=a[i][i];}voidmain(){intx[][N]={{1,2,3),{4),{5,6,7,8),{9,10}},y[N],i;

fun(x,y);

for(i=0;i<N;i++)

printf("%d,",y[i]);

printf("\n");}程序的運行結(jié)果是()。

A:1,4,5,9B:1,2,3,4C:3,4,8,10D:1,0,7,0

答案:1,0,7,0有一個名為init.txt的文件,內(nèi)容如下:

#define

HDY(A,B)

A/B

#define

PRINT(Y)

Printf(“y=%d\n”,Y)有以下程序#include“init.txt”voidmain(){inta=1,b=2,c=3,d=4,k;k=HDY(a+c,b+d);PRINT(k);}下面針對該程序的敘述正確的是(

)。

A:運行結(jié)果為y=6B:編譯有錯C:運行結(jié)果為y=0D:運行出錯

答案:運行結(jié)果為y=6下列說法中正確的是(

)。

A:在程序的一行上可以出現(xiàn)多個有效的預(yù)處理命令行B:使用帶參的宏時,參數(shù)的類型應(yīng)與宏定義時的一致C:宏替換不占用運行時間,只占用編譯時間D:在以下定義中CR是稱為”宏名”的標識符

#defineCR045

答案:宏替換不占用運行時間,只占用編譯時間預(yù)處理命令行必須位于C源程序的起始位置

A:對B:錯

答案:錯C語言的預(yù)處理不能實現(xiàn)宏定義和條件編譯的功能

A:錯B:對

答案:錯預(yù)處理命令行的最后不能以分號表示結(jié)束

A:對B:錯

答案:對在程序中凡是以“?!遍_始的語句行都是預(yù)處理命令行

A:對B:錯

答案:對若程序中有宏定義行:#defineN100,宏定義行中定義了標識符N的值為整數(shù)100

A:錯B:對

答案:錯

有以下程序:

#include<stdio.h>

#defineN5

#defineMN+1

#definef(x)(x*M)

voidmain()

{inti1,i2;

i1=f(2);

i2=f(1+1);

printf("%d

%d\n",i1,i2);

}程序的運行結(jié)果是(

)。

A:1212B:127C:1111D:117

答案:117

第八章單元測試

指針數(shù)組的元素可以是不同類型的指針。

A:錯B:對

答案:錯若有定義int(*pt)[3];定義了一個名為pt的指針變量,它可以指向每行有三個整數(shù)元素的二維數(shù)組

A:對B:錯

答案:對若有定義語句:inta[2][3],*p[3];

則p[0]=&a[1][2];是正確的

A:對B:錯

答案:對指針可以加上或減去一個int型數(shù),也可以加上一個指針。

A:錯B:對

答案:錯定義語句:int*p[4];與int*(p[4]);是等價的

A:對B:錯

答案:對有以下程序:

#include<stdio.h>

voidmain()

{inta=1,b=3,c=5;

int*p1=&a,*p2=&b,*p=&c;

*p=*p1*(*p2);

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

}執(zhí)行后的輸出結(jié)果是(

)。

A:1B:3C:2D:4

答案:3

有以下程序:

#include<stdio.h>

voidf(int*p,int*q);

voidmain()

{intm=1,n=2,*r=&m;

f(r,&n);

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

}

voidf(int*p,int*q)

{

p=p+1;

*q=*q+1;}程序運行后的輸出結(jié)果是(

)。

A:1,3B:2,3C:1,4D:1,2

答案:1,3有以下程序:#include<stdio.h>

voidfun(char*a,char*b)

{

while(*a=='*')

a++;

while(*b=*a){b++;a++;}}

voidmain()

{char*s="*****a*b****",t[80];

fun(s,t);

puts(t);

}程序的運行結(jié)果是(

)。

A:*****a*bB:abC:a*bD:a*b****

答案:a*b****設(shè)有以下函數(shù):

voidfun(intn,char*s)

{

……

}則下面對函數(shù)指針的定義和賦值均正確的是(

)。

A:void(*pf)(int,char*);pf=fun;B:void

(*pf)(int,char);

pf=&fun;C:void*pf();*pf=fun;D:void

*pf();

pf=fun;

答案:void(*pf)(int,char*);pf=fun;有以下程序:

#include<stdio.h>

voidfun(int*s,intn1,intn2)

{inti,j,t;

i=n1;j=n2;

while(i<j)

{t=s[i];s[i]=s[j];s[j]=t;i++;j--;}

}

voidmain()

{inta[10]={1,2,3,4,5,6,7,8,9,0},k;

fun(a,0,3);

fun(a,4,9);

fun(a,0,9);

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

printf("%d",a[k]);

printf("\n");

}程序的運行結(jié)果是(

)。

A:4321098765B:5678901234C:0987654321D:0987651234

答案:5678901234以下選項中正確的語句組是()。

A:char*s;s="BOOK!";B:char*s;s={"BOOK!"};C:chars[];s="BOOK!";D:chars[10];s="BOOK!";

答案:char*s;s="BOOK!";有以下程序:#include<stdio.h>voidfun1(char*p){char*q;

q=p;

while(*q!='\0')

{(*q)++;q++;}}voidmain(){chara[]={"Program"},*p;

p=&a[3];

fun1(p);

printf("%s\n",a);}程序執(zhí)行后的輸出結(jié)果是(

)。

A:ProhsbnB:ProgsbnC:PrphsbnD:Program

答案:Prohsbn有以下函數(shù):

int

aaa(char*s)

{char*t=s;

while(*t++);

t--;

return(t-s);

}以下關(guān)于aaa函數(shù)功能敘述正確的是(

)。

A:求字符串s所占字節(jié)數(shù)B:將串s復(fù)制到串tC:比較兩個串的大小D:求字符串s的長度

答案:求字符串s的長度有以下程序:#include<stdio.h>#include<string.h>voidmain(){charstr[][20]={"One*World","One*Dream!"},*p=str[1];printf("%d,",strlen(p));

printf("%s\n",p);}程序運行后的輸出結(jié)果是()。

A:9,One*WorldB:9,One*Dream!C:10,One*WorldD:10,One*Dream!

答案:10,One*Dream!有以下程序:#include<stdio.h>#include<stdlib.h>intfun(intn){int*p;p=(int*)malloc(sizeof(int));*p=n;

return

*p;}voidmain(){inta;a=fun(10);

printf("%d\n",a+fun(10));}程序的運行結(jié)果是()。

A:出錯B:20C:0D:10

答案:20有以下程序:#include<stdio.h>intadd(inta,intb)

{return(a+b);}voidmain(){intk,(*f)(int,int)a=5,b=10;f=add;…}則以下函數(shù)調(diào)用語句錯誤的是()。

A:k=add(a,b);B:k=(*f)(a,b);C:k=*f(a,b);D:k=f(a,b);

答案:k=*f(a,b);以下語句中存在語法錯誤的是()。

A:charss[20]={"right?"};B:char*ss={"right?"};C:charss[6][20];ss[1]="right?";D:char*ss[6];ss[1]="right?";

答案:charss[6][20];ss[1]="right?";有以下程序:#include<stdio.h>voidswap(char*x,char*y){char

t;

t=*x;

*x=*y;

*y=t;}voidmain(){char*s1="abc",*s2="123";

swap(s1,s2);

printf("%s,%s\n",s1,s2);}程序執(zhí)行后的輸出結(jié)果是()。

A:abc,123B:321,cbaC:123,abcD:1bc,a23

答案:1bc,a23有以下函數(shù):intfun(char

*x,char

*y){intn=0;while((*x==*y)&&*x!='\0'){x++;y++;n++;}return

n;}函數(shù)的功能是()。

A:將y所指字符串賦給x所指存儲空間B:統(tǒng)計x和y所指字符串中最前面連續(xù)相同的字符個數(shù)C:統(tǒng)計x和y所指字符串中相同的字符個數(shù)D:查找x和y所指字符串中是否有''

答案:統(tǒng)計x和y所指字符串中最前面連續(xù)相同的字符個數(shù)設(shè)變量p是指針變量,語句p=NULL;是給指針變量賦NULL值,它等價于()。

A:p=0;B:p="";C:p='0';D:p=’’;

答案:p=0;

第九章單元測試

可以用typedef將已存在的類型用一個新的名字來代表

A:對B:錯

答案:對用typedef定義新的類型名后,原有類型名仍有效

A:錯B:對

答案:對函數(shù)可以返回指向結(jié)構(gòu)體變量的指針

A:錯B:對

答案:對函數(shù)的返回值類型不能是結(jié)構(gòu)體類型,只能是是簡單類型

A:對B:錯

答案:錯設(shè)有定義:

structcomplex

{intreal,unreal;}data1={1,8},data2;

則data2=(2,6);是正確的。

A:對B:錯

答案:錯以下結(jié)構(gòu)體類型說明和變量定義中正確的是()。

A:struct{intn;charc;}REC;

RECt1,t2;B:structREC;

{intn;charc;};

RECt1,t2;C:typedefstruct{intn;charc;}REC;

RECt1,t2;D:typedefstructREC;

{intn=0;charc='A';}t1,t2;

答案:typedefstruct{intn;charc;}REC;

RECt1,t2;有以下程序:#include<stdio.h>#include<string.h>structA{

inta;

charb[10];

doublec;};voidf(structAt);voidmain(){

structAa={1001,"ZhangDa",1098.0};

f(a);

printf("%d,%s,%6.1f\n",a.a,a.b,a.c);}voidf(structAt){

t.a=1002;

strcpy(t.b,"ChangRong");

t.c=1202.0;}程序運行后的輸出結(jié)果是(

)。

A:1001,ZhangDa,1098.0B:1001,ChangRong,1098.0C:1002,ChangRong,1202.0D:1002,ZhangDa,1202.0

答案:1001,ZhangDa,1098.0有以下程序段:

structst

{intx;int*y;}*pt;

inta[]={1,2},b[]={3,4};

structstc[2]={10,a,20,b};

pt=c;以下選項中表達式的值為11的是(

)。

A:(pt++)->xB:pt->xC:++pt->xD:*pt->y

答案:++pt->x有以下程序:

#include<stdio.h>

structS{intn;inta[20];};

voidf(int*a,intn)

{

inti;

for(i=0;i<n-1;i++)

a[i]+=i;

}

main()

{inti;

structSs={10,{2,3,1,6,8,7,5,4,10,9}};

f(s.a,s.n);

for(i=0;i<s.n;i++)

printf("%d,",s.a[i]);

}程序運行后的輸出結(jié)果是(

)。

A:2,3,1,6,8,7,5,4,10,9,B:3,4,2,7,9,8,6,5,11,10,C:1,2,3,6,8,7,5,4,10,9,D:2,4,3,9,12,12,11,11,18,9,

答案:2,4,3,9,12,12,11,11,18,9,有以下程序:#include<stdio.h>#include<string.h>typedefstruct

{charname[9];charsex;floatscore[2];}STU;voidf(STUa){

STUb={"Zhao",'m',85.0,90.0};

inti;

strcpy(,);

a.sex=b.sex;

for(i=0;i<2;i++)

a.score[i]=b.score[i];}voidmain(){STUc={"Qian",'f',95.0,92.0};

f(c);

printf("%s,%c,%2.0f,%2.0f\n",,c.sex,c.score[0],c.score[1]);}程序的運行結(jié)果是(

)。

A:Qian,f,95,92B:Zhao,f,95,92C:Zhao,m,85,90D:Qian,m,85,90

答案:Qian,f,95,92下面結(jié)構(gòu)體的定義語句中,錯誤的是()。

A:structord{intx;inty;intz;};structorda;B:structord{intx;inty;intz;}a;C:structord{intx;inty;intz;}structorda;D:struct{intx;inty;intz;}a;

答案:structord{intx;inty;intz;}structorda;設(shè)有以下程序段structMP3

{charname[20];

charcolor;

floatprice;}std,*ptr;ptr=&std;若要引用結(jié)構(gòu)體變量std中的color成員,寫法錯誤的是()。

A:std.colorB:(*ptr).colorC:ptr->colorD:std->color

答案:std->color有以下函數(shù)#include<stdio.h>structstu{intmun;charname[10];intage;};viodfun(structstu*p){printf(“%s\n”,p->name);}voidmain(){structstux[3]={{01,”zhang”,20},{02,”wang”,19},{03,”zhao”,18}};

fun(x+2);}程序運行輸出結(jié)果是()。

A:zhangB:zhaoC:wangD:19

答案:zhao#include<stdio.h>structord{intx,y;}dt[2]={1,2,3,4};main(){structord*p=dt;printf("%d,",(++p)->x);

printf("%d\n",++(p->y));}程序運行后的輸出結(jié)果是(

)。

A:1,2B:3,4C:2,3D:3,5

答案:3,5有如下程序段:#include<stdio.h>

voidmain(){structa{intx;inty;}num[2]={{20,5},{6,7}};printf("%d\n",num[0].x/num[0].y*num[1].y);}執(zhí)行后的輸出結(jié)果是(

)。

A:0B:5C:28D:20

答案:28有以下定義和語句structworkers{intnum;

charname[20];

charc;

struct

{intday;intmonth;intyear;}s;};structworkersw,*pw;pw=&w;能給w中year成員賦1980的語句是(

)。

A:pw->year=1980;B:w.s.year=1980;C:*pw.year=198O;D:w.year=1980;

答案:w.s.year=1980;有以下程序#include<stdio.h>#include<string.h>structA{inta;charb[10];doublec;};structAf(structAt);voidmain(){structAa={1001,”ZhangDa”,1098.0};

a=f(a);

printf(“%d,%s,%6.1f\n”,a.a,a.b,a.c);}structAf(structAt){t.a=1002;

strcpy(t.b,”ChangRong”);

t.c=1202.0;

returnt;}程序運行后的輸出結(jié)果是(

)。

A:1002,ChangRong,1202.0B:1002,ZhangDa,1202.0C:1001,ChangRong,1098.0D:1001,ZhangDa,1098.0

答案:1002,ChangRong,1202.0有以下程序#include<stdio.h>structst{intx,y;}data[2]={l,10,2,20};voidmain(){structst*p=data;

printf("%d,",p->y);

printf("%d\n",(++p)->x);}程序的運行結(jié)果是()。

A:10,1B:10,2C:20,2D:20,1

答案:10,2有以下程序#include<stdio.h>structtt

{intx;structtt*y;}*p;structtta[4]={20,a+1,15,a+2,30,a+3,17,a};voidmain(){inti;

p=a;

for(i=1;i<=2;i++)

{printf("%d,",p->x);p=p->y;}}程序的運行結(jié)果是(

)。

A:20,30B:20,15C:30,17D:15,30

答案:20,15設(shè)有以下定義

uniondata

{intd1;floatd2;}demo;

則下面敘述中錯誤的是

A:變量demo與成員d2所占的內(nèi)存字節(jié)數(shù)相同B:若給demo.d1賦99后,demo.d2中的值是99.0C:變量demo中各成員的地址相同D:變量demo和各成員的地址相同

答案:若給demo.d1賦99后,demo.d2中的值是99.0

第十章單元測試

C語言的文件操作中,既可以順序讀寫,又可以隨機讀寫

A:對B:錯

答案:對關(guān)閉打開的文件時使用函數(shù)fclose(),該函數(shù)無參數(shù)。

A:對B:錯

答案:錯打開一個已存在的文件并進行了寫操作后,原有文件中的全部數(shù)據(jù)必定被覆蓋

A:錯B:對

答案:錯C語言中的文件是流式文件,因此只能順序存取數(shù)據(jù)

A:對B:錯

答案:錯文件由數(shù)據(jù)序列組成,可以構(gòu)成二進制文件或文本文件

A:對B:錯

答案:對在利用fread函數(shù)從二進制文件中讀數(shù)據(jù)時,可以用數(shù)組名給數(shù)組中所有元素讀入數(shù)據(jù)

A:對B:錯

答案:對在程序結(jié)束時,應(yīng)當用fclose函數(shù)關(guān)閉已打開的文件

A:對B:錯

答案:對設(shè)fp為指向某二進制文件的指針,且已讀到此文件末尾,則函數(shù)feof(fp)的返回值為()。

A:0B:非0值C:NULLD:\0'

答案:非0值設(shè)文件指針fp已定義,執(zhí)行語句fp=fopen

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論