C語言課后例題解析_第1頁
C語言課后例題解析_第2頁
C語言課后例題解析_第3頁
C語言課后例題解析_第4頁
C語言課后例題解析_第5頁
已閱讀5頁,還剩65頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

b說明:

1、原先的少部分題目有錯,請用紅色的部分替換掉;

2、如果紅色部分有文字“刪除該行”,就直接刪除該行;

第一章C語言的基礎(chǔ)知識

第一節(jié)對C語言的初步認(rèn)識

習(xí)題

1.下列敘述中錯誤的是B

A)任何一個C程序都必須有且僅有一個main函數(shù),C語言總是

從main函數(shù)開始執(zhí)行。

B)C語言中的變量,可以先使用后定義。

C)所有的C語言語句最后都必須有一個分號

D)C程序書寫格式自由,語句可以從任,列開始書寫,一行內(nèi)

可以寫多個語句。

第二節(jié)熟悉VisualC++

習(xí)題

1.C語言源程序名的后綴是B

A).exeB).cC).obj

D).cp

2.下列敘述中錯誤的是D

A)計算機(jī)不能直接執(zhí)行用C語言編寫的源程序

B)C程序經(jīng)C編譯后,生成后綴為.obj的文件是一個二進(jìn)制文

C)后綴為.obj的文件,經(jīng)連接程序生成后綴為.exe的文件是一

個二進(jìn)制文件

D)后綴為.obj和.exe的二進(jìn)制文件都可以直接運(yùn)行

3.用C語言編寫的代碼程序B

A)可立即執(zhí)行B)是一個源程序

C)經(jīng)過編譯即可執(zhí)行D)經(jīng)過編譯解釋才能執(zhí)行

第三節(jié)標(biāo)識符

習(xí)題

1.按照C語言規(guī)定的用戶標(biāo)識符命名規(guī)則,不能出現(xiàn)在標(biāo)識符

中的是B

A)大寫字母B)連接符C)數(shù)字字符D)下劃線

2.以下選項(xiàng)中不合法的標(biāo)識符是C

A)printB)FORC)&aD)_00

3.以下敘述中錯誤的是A

A)用戶所定義的標(biāo)識符允許使用關(guān)鍵字

B)用戶所定義的標(biāo)識符應(yīng)盡量做到“見名知意”

C)用戶所定義的標(biāo)識符必須以字母或下劃線開頭

D)用戶定義的標(biāo)識符中,大、小寫字母代表不同標(biāo)識

4.可在C程序中用作用戶標(biāo)識符的一組標(biāo)識符是A

A)andB)DateC)Hi

D)case

_2007y-m-dDr.Tom

Bigl

5.以下不合法的用戶標(biāo)識符是C

A)j2_KEYB)DoubleC)4d

D)_8_

6.以下不能定義為用戶標(biāo)識符的是D

A)MainB)_0C)JntD)sizeof

7.下列選項(xiàng)中,不能用作標(biāo)識符的是D

A)_1234_B)_1_2C)int_2_D)

2_int_

8.以下4組用戶定義標(biāo)識符中,全部合法的一組是A

A)_mainB)IfC)txtD)int

enclude-maxREALk_2

sinturbo3COM_001

第四節(jié)數(shù)制轉(zhuǎn)換

習(xí)題

1.十進(jìn)制整數(shù)360的八進(jìn)制為,十六進(jìn)制為

550168

第五節(jié)整數(shù)和實(shí)數(shù)

習(xí)題

1.以下選項(xiàng)中正確的整型常量是C

A)10110BB)0386C)OXffaD)

x2a2

2.以下關(guān)于long、int和short類型數(shù)據(jù)占用內(nèi)存大小的敘述中

正確的是D

A)均占4個字節(jié)B)根據(jù)數(shù)據(jù)的大小來決定所占內(nèi)存的字節(jié)數(shù)

C)由用戶自己定義D)由C語言編譯系統(tǒng)決定

3.以下選項(xiàng)中不屬于C語言的類型的是D

A)signedshortintB)unsignedlongint

C)unsignedintD)longshort

4.以下選項(xiàng)中合法的實(shí)型常數(shù)是C

A)5E2.0B)E-3C).2E0D)1.3E

5.以下選項(xiàng)中,不能作為合法常量的是B

A)1.234e04B)1.234e0.4C)1.234e+4

D)1.234e0

6.以下選項(xiàng)中可作為C語言合法常量的是A

A)-80.B)-080C)-8el.OD)-80.0e

7.以下符合C語言語法的實(shí)型常量是C

A)1.2E0.5B)3.14.159EC).5E-3D)

E15

8.以下不合法的數(shù)值常量是C

A)OilB)leiC)8.0E0.5D)

Oxabcd

9.以下選項(xiàng)中,合法的一組C語言數(shù)值常量是B

A)0285e-3-OxfB)12.OXa234.5e0

C).1774c1.5OXa23D)0x8A10,0003.e

10.下列定義變量的語句錯誤的是D

A)int_int;B)doubleint_;C)longFor;D)float

US$;

第六節(jié)算術(shù)表達(dá)式與賦值表達(dá)式

習(xí)題

1.表達(dá)式3.6—5/2+1.2+5%2的值是D

A)4.3B)4.8C)3.3D)3.8

2.設(shè)有定義:floatx=123.4567;,則執(zhí)行以下語句后輸出的結(jié)果

是o123.46

printf("%f\n",(int)(x*100+0.5)/100.0);

3.設(shè)有定義:floata=2,b=4,h=3;,以下C語言表達(dá)式與代數(shù)式X

h計算結(jié)果不相符的是B

A)(a+b)*h/2B)(l/2)*(a+b)*h

C)(a+b)*h*l/2D)h/2*(a+b)

第七節(jié)自加自減運(yùn)算符、逗號表達(dá)式

習(xí)題

1.設(shè)變量已正確定義為整型,則表達(dá)式n=i=2,++i,i++的值為

o3

2.設(shè)有定義:intk=O;,以下選項(xiàng)的4個表達(dá)式中與其他3個表達(dá)

式的值不相同的是A

A)k++B)k+=lC)++k

D)k+1

3.有以下程序B

main()

(

charal='M',a2='m';

printf("%c\n",(al,a2));

)

以下敘述中正確的是

A)程序輸出大寫字母MB)程序輸出小寫字母m

C)格式說明符不足,編譯出錯D)程序運(yùn)行時產(chǎn)生出錯信息

4.有以下程序:B

main()

{inta=O,b=O;

a=10;/*給a賦值

b=20;給b賦值*/

printf("a+b=%d\n",a+b);/*輸出計算結(jié)果*/

程序運(yùn)行后的結(jié)果是

A)a+b=30B)a+b=10C)30D)程序出

第八節(jié)字符

習(xí)題

1.以下選項(xiàng)中不屬于字符常量的是()oB

A),CB)"C"C)'O'D)'\072'

2.已知字母A的ASCH代碼值為65,若變量kk為char型,以

下不能正確判斷出kk中的值為大寫字母的表達(dá)式是()。B

A)kk>='A'&&kk<='Z'B)!(kk>='A'IIkk<='Z')

C)(kk+32)>='a'&&(kk+32)<='z'D)kk>=48&&kk<91

3.已知字符A的ASCH代碼值是65,字符變量cl的值是A,c2

的值是D。執(zhí)行語句printf("%d,%d”,cl,c2-2);后,輸出結(jié)果是

()oC

A)A,BB)A,68C)65,66D)65,

68

4.以Q5)以下合法的字符型常量是

A)'\x13'B)'\018'C)'65'D)'\n'

5.已知大寫字母A的ASCII碼是65,小寫字母a的ASCII碼是

97,以下不能將變量c中大寫字母轉(zhuǎn)換為對應(yīng)小寫字母的語句是

()oD

A)c=c-'Z'+'z'B)c=c+32

C)c=c-'A'+'a'D)c='A'+c-'a'

第九節(jié)位運(yùn)算

習(xí)題

1.變量a中的數(shù)據(jù)用二進(jìn)制表示的形式是01011101,變量b中

的數(shù)據(jù)用二進(jìn)制表示的形式是11110000。若要求將a的高4位取

反,低4位不變,所要執(zhí)行的運(yùn)算是A

A)aAbB)albC)a&bD)a?4

2.有以下程序

#include<stdio.h>

main()

(

inta=l,b=2,c=3,x;

x=(aAb)&c;printf("%d\n",x);

)

程序的運(yùn)行結(jié)果是D

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

3.有以下程序

main()

unsignedchara=2,b=4,c=5,d;

d=alb;d&=c;printf("%d\n",d);

)

程序運(yùn)行后的輸出結(jié)果是B

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

4.若變量已正確定義,則以下語句的輸出結(jié)果是()0B

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

A)-1B)0C)1D)32

5.設(shè)有以下語句

inta=l,b=2,c;

c=aA(b?2);

執(zhí)行后,c的值為D

A)6B)7C)8D)9

第二章數(shù)據(jù)輸出與輸入

第一節(jié)第二節(jié)數(shù)據(jù)輸出2節(jié)合在一起只有1個課件

習(xí)題

1.有以下程序段

charch;

intk;

ch='a';

k=12;

printf("%c,%d,",ch,ch,k);

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

已知字符a的ASCII十進(jìn)制代碼為97,則執(zhí)行上述程序段后輸

出結(jié)果是D

A)因變量類型與格式描述符的類型不匹配輸出無定值

B)輸出項(xiàng)與格式描述符個數(shù)不符,輸出為零值或不定值

C)a,97,12k=12

D)a,97,k=12

2.若變量已正確定義,有以下程序段刪除該題

inta=3,b=5,c=7;

if(a>b)a=b;c=a;

if(c!=a)c=b;

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

其輸出結(jié)果是B

A)程序段有語法錯B)3,5,3C)3,5,5

D)3,5,7

3.有以下程序,其中%11表示按無符號整數(shù)輸出

main()

unsignedshortx=0xFFFF;/*x的初值為十六進(jìn)制數(shù)*/

printf("%u\n",x);

程序運(yùn)行后的輸出結(jié)果是B

A)-1B)65535C)32767

D)OXFFFF

4.以下敘述中不正確的是A

A)調(diào)用printf函數(shù)時,必須要有輸出項(xiàng)

B)使用putchar函數(shù)時,必須在之前包含頭文件stdio.h

C)在C語言中,整數(shù)可以以十進(jìn)制、八進(jìn)制或十六進(jìn)制的形式

輸出

D)使用putchar函數(shù)可以不要輸出項(xiàng)

5.設(shè)有以下程序

main()

(

intc=35;printf("%d",c&c);

)

程序運(yùn)行后的輸出結(jié)果是C

A)0B)70C)35D)53

6.以下程序運(yùn)行后的輸出結(jié)果是o88

main()

intx=0210;printf("%X\n",x);

)

第三節(jié)數(shù)據(jù)輸入

習(xí)題

1.以下程序運(yùn)行時若從鍵盤輸入:102030〈回車>。輸出結(jié)

果是一。A

#include<stdio.h>

main()

(

inti=0,j=0,k=0;

scanf("%d%*d%d",&i,&j,&k);

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

)

A)10,30,0B)10,20,30C)0,0,0

D)程序出錯

2.已知字符A的ASCII代碼值為65,以下程序運(yùn)行時若從鍵盤

輸入:B33〈回車>。輸出結(jié)果是A

#include"stdio.h"

main()

chara,b;

a=getchar();scanf("%d",&b);

a=a-A+0;

b=b*2;

printf("%c%c",a,b);

A)程序段有語法錯B)IBC)165D)1b

3.有以下程序

main()

intm=0256,n=256;

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

程序運(yùn)行后的輸出結(jié)果是()o

A)02560400B)0256256C)256400D)

400400

4.有以下程序

main()

inta=666,b=888;

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

程序運(yùn)行后的輸出結(jié)果是()oB

A)錯誤信息B)666C)888D)

666,888

5.設(shè)有以下程序

main()

(

intx=102,y=012;

printf("%2d,%d\n",x,y);

)

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

A)10,01B)02,12C)102,10

D)02,10

6.執(zhí)行以下程序時輸入1234567<CR>,則輸出結(jié)果是。

#include<stdio.h>

main()

(

inta=l,b;

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

)

第三章選擇結(jié)構(gòu)

第一節(jié)關(guān)系運(yùn)算與邏輯運(yùn)算

習(xí)題

1.已知字母A的ASCH代碼值為65,若變量kk為char型,以

下不能正確判斷出kk中的值為大寫字母的表達(dá)式是B

A)kk>='A'&&kk<='Z'B)!(kk>='A'II

kk<='Z')

C)(kk+32)>='a'&&(kk+32)<='z'D)

isalpha(kk)&&(kk<91)

2.當(dāng)變量c的值不為2、4、6時,值也為“真”的表達(dá)式是B

A)(c==2)II(c==4)II(c==6)B)

(c>=2&&c<=6)II(c!=3)II(c!=5)

C)(c>=2&&c<=6)&&!(c%2)D)

(c>=2&&c<=6)&&(c%2!=1)

3.以下選項(xiàng)中,當(dāng)x為大于1的奇數(shù)時,值為。的表達(dá)式D

A)x%2==lB)x/2C)x%2!=0D)

x%2==0

4.以下關(guān)于邏輯運(yùn)算符兩側(cè)運(yùn)算對象的敘述中正確的是()。

D

A)只能是整數(shù)。和1B)只能是整數(shù)0

或非。整數(shù)

C)可以是結(jié)構(gòu)體類型的數(shù)據(jù)D)可以是任意合

法的表達(dá)式

5.設(shè)有定義:intk=l,m=2;floatf=7;,則以下選項(xiàng)中錯誤的表達(dá)

式是C

A)k=k>=kB)-k++C)k%int(f)

D)k>=f>=m

6.設(shè)有定義:inta=2,b=3,c=4;,則以下選項(xiàng)中值為。的表達(dá)式是

A

A)(!a==l)&&(!b==O)B)(!a==l)ll(!b==O)

C)a&&bD)all(b+b)&&(c-a)

第二節(jié)if語句

習(xí)題

1.若變量已正確定義,有以下程序段

inta=3,b=5,c=7;

if(a>b)a=b;c=a;

if(c!=a)c=b;

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

其輸出結(jié)果是B

A)程序段有語法錯B)3,5,3C)3,5,5

D)3,5,7

2.當(dāng)把以下4個表達(dá)式用作if語句的控制表達(dá)式時,有一個選

項(xiàng)與其他3個選項(xiàng)含義不同,這個選項(xiàng)是D

A)k%2B)k%2==lC)(k%2)!=0

D)!k%2==l

3.下列條件語句中,功能與其他語句不同的是D

A)if(a)printf("%d\n",x);elseprintf("%d\n",y);

B)if(a==O)printf("%d\n",y);elseprintf("%d\n",x);

C)if(a!=0)printf("%d\n",x);elseprintf("%d\n",y);

D)if(a==O)printf("%d\n",x);elseprintf("%d\n",y);

4.設(shè)變量x和y均已正確定義并賦值,以下if語句中,在編譯

時將產(chǎn)生錯誤信息的是C

A)if(x++);B)if(x>y&y!=O);

C)if(x>y)x--D)if(y<0){;}

elsey++:elsex++;

第三節(jié)嵌套的if語句

習(xí)題

1.在嵌套使用if語句時,C語言規(guī)定else總是C

A)和之前與其具有相同縮進(jìn)位置的if配對B)和之前與其

最近的if配對

C)和之前與其最近的且不帶else的if配對D)和之前的第

一個if配對

2.有以下程序

main()

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

if(a>b>c)

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

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

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

else

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

)

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

A)2B)3C)4D)編譯時有

錯,無結(jié)果

3.以下程序的輸出結(jié)果是C

main()

{inta=5,b=4,c=6,d;

printf("%d\n",d=a>b?(a>c?a:c):(b));

)

A)5B)4C)6D)不確定

第四節(jié)條件表達(dá)式、switch語句、goto語句

習(xí)題

1.以下程序段中與語句k=a>b?(b>c?l:0):0;功能等價的是A

A)if((a>b)&&(b>c))k=l;B)if((a>b)ll(b>c))

k=l;

elsek=0;elsek=0;

C)if(a<=b)k=0;D)if(a>b)k=l;

elseif(b<=c)k=l;elseif(b>c)k=l;

elsek=0;

2.下列敘述中正確的是D

A)beak語句只能用于switch

B)在switch語句中必須使用default

C)break語句必須與switch語句中的case配對使用

D)在switch語句中,不一定使用break語句

3.有以下程序段B

intk=0,a=l,b=2,c=3;

k=a<b?b:a;k=k>c?c:k;

執(zhí)行該程序段后,k的值是

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

4.有以下程序D

#include<stdio.h>

main()

(

intx=l,y=O,a=O,b=O;

switch(x)

(

case1:

switch(y)

(

case0:a++;break;

case1:b++;break;

case2:a++;b++;break;

case3:a++;b++;

)

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

)

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

A)a=l,b=OB)a=2,b=2C)a=l,b=l

D)a=2,b=l

5.以下敘述中正確的是C

A)break語句只能用于switch語句題中

B)continue語句的作用是:使程序的執(zhí)行流程跳出包含它的所

有循環(huán)

C)break語句只能用在循環(huán)體內(nèi)和switch語句體內(nèi)

D)在循環(huán)體內(nèi)使用break語句和continue語句的作用相同

6.有以下程序

main()

(

intk=5,n=0;

do

switch(k)

{case1:case3:n+=l;break;

default:n=O;k—;

case2:case4:n+=2;k—;break;

)

printf("%d”,n);

}while(k>0&&n<5);

)

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

A)235B)0235C)02356

D)2345

第四章循環(huán)結(jié)構(gòu)

第一節(jié)while語句

習(xí)題

1.有以下程序

main()

{inty=10;

while(y—);printf("y=%d\n",y);

)

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

A)y=0B)y=-lC)y=lD)while構(gòu)

成無限循環(huán)

2.有以下程序

main()

(

intk=5;

while(-k)printf("%d",k-=3);

printf("\n");

)

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

A)1B)2C)4D)死循環(huán)

第二節(jié)do-while語句

習(xí)題

1.若變量已正確定義,有以下程序段

i=0;

do

printf("%d,",i);

while(i++);

printf("%d\n",i)

其輸出結(jié)果是B

A)0,0B)0,1C)1,1

D)程序進(jìn)入無限循環(huán)

2.有以下程序段D

intn,t=l,s=O;

scanf("%d",&n);

do{s=s+t;t=t-2;}while(t!=n);

為使此程序段不陷入死循環(huán),從鍵盤輸入的數(shù)據(jù)應(yīng)該是

A)任意正奇數(shù)B)任意負(fù)偶數(shù)C)任意正偶數(shù)

D)任意負(fù)奇數(shù)

3.以下程序的功能是:將輸入的正整數(shù)按逆序輸出。例如,若

輸入135,則輸出531,請?zhí)羁?。n/=10

#include<stdio.h>

main()

(

intn,s;

printf("Enteranumber:");scanf("%d",&n);

printf("Output:");

do

(

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

_____,

}while(n!=0);

printf("\n");

第三節(jié)for語句

習(xí)題

1.有以下程序

#include<stdio.h>

main()

(

intx=8;

for(;x>0;x—)

(

if(x%3)

(

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

continue;

)

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

)

)

程序的運(yùn)行結(jié)果是D

A)7,4,2B)8,7,5,2C)9,7,6,4D)8,

5,4,2

2.以下不構(gòu)成無限循環(huán)的語句或者語句組是A

A)n=0;B)n=0;

do{++n;}while(n<=0);while(l){n++;}

C)n=10;D)for(n=0,i=l;;i++)n+=i;

while(n);{n-;}

第四節(jié)循環(huán)結(jié)構(gòu)的嵌套

習(xí)題

1.有以下程序

main()

(

inti,n=O;

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

(

do

(

if(i%3)continue;

n++;

}while(!i);

n++;

)

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

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

A)n=5B)n=2C)n=3D)

n=4

2.有以下程序

main()

(

inti,j,x=O;

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

(

x++;

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

(

if(j%2)continue;

x++;

)

X++;

)

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

)

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

A)x=4B)x=8C)x=6

D)x=12

3.下面程序的功能是輸出以下形式的金字塔圖案

*

***

main()

(

inti,j;

for(i=l;i<=4;i++)

(

for(j=l;j<=4-i;j++)printf("");

for(j=l;j<=;j++)printf("*");

printf("\n");

)

)

在下劃線處應(yīng)填入的是B

A)iB)2*i-lC)2*i+l

D)i+2

第五節(jié)循環(huán)結(jié)構(gòu)的分析方法

習(xí)題

1.以下程序段中的變量已正確定義

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

for(k=l;k<3;k++);printf("*");

程序段的輸出結(jié)果是()D

A)B)****C)**D)*

第五章函數(shù)

第一節(jié)函數(shù)的定義、庫函數(shù)

習(xí)題

1.在C語言中,函數(shù)返回值的類型最終取決于A

A)函數(shù)定義時在函數(shù)首部所說明的函數(shù)類型

B)return語句中表達(dá)式值的類型

C)調(diào)用函數(shù)時主函數(shù)所傳遞的實(shí)參類型

D)函數(shù)定義時形參的類型

2.有以下函數(shù)

intfun(char*s)

(

char*t=s;

while(*t++);

return(t-s);

)

該函數(shù)的功能是B

A)比較兩個字符的大小B)計算s所指字符串

占用內(nèi)存字節(jié)的個數(shù)

C)計算s所指字符串的長度D)將?s所指字符串復(fù)制

到字符串t中

3.程序中對fun函數(shù)有如下說明C

void*fun();

此說明的含義是

A)fun函數(shù)無返回值

B)fun函數(shù)的返回值可以是任意的數(shù)據(jù)類型

C)fun函數(shù)的返回值是無值型的指針類型

D)指針fun指向一個函數(shù),該函數(shù)無返回值

第二節(jié)函數(shù)的調(diào)用與函數(shù)說明

習(xí)題

1.有以下程序

#include<stdio.h>

intf(intx)

(

inty;

if(x==0llx==l)return(3);

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

returny;

main()

intz;

z=f(3);

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

)

程序的運(yùn)行結(jié)果是C

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

2.以下敘述中錯誤的是C

A)改變函數(shù)形參的值,不會改變對應(yīng)實(shí)參的值

B)函數(shù)可以返回地址值

C)可以在函數(shù)內(nèi)部定義函數(shù)

D)調(diào)用sin函數(shù)需要包含頭文件math.h

3.若程序中定義了以下函數(shù)

doublemyadd(doublea,doubleb)

(

return(a+b);

)

并將其放在調(diào)用語句之后,則在調(diào)用之前應(yīng)進(jìn)行函數(shù)聲明,以下

選項(xiàng)中錯誤的是A

A)doublemyadd(doublea,b);B)double

myadd(double,double);

C)doublemyadd(doubleb,doublea);D)double

myadd(doublex,doubley);

第三節(jié)函數(shù)的數(shù)據(jù)傳遞

習(xí)題

1.有以下程序

voidf(intv,intw)

(

intt;

t=v;v=w;w=t;

)

main()

(

intx=l,y=3,z=2;

if(x>y)

f(x,y);

elseif(y>z)

f(y,z);

else

f(x,z);

printf("%d,%d,%d\n",x,y,z);

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

A)1,2,3B)3,1,2C)1,3,2D)

2,3,1

2.以下程序的輸出結(jié)果是_________o13

#include<stdio.h>

voidfun(intx)

(

if(x/2>0)

fun(x/2);

printf("%d",x);

)

main()

(

fun(3);

printf("\n");

)

第六章指針

第一節(jié)變量的地址和指針

習(xí)題

1.以下敘述中錯誤的是C

A)改變函數(shù)形參的值,不會改變對應(yīng)實(shí)參的值

B)函數(shù)可以返回地址值

C)可以給指針變量賦一個整數(shù)作為地址值

D)當(dāng)在程序的開頭包含文件stdio.h時,可以給指針變量賦NULL

2.以下定義語句中正確的是D

A)inta=b=0;B)char

'A'=65+l,b='b';

C)floata=l,*b=&a,*c=&b;D)double

a=0.0,b=l.l;

3.設(shè)已有定義:floatx;則以下對指針變量p進(jìn)行定義且賦初值

的語句中正確的是D

A)float*p=1024;B)

int*p=(floatx);

C)floatp=&x;D)float

*P=&x;

第二節(jié)指針變量賦值及運(yùn)算

習(xí)題

1.設(shè)有定義:intn=0,*p=&n,**q=&p;,則以下選項(xiàng)中,正確的

賦值語句是D

A)p=l;B)*q=2;C)q=p;

D)*p=5;

2.有以下程序

main()

inta=l,b=3,c=5;

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

*p=*pl*(*p2);

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

)

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

A)1B)2C)3

D)4

3.設(shè)有定義:intn1=0,n2,*p=&n2,*q=&n1;,以下賦值語句中與

n2=nl;語句等價的是A

A)*p=*q;B)p=q;C)*p=&nl;

D)p=*q;

4.有以下程序

#include<stdio.h>

main()

(

intn,*p=NULL;

*p=&n;

printf("Inputn:");scanf("%d",&p);

printf("outputn:");printf("%d\n",p);

)

該程序試圖通過指針p為變量n讀入數(shù)據(jù)并輸出,但程序有多處

錯誤,以下語句正確的是A

A)intn,*p=NULL;B)*p=&n;

C)scanf("%d",&p)D)printf("%d\n",p);

第三節(jié)函數(shù)之間地址值的傳遞

習(xí)題

1.以下程序的功能是:利用指針指向3個整型變量,并通過指

針運(yùn)算找出3個數(shù)中的最大值,輸出到屏幕上,請?zhí)羁?*pmax=x;

(或者max=x)

main()

(

intx,y,z,max,*px,*py,*pz,*pmax;

scanf("%d%d%d",&x,&y,&z);

px=&x;

py=&y;

pz=&z;

pmax=&max;

if(*pmax<*py)

*pmax=*py;

if(*pmax<*pz)

*pmax=*pz;

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

)

2.voidf(inty,int*x)

{y=y+*x;*x=*x+y;}

main()

{intx=2,y=4;

f(y,&x);

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

)

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

3.以下程序的輸出結(jié)果是_________o35

#include<stdio.h>

voidswap(int*a,int*b)

(

int*t;

t=a;a=b;b=t;

main()

inti=3,j=5,*p=&i,*q=&j;

swap(p,q);

printf("%d%d\n",*p,*q);

第七章數(shù)組

第一節(jié)一維數(shù)組

習(xí)題

1.有以下程序段

intj;floaty;charname[50];

scanf("%2d%f%s",&j,&y,name);

當(dāng)執(zhí)行上述程序段,從鍵盤上輸入555667777abe后,y的值為

B

A)55566.0B)566.0C)7777.0

D)566777.0

2.有以下程序

main()

(

charch[]="uvwxyz",*pc;

pc=ch;printf("%c\n",*(pc+5));

程序運(yùn)行后的輸出結(jié)果是A

A)zB)0C)元素ch[5]地址D)字

符y的地址

3.有以下程序

#include<stdio.h>

main()

(

ints[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;

for(i=0;i<12;i++)c[s[i]]++;

for(i=l;i<5;i++)printf("%d",c[i]);

printf("\n");

)

程序的運(yùn)行結(jié)果是C

A)1234B)2344C)4332

D)1123

第二節(jié)二維數(shù)組

習(xí)題

1.以下錯誤的定義語句是C

A)intX[][3]={{0},{1},{1,2,3));

B)intx[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3});

C)intX[4][]={{123},{1,2,3},{1,2,3},{1,2,3});

D)intx[][3]={l,2,3,4);

2.若有定義:inta[2][3];,以下選項(xiàng)中對a數(shù)組元素正確引用的

是D

A)a[2][!l]B)a[2][3]C)a[0][3]D)

a[l>2][!l]

3.若有定義語句:inta[3][6];,按在內(nèi)存中的存放順序,a數(shù)組

的第10個元素是B

A)a[0][4]B)a[l][3]C)a[0][3]

D)a[l][4]

第三節(jié)數(shù)組應(yīng)用舉例

習(xí)題

1.有以下程序

main()

{inti,t[][3]={9,8,7,6,5,4,3,2,l};

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

printf("%d",t[2-i][i]);

)

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

A)753B)357C)369

D)751

2.有以下程序

main()

inta[4][4]={{l,4,3,2,),{8,6,5,7,},{3,7,2,5,),{4,8,6,l,}},i,k,t;

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

for(k=i+i;k<4;k++)

if(a[i][i]<a[k][k])

{t=a[i][i];

a[i][i]=a[k][k];

a[k][k]=t;

)

For(i=0;i<4;i++)

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

)

程序運(yùn)行后的輸出結(jié)果是B

A)6,2,1,1,B)6,4,3,2,C)1,1,2,6,

D)2,3,4,6,

3.有以下程序

main()

(

inta[4][4]={{lA3,2,),{8,6,5,7,},{3,7,2,5,},{4,8,6,l,}},i,j,k,t;

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

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

for(k=j+l;k<4;k++)

if(a[j][i]>a[k][i])

{t=a[j][i];a[j][i]=a[k][i];a[k][i]=t;}/*按列排序*/

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

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

)

程序運(yùn)行后的輸出結(jié)果是A

A)1,2,5,7,B)8,7,3,1,C)4,7,5,2,

D)1,6,2,1,

第八章字符串

第一節(jié)字符串與字符串?dāng)?shù)組

習(xí)題

1.以下關(guān)于字符串的敘述正確的是D

A)C語言中有字符串類型的常量和變量

B)兩個字符串中的字符個數(shù)相同時才能進(jìn)行字符串大小的比較

C)可以用關(guān)系運(yùn)算符對字符串的大小進(jìn)行比較

D)空串一定比空格打頭的字符串小

2.以下正確的字符串常量是D

A)"\\\"B)'abc'C)OlympicGames

D)""

3.設(shè)有如下程序段A

chars[20]="Bejing",*p;

P=S;

則執(zhí)行P=S;語句后,以下敘述正確的是

A)可以用*p表示s[0]

B)s數(shù)組中元素的個數(shù)和p所指字符串長度相等

C)s和p都是指針變量

D)數(shù)組s中的內(nèi)容和指針變量p中的內(nèi)容相等

4.以下能正確定義字符串的語句是D

A)charstr[]={'\064'};B)charstr="\x43";

C)charstr=";D)charstr[]="\O";

第二節(jié)字符串的輸入輸出

習(xí)題

1.當(dāng)用戶要求輸入的字符串中含有空格時,應(yīng)使用的輸入函數(shù)

是B

A)scanf()B)getchar()C)gets()

D)getc()

2.有以下程序

#include<stdio.h>

voidfun(char*a,char*b)

(

while(*a=='*')a++;

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

main()

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

fun(s,t);puts(t);

)

程序的運(yùn)行結(jié)果是C

A)*****a*bB)a*bC)a*b****

D)ab

第三節(jié)對字符串的操作

習(xí)題

1.若有定義:char*x="abcdefghV;,以下選項(xiàng)中正確運(yùn)用了strcpy

函數(shù)的是D

A)chary[10];strcpy(y,x[4]);

B)chary[10];strcpy(++y,&x[l]);

C)chary[10],*s;strcpy(s=y+5,x);

D)chary[10],*s;strcpy(s=y+l,x+l);

2.有以下程序

#include<stdio.h>

main()

charp[20]={'a','b','c','d'},q[]="abc",r[]="abcde"

strcat(p,r);

strcpy(p+strlen(q),q);

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

)

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

A)9B)6C)11

D)7

3.有以下程序

#include<stdio.h>

voidf(charp[][10],intn)/*字符串從小到大排序*/

(

chart[10];inti,j;

for(i=0;i<9;i++)改成for(i=0;i<n-l;i++)

for(j=i+l;j<10;j++)改成for(j=i+l;j<n;j++)

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

strcpy(t,p[i]);

strcpy(p[i],p[j]);

strcpy(p[i],t);改成strcpy(p[j],t);

main()

charp[5][10]={"abc","aabdfg","abbd","dcdbe","cd"};

f(P,5);

printf("%d\n",strlen(p[O]));

)

程序運(yùn)行后的輸出結(jié)果是D改成C

A)2B)4C)6

D)3

第九章文件

第一節(jié)文件的基礎(chǔ)知識

習(xí)題

1.以下敘述中正確的是D

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

B)打開一個已存在的文件進(jìn)行了寫操作后,原有文件中的全部

數(shù)據(jù)必定被覆蓋

C)在個程序中當(dāng)對文件進(jìn)行了寫操作后,必須先關(guān)閉該文件

然后再打開,才能讀到第1個數(shù)據(jù)

D)當(dāng)對文件的讀(寫)操作完成之后,應(yīng)關(guān)閉文件,否則可能導(dǎo)致數(shù)

據(jù)丟失

2.以下敘述中錯誤的是C

A)C語言中對二進(jìn)制文件的訪問速度比文本文件快

B)C語言中,隨機(jī)文件以二進(jìn)制代碼形式存儲數(shù)據(jù)

C)語句FILEfp;定義了一個名為fp的文件指針

D)C語言中的文本文件以ASCII碼形式存儲數(shù)據(jù)

第二節(jié)文件的操作

習(xí)題

1.以下敘述中錯誤的是B

A)gets函數(shù)用于從終端讀入字符串

B)getchar函數(shù)用于從磁盤文件讀入字符

C)fputs函數(shù)用于把字符串輸出到文件

D)fwrite函數(shù)用于以二進(jìn)制形式輸出數(shù)據(jù)到文件

2.讀取二進(jìn)制文件的函數(shù)調(diào)用形式為:fread(buffer,size,count,fp);,

其中buffer代表的是C

A),個文件指針,指向待讀取的文件

B)一個整型變量,代表待讀取的數(shù)據(jù)的字節(jié)數(shù)

C)一個內(nèi)存塊的首地址,代表讀入數(shù)據(jù)存放的地址

D)一個內(nèi)存塊的字節(jié)數(shù)

3.設(shè)fp為指向某二進(jìn)制文件的指針,且已讀到此文件末尾,則

函數(shù)feof(fp)的返回值為B

A)EOFB)非0值C)0

D)NULL

第三節(jié)文件例題

習(xí)題

1.有以下程序(提示:程序中fseek(fp,-2L*sizeof(int),SEEK_END);

語句的作用是使位置指針從文件尾向前移2*sizeof(int)字節(jié))

#include<stdio.h>

main()

(

FILE*fp;inti,a[4]={l,2,3,4),b;

fp=fopen("data.dat","wb");

for(i=0;i<4;i++)fwrite(&a[i],sizeof(int),1,fp);

fclose(fp);

fp=fopen("data.dat","rb");

fseek(fp,-2L*sizeof(int),SEEK_END);

fread(&b,sizeof(int),1,fp);/*從文件中讀取sizeof(int)字節(jié)的數(shù)據(jù)到

變量b中*/

fclose(fp);

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

)

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

A)2B)1C)4

D)3

2.有以下程序

#include<stdio.h>

main()

(

FILE*fp;intk,n,a[6]={l,2,3,4,5,6};

fp=fopen("d2.dat","w");

fprintf(fp,"%d%d%d\n",a[0],a[l],a[2]);fprintf(fp,

"%d%d%d\n",a[3],a[4],a[5]);

fclose(fp);

fp=fopen("d2.dat","r");

fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);

fclose(fp);

)

程序運(yùn)行后的輸出結(jié)果是D

A)12B)14C)1234

D)123456

3.有以下程序

#include<stido.h>

main()

(

FILE*fp;inta[10]={l,2,3,0,0},i;

fp=fopen("d2.dat","wb");

fwrite(a,sizeof(int),5,fp);

fwrite(a,sizeof(int),5,fp);

fclose(fp);

fp=fopen("d2.dat","rb");

fread(a,sizeof(int),10,fp);

fclose(fp);

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

)

程序的運(yùn)行結(jié)果是D

A)l,2,3,0,0,0,0,0,0,0,B)

1,2,3,1,23,0,0,0,0,

C)123,0,0,0,0,123,0,0,0,0,D)

1,2,3,0,0,1,23,0,0,

第十章對C語言的深入討論

第一節(jié)用戶定義類型、編譯預(yù)處理

習(xí)題

1.以下關(guān)于typedef的敘述錯誤的是A

A)用typedef可以增加新類型

B)typedef只是將已存在的類型用一個新的名字來代表

C)用typedef可以為各種類型說明一個新名,但不能用來為變量

說明一個新名

D)用typedef為類型說明一個新名,通??梢栽黾映绦虻目勺x性

2.以下敘述中錯誤的是D

A)在程序中凡是以“祥”開始的語句行都是預(yù)處理命令行

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

C)#defineMAX是合法的宏定義命令行

D)C程序?qū)︻A(yù)處理命令行的處理是在程序執(zhí)行的過程中進(jìn)行的

3.若程序中有宏定義行:#defineN100,則以下敘述中正確

的是B

A)宏定義行中定義了標(biāo)識符N的值為整數(shù)100

B)在編譯程序?qū)源程序進(jìn)行預(yù)處理時用100替換標(biāo)識符N

C)對C源程序進(jìn)行編譯時用100替換標(biāo)識符N

D)在運(yùn)行時用100替換標(biāo)識符N

第二節(jié)標(biāo)識符的作用域和存儲分類

習(xí)題

1.在C語言中,只有在使用時才占用內(nèi)存單元的變量,其存儲

類型是A

A)auto和registerB)extern和register

C)auto和staticD)static和register

2.有以下程序:

fun(intx,inty)

staticintm=0,i=2;

i+=m+l;m=i+x+y;returnm;

main()

(

intj=l,m=l,k;

k=fun(j,m);printf("%d,",k);

k=fun(j,m);printf("%d\n",k);

)

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

A)5,5B)5,11C)11,11D)11,5

3.有以下程序

inta=4;

intf(intn)

(

intt=0;

staticinta=5;

if(n%2){inta=6;t+=a++;}

else{inta=7;t+=a++;}

returnt+a++;

main()

ints=a,i=O;

for(;i<2;i++)s+=f(i);

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

)

程序運(yùn)行后的輸出結(jié)果是B

A)24B)28C)32D)36

第三節(jié)動態(tài)存儲分配

習(xí)題

1.已有定義:double*p;,請寫出完整的語句,利用malloc函數(shù)

使P指向一個雙精度型的動態(tài)存儲單元

op=(double*)malloc(sizeof(double))

2.以下程序中給指針p分配3個double型動態(tài)內(nèi)存單元,請?zhí)?/p>

空。3*sizeof(double)

#include<stdlib.h>

main()

(

double*p;

p=(double*)calloc();

p[0]=1.5;

p[l]=2.5;

P⑵=3.5;

printfC4%f%f%f\n,,,p[0],p[l],p[2]);

3.以下程序的輸出結(jié)果是o40

#include<stdlib.h>

main()

(

char*sl,*s2,m;

s1=s2=(char*)malloc(sizeof(char));

*sl=15;

*s2=20;

m=*sl+*s2;

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

)

第四節(jié)main函數(shù)的參數(shù)與函數(shù)指針

習(xí)題

1.設(shè)有定義語句int(*f)(int);,則以下敘述正確的是B

A)f是基類型為int的指針變量。

B)f是指向函數(shù)的指針變量,該函數(shù)具有一個int類型的形參。

C)f是指向int類型一維數(shù)組的指針變量。

D)f是函數(shù)名,該函數(shù)的返回值是基類型為int類型的地址。

2.有以下程序:

intadd(inta,intb){return(a+b);}

main()

(

intk,(*f)(),a=5,b=10;

f=add;

)

則以下函數(shù)調(diào)用語句錯誤的是C

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

C)k=*f(a,b);D)k=f(a,b);

3.有以下程序

floatfl(floatn)

{returnn*n;}

floatf2(floatn)

{return2*n;}

main()

{

float(*pl)(float),(*p2)(float),(*t)(float),yl,y2;

pl=fl;

p2=f2;

yl=p2(pl(2.0));

t=pl;pl=p2;p2=t;

y2=p2(pl(2.0));

printf(z,%3.Of,%3.Of\n”,yl,y2);

)

程序運(yùn)行后的輸出結(jié)果是A

A)8,16B)8,8C)16,16

D)4,8

第五節(jié)函數(shù)的遞歸調(diào)用與對C語言的補(bǔ)充說明

習(xí)題

1.有以下程序:

fun(intx)

(

intp;

if(x==0llx==l)return(3);

p=x-fun(x-2);

returnp;

)

main()

(

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

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

A)7B)3C)2D)0

2.有以下程序

intfun(intn)

(

if(n==l)

return1;

else

return(n+fun(n-l));

)

main()

(

intx;

scanf("%d",&x);x=fun(x);printf("%d\n",x);

)

程序執(zhí)行時,給變量x輸入10,程序的輸出結(jié)果是A

A)55B)54C)65

D)45

3.有以下程序

#include<stdio.h>

voidfun(intn,int*p)

intfl,f2;

if(n==llln==2)

*p=l;

else

(

fun(n-l,&fl);

fun(n-2,&f2);

*p=fl+f2;

)

)

main()

(

ints;

fun(3,&s);

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

)

程序的運(yùn)行結(jié)果是A

A)2B)3C)4

D)5

4.以下敘述中正確的是()。B

A)C語言程序?qū)脑闯绦蛑械谝粋€函數(shù)開始執(zhí)行。

B)可以在程序中由用戶指定任意一個函數(shù)作為主函數(shù),程序?qū)?/p>

從此開始執(zhí)行。

OC語言規(guī)定必須用main作為主函數(shù)名,程序?qū)拇碎_始執(zhí)行,

在此結(jié)束。

D)main可作為用戶標(biāo)識符,用以命名任意一個函數(shù)作為主函數(shù)。

第十一章結(jié)構(gòu)體與共用體

第節(jié)結(jié)構(gòu)體

習(xí)題

1.有以下程序段

typedefstructnode{intdata;structnode*next;}*NODE;

NODEp;

以下敘述正確的是C

A)p是指向structnode結(jié)構(gòu)變量的指針的指針。

B)NODEp;語句出錯。

C)p是指向structnode結(jié)構(gòu)變量的指針。

D)p是structnode結(jié)構(gòu)變量。

2.以下結(jié)構(gòu)體類型說明和變量定義中正確的是A

A)typedefstructB)structREC

{intn;charc;}REC;{intn;charc;};

RECtl,t2;RECtl,t2;

C)typedefstructREC;D)struct

{intn=0;charc-A';}tl,t2;{intn;charc;}RECtl,t2;

3.有以下程序

#include<stdio.h>

structtt

{intx;structtt*y;}*p;

structtta[4]={20,a+1,15,a+2,30,a+3,17,a};

main()

(

inti;

P=a;

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

(

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

p=p->y;

)

)

程序的運(yùn)行結(jié)果是D

A)20,30,B)30,17,C)15,30,

D)20,15,

4.有以程序

#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.name,b.name);

a.sex=b.sex;

for(i=0;i<2;i++)a.score[i]=b.score[i];

)

main()

(

STUc={"Qian",'p',95.0,92.0};

f(c);

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

)

程序的運(yùn)行結(jié)果是A

A)Qian

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論