c語言期末復習資料_第1頁
c語言期末復習資料_第2頁
c語言期末復習資料_第3頁
c語言期末復習資料_第4頁
c語言期末復習資料_第5頁
已閱讀5頁,還剩157頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

所有單選題

1、C語言中下列敘述正確的是。

A:不能使用do-while語句構成的循環(huán)

B:do-while語句構成的循環(huán),必須用break語句才能退出

C:do-while語句構成的循環(huán),當while語句中的表達式值為非零時結束循環(huán)

D:do-while語句構成的循環(huán),當while語句中的表達式值為零時結束循環(huán)

答案:D

評析:

本題的考查點是do-while語句。

選項A是錯誤的,C語言支持do-while語句;選項B是錯誤的,do-while構成的循環(huán),當while語句中的

表達式值為零時結束循環(huán),而不是非零;選項C也是錯誤的。

故本題答案為D。

知識點:知識點/循環(huán)結構程序設計/WHILE和D。WHILE循環(huán)結構

2、以下選項中屬于C語言的數(shù)據(jù)類型是o

A:復數(shù)型

B:邏輯型

C:雙精度型

D:集合型

答案:C

評析:

本題的考查點是C語言的數(shù)據(jù)類型。

C語言的數(shù)據(jù)類型分為基本類型,構造類型,指針類型,空類型四大類。其中,基本類型分為整型,

字符型,實型三類。實型又稱浮點型,包括單精度型和雙精度型兩種類型。

故本題答案為C。

知識點:知識點/數(shù)據(jù)類型及其運算/C的數(shù)據(jù)類型及其定義方法

3、下列描述中不正確的是o

A:字符型數(shù)組中可以存放字符串

B:可以對字符型數(shù)組進行整體輸入、輸出

C:可以對整型數(shù)組進行整體輸入、輸出

D:不能在賦值語句中通過賦值運算符"="對字符型數(shù)組進行整體賦值

答案:C

評析:

本題的考查點是對數(shù)組的理解。

C語言規(guī)定只能逐個引用數(shù)組元素而不能一次引用整個數(shù)組。字符數(shù)組的輸入、輸出可以將整個字符

串一次輸入或輸出。所以,選項C的說法是不正確的。

故本題答案為C。

知識點:知識點/基本語句/數(shù)據(jù)的輸入與輸出,輸入輸出函數(shù)的調(diào)用

4、以下程序的輸出結果是

main()

{intx=1O,y=1O,i;

for(i=0;x>8;y=++i)

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

)

A:10192

B:9876

C:10990

D:101091

答案:D

評析:

本題的考查點是for循環(huán)語句。

for語句的一般格式為:for(表達式1;表達式2;表達式3)語句執(zhí)行中只要表達式2為真,則執(zhí)行for語句

中指定的內(nèi)嵌語句。所以,本題在條件為真的情況下,先執(zhí)行printf函數(shù)。x-是先使用后運算。

故本題答案為D。

知識點:知識點/循環(huán)結構程序設計/FOR循環(huán)結構

5、以下程序的輸出結果是o

main()

{chara[10]={T,2,3,'4',5,'6',7,8,9,0},*p;

inti;

i=8;

p=a+i;

printf("%s\n",p-3);

)

A:6

B:6789

C:6

D:789

答案:B

評析:

本題的考查點是通過指針引用數(shù)組元素。

指針p指向數(shù)組中第8個元素,即a[8]=9。輸出時,輸出字符串,且指針把磯8]作為初始位置往前指3

個元素,也就是共有4個字符輸出。最后指向a[5]為‘6’,所以輸出為6789。

故本題答案為B。

知識點:知識點/指針/指針數(shù)組,指向指針的指針,MAIN函數(shù)的命令行參數(shù)

6、能正確表示a和b同時為正或同時為負的邏輯表達式是o

A:(a>=0||b>=0)&&(a<0||b<0)

B:(a>=0&&b>=0)&&(a<0&&b<0)

C:(a+b>0)&&(a+b<=0)

D:a*b>0

答案:D

評析:

本題的考查點是對邏輯表達式的判斷。

邏輯表達式是指用邏輯運算符將關系表達式或邏輯量連接起來。

選項A中,表達式表示的是a,b為異號;

選項B中,表達式表示的是0,因為沒有滿足條件的值;

選項C中,表達式表示的是0,因為沒有滿足條件的值;

選項D表示的是a和b為同號。

故本題答案為D。

知識點:知識點/基本語句/表達式語句,空語句,復合語句

7、以下程序的輸出結果是o

main()

{intn=4;

while(n-)printf(H%d",-n);

)

A:20

B:31

C:321

D:210

答案:A

評析:

本題的考查點是while語句的判斷。

n-是先使用后運算,一n是先運算后使用。n=4時,執(zhí)行n-后,n變?yōu)?,執(zhí)行--n后,n變?yōu)?,所以,

第一次輸出時,n為2;同上過程,第二次輸出時,n為0。

故本題答案為A。

知識點:知識點/循環(huán)結構程序設計/WHILE和DOWHILE循環(huán)結構

8、以下程序的輸出結果是o

main()

{intk=17;

printf(H%d,%o,%x\n",k,k,k);

}

A:17,021,0x11

B:17,17,17

C:17,0x11,021

D:17,21,11

答案:D

評析:

本題的考查點是不同格式的數(shù)據(jù)輸出。

printf函數(shù)對不同類型的數(shù)據(jù)用不同的格式字符,“%d”是以帶符號的十進制形式輸出整數(shù)(正數(shù)不輸出

符號);"%?!币?進制無符號形式輸出整數(shù)(不包括前導符0);“%x”以16進制無符號形式輸出整數(shù)(不包

括前導符Ox)o

本題答案為D。

知識點:知識點/數(shù)據(jù)類型及其運算心的數(shù)據(jù)類型及其定義方法

9、若有說明:long*p,a;則不能通過scanf語句正確給輸入項讀入數(shù)據(jù)的程序段是。

A:*p=&a;scanf("%ld",p);

B:p=(long*)malloc(8);scanf(',%ld,p);

C:scanf("%ld",p=&a);

D:scanf("%ld",&a);

答案:A

評析:

本題的考查點是格式輸入函數(shù)Scanf()的使用。

scanf函數(shù)輸入形式為:scanf(格式控制,地址表列);

選項B中,p=(long*)malloc(8)是分配8個字節(jié)的long型存儲單元,所以能通過scanf語句正確給輸入項

讀入數(shù)據(jù);

選項C中,p=&a,求出變量a的內(nèi)存地址并賦給p;

選項D中,能正確給輸入項讀入數(shù)據(jù);

故本題答案為A。

知識點:知識點/基本語句/數(shù)據(jù)的輸入與輸出,輸入輸出函數(shù)的調(diào)用

10、以下選項中,能定義s為合法的結構體變量的是o

A:typedefstructabc

{doublea;

charb[10];

}s;

B:struct

{doublea;

charb[10];

)s;

C:structABC

{doublea;

charb[10];

)

ABCs;

D:typedefABC

{doublea;

charb[10];

)

ABCs;

答案:B

評析:

本題的考查點是結構體變量的定義。

定義一個結構體類型的變量,可采用三種方法:

(1)先定義結構體類型再定義變量名;

(2)在定義類型的同時定義變量;

(3)直接定義結構類型變量,即不出現(xiàn)結構體名;

選項B符合第三種定義方法。

故本題答案為B。

知識點:知識點/結構體(即"結構")與共用體(即"聯(lián)合")/結構體和共用體類型數(shù)據(jù)的定義方法和引用方

11、請讀程序:

#include<stdio.h>

main()

(

inta,b;

for(a=1,b=1;a<=100;a++){

if(b>=20)break;

if(b%3==1){b+=3;continue;}

b-=5;

)

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

)

上面程序的輸出結果是O

A:7

B:8

C:9

D:10

答案:B

評析:

本題的考查點是break語句和continue語句。

“%”是求余運算符,執(zhí)行第一次循環(huán)時,條件(b%3二=1)為真,b=4,繼續(xù)下一次循環(huán),如此反復,當

b=22時,條件(b>=20)為假,跳出循環(huán),此時共循環(huán)8次,即a=8。

故本題答案為B。

知識點:知識點/選擇結構程序設計/用SWITCH語句實現(xiàn)多分支選擇結構

12、請選出合法的C語言賦值語句o

A:a=b=58

B:i++;

C:a=58,b=58

D:k=int(a+b);

答案:B

評析:

本題的考查點是賦值語句。

選項A和C沒有用分號表示語句結束,不合法;

選項D,函數(shù)名和C語言的關鍵字重名,不合法。

故本題答案為B。

知識點:知識點/基本語句/表達式語句,空語句,復合語句

13、請選出可用作C語言用戶標識符的一組標識符o

①void②a3_b3③For?2a

define_123_abcDO

WORDIFcasesizeof

A:①

B:②

C:③

D:④

答案:B

評析:

本題的考查點是C語言的標識符。

C語言規(guī)定標識符只能由字母、數(shù)字和下劃線三種符號組成,而且第一個字符必須是字母或下劃線。

①中的void和define都和C語言的關鍵字重名,不合法;

③中的case和C語言的關鍵字重名,不合法;

④中的2a是數(shù)字打頭而且sizeof和C語言的關鍵字重名,不合法。

故本題答案為B。

知識點:知識點/數(shù)據(jù)類型及其運算/C的數(shù)據(jù)類型及其定義方法

14、若x和y都是int型變量,x=100、y=200,且有下面的程序片段

printf(“%d”,(x,y));

上面程序片段的輸出結果是O

A:200

B:100

C:100200

D:輸入格式符不夠,輸出不確定的值

答案:A

評析:

本題的考查點是逗號表達式。

在(x,y)中的“,”是一個特殊的運算符,叫做逗號運算符,它的一般形式為:表達式1,表達式2,求解

過程為:先求解表達式1,再求解表達式2,整個表達式的值是表達式2的值,(x,y)的值為200,所以輸出

結果為200。

故本題答案為A。

知識點:知識點/基本語句/數(shù)據(jù)的輸入與輸出,輸入輸出函數(shù)的調(diào)用

15、若x是int型變量,且有下面的程序片段

for(x=3;x<6;x++)printf((x%2)?("**%d',):(',##%d\n',),x);

上面程序片段的輸出結果是O

①**3②##3③##3④**3##4

##4**4**4##5**5

**5##5

A:①

B:②

C:③

D:④

答案:D

評析:

本題的考查點是條件運算符。

這種條件表達式的一般形式為:表達式1?表達式2:表達式3,條件運算符的執(zhí)行順序為:先求解表達式

1,若非0則求解表達式2,此時表達式2的值就是整個條件表達式的值,若表達式1的值為0,則求解表達式

3,此時表達式3的值就是整個條件表達式的值。

故本題答案為D。

知識點:知識點/數(shù)據(jù)類型及其運算/C運算符的種類、運算優(yōu)先級和結合性

16、若x是整型變量,pb是基類型為整型的指針變量,則正確的賦值表達式是o

A:pb=&x;

B:pb=x;

C:*pb=&x;

D:*pb=*x

答案:A

評析:

本題的考查點是賦值表達式。

選項A是將變量x的地址賦給指針變量pb,使pb指向x,故為正確的賦值表達式。

選項B是將x的值當作地址賦給指針pb,pb指向一個地址等于x值的內(nèi)存單元;

選項C是將x的地址賦給指針pb指向的那個地址等于x值的內(nèi)存單元;

選項D是不正確的語句;

本題答案為A。

知識點:知識點/基本語句/表達式語句,空語句,復合語句

17、若要用下面的程序片段使指針變量p指向一個存儲整型變量的動態(tài)存儲單元

int*p;

p=malloc(sizeof(int));

則應填入o

A:int

B:int*

C:(*int)

D:(int*)

答案:D

評析:

本題的考查點是強制類型轉換。

不論p是指向什么類型的指針變量,都可以通過強制類型轉換的方法使之類型一致,強制類型轉換的格

式為(數(shù)據(jù)類型*)O

故本題答案為D。

知識點:知識點/數(shù)據(jù)類型及其運算/不同類型數(shù)據(jù)間的轉換與運算

18、若有以下說明和語句,請選出哪個是對c數(shù)組元素的正確引用o

intc[4][5],(*cp)[5];

cp=c;

A:cp+1

B:*(cp+3)

C:*(cp+1)+3

D:*(*cp+2)

答案:D

評析:

本題的考查點是數(shù)組元素的引用。

cp=c這個語句是將數(shù)組c的首地址賦給了指針數(shù)組cp的第一個數(shù)組元素。

選項A,cp+1是指將數(shù)組c的首地址加1,不是對數(shù)組元素的引用;

選項B,*(cp+3)是地址等于數(shù)組c的首地址加3的那個內(nèi)存單元的內(nèi)容,不是對數(shù)組元素的引用;

選項C,*(cp+1)+3是地址等于數(shù)組c的首地址加1的那個內(nèi)存單元中存放的值加3,不是對數(shù)組元素的

引用。

故本題答案為D。

知識點:知識點/指針/指針數(shù)組,指向指針的指針,MAIN函數(shù)的命令行參數(shù)

19、若執(zhí)行下面的程序時從鍵盤上輸入3和4,

main()

{inta.b.s;

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

s=a;

if(a<b)s=b;

s=s*s;

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

則輸出是O

A:14

B:16

C:18

D:20

答案:B

評析:

本題的考查點是給變量賦值。

用戶輸入的3和4分別賦給了a和b,在if語句進行判斷時,因為表達式的值為真,所以b的值將賦給s,

s*s=16,最后的打印結果為16。

故本題答案為B。

知識點:知識點/基本語句/表達式語句,空語句,復合語句

20、設a、b和c都是int型變量,且a=3、b=4、c=5,則下面的表達式中,值為0的表達式是。

A:

B:a<=b

C:a||+c&&b-c

D:!((a<b)&&!c||1)

答案:D

評析:

本題的考查點是幾種運算符的使用。

該題需要弄清楚以下幾點:

1、幾種運算符的使用方法;

2、C語言中運算符的結合方向(結合性);

3、C語言中運算符的優(yōu)先級。

根據(jù)以上規(guī)則進行表達式拆分,運算后即可得出正確答案。

本題答案為D。

知識點:知識點/數(shù)據(jù)類型及其運算/C運算符的種類、運算優(yōu)先級和結合性

21、設a=5、b=6、c=7、d=8、m=2、n=2,執(zhí)行

(m=a>b)&&(n=c>d)

后n的值為o

A:1

B:2

C:3

D:4

答案:B

評析:

本題的考查點是邏輯與運算。

在邏輯表達式的求解中,并不是所有的邏輯運算符都被執(zhí)行,只是在必須執(zhí)行下一個邏輯運算符才能

求出表達式的解時,才執(zhí)行該運算符。本題中,(m=a>b)的值為0,求出整個表達式的值為0,不需執(zhí)行

(n=c>d),所以n仍為2。

故本題答案為B。

知識點:知識點/數(shù)據(jù)類型及其運算/C運算符的種類、運算優(yōu)先級和結合性

22、設ch是char型變量,其值為A,且有下面的表達式

ch=(ch>=,A,&&ch<='Z')?(ch+32):ch

上面表達式的值是O

A:A

B:a

C:Z

D:z

答案:B

評析:

本題的考查點是條件運算符。

條件表達式的一般形式為:表達式1?表達式2:表達式3,條件運算符的執(zhí)行順序:先求解表達式1,若

非0則求解表達式2,此時表達式2的值就作為整個表達式的值,若表達式1的值為0,則求解表達式3,此時

表達式3的值就作為整個表達式的值。本題中,表達式1的值為1,所以整個表達式的值為表達式(ch+32)的

值,即為a。

故本題答案為B。

知識點:知識點/數(shù)據(jù)類型及其運算/C運算符的種類、運算優(yōu)先級和結合性

23、設inta=12,則執(zhí)行完語句a+=a■=a*a后,a的值是。

A:552

B:264

C:144

D:-264

答案:D

評析:

本題的考查點是賦值表達式的求解。

第一步:a*a=144;(此時a=12)

第二步:a?=144相當于a=a?144,a=a-144=-132;(此時a=?132)

第三步:a+二a相當于a=a+a,a=a+a=-264;

所以該表達式最后的值應當為-264。

故本題答案為D。

知識點:知識點/數(shù)據(jù)類型及其運算/C表達式類型和求值規(guī)則

24、設有如下枚舉類型定義

enumlanguage{Basic=3,Assembly=6,Ada=100,COBOL,Fortran);

枚舉量Fortran的值為。

A:4

B:7

C:102

D:103

答案:C

評析:

本題考查的是數(shù)據(jù)類型。

這個枚舉中共有5個元素,前三個已有明確的賦值,而COBOL和Fortran沒有明確的賦值,枚舉的語法

規(guī)定當枚舉元素沒有賦值時,其值為其前一個元素的值加一,所以COBOL的值為101,故Fortran的值應為

102o

故答案為C。

知識點:知識點/數(shù)據(jù)類型及其運算/C的數(shù)據(jù)類型及其定義方法

25、設有以下語句,其中不是對a數(shù)組元素的正確引用的是:(其中i<10)

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

A:a[p-a]

B:*(&a[i])

C:p[i]

D:*(*(a+i))

答案:D

評析:

本題的考查點是通過指針引用數(shù)組元素。

觀察程序可知通實際上就是數(shù)組a的首地址,所以"*(a+i)”表示的就是數(shù)組a中的第i個元素的值,進而,

我們可以知道*(*(a+i))必然不是對a數(shù)組元素的正確引用。

故本題答案為D。

知識點:知識點/指針/指針數(shù)組,指向指針的指針,MAIN函數(shù)的命令行參數(shù)

26、設有以下語句

chara=3,b=6,c;

c=aAb?2;

則c的二進制值是O

A:00011011

B:00010100

C:00011100

D:00011000

答案:A

評析:

本題的考查點是位運算。

“vv”是C語言中規(guī)定的左移運算符,例如,a=a?2,這個語句即是將a的二進制數(shù)左移兩位,左移一位

相當于該數(shù)乘以2,左移兩位相當于該數(shù)乘以2的2次方「是異或運算符,所以]的二進制值應為00011011。

故本題答案為A。

知識點:知識點/位運算/簡單的位運算

27、設有語句inta=3;則執(zhí)行了語句a+=a?=a*a;后,變量a的值是。

A:3

B:0

C:9

D:-12

答案:D

評析:

本題的考查點是賦值表達式的求解。

第一步:a*a=9;(此時a=3)

第二步:a?=9相當于a=a?9,a=a-9=-6;(此時a=-6)

第三步:a+=a相當于a=a+a,a=a+a=-12;

所以該表達式最后的值應當為?12。

故本題答案為D。

知識點:知識點/數(shù)據(jù)類型及其運算心表達式類型和求值規(guī)則

28、下面程序

main()

{intx=100,a=10,b=20,ok1=5,ok2=0;

if(a<b)

if(b!=15)

if(!ok1)x=1;

elseif(ok2)x=10;

x=-1;

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

)

的輸出是o

A:-1

B:0

C:1

D:不確定的值

答案:A

評析:

本題的考查點是判斷語句的循環(huán)嵌套。

第一個判斷值為真,過渡到下一個判斷,第二個判斷為真,過渡到第三個判斷……如此循環(huán),在打印

輸出語句的前一行,程序給變量x賦了值,為,所以,無論前期如何變化,最后的x值依然為?1。

故本題答案為A。

知識點:知識點/循環(huán)結構程序設計/循環(huán)的嵌套

29、下面程序

main()

(

intx=32;

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

)

的輸出是o

A:100

B:160

C:120

D:64

答案:D

評析:

本題的考查點是位運算。

vv是C語言中規(guī)定的左移運算符,例如,a=a?2,這個語句即是將a的二進制數(shù)左移兩位,左移一位

相當于該數(shù)乘于2,左移兩位相當于該數(shù)乘以2的2次方。所以,x?1=32*2=64o

故本題答案為D。

知識點:知識點/位運算/簡單的位運算

30、下面程序

main()

(

inta[10]={1,2,3,4,5,6,7,8,9,10),*p=a;

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

)

的輸出是o

A:3

B:4

C:1

D:2

答案:A

評析:

本題的考查點是通過指針引用數(shù)組元素。

*p=a語句是使指針p指向數(shù)組a的第一個數(shù)組元素,因此*(p+2)即是數(shù)組a的第3個元素的值,即a[2]。

故本題答案為A。

知識點:知識點/指針/指針數(shù)組,指向指針的指針,MAIN函數(shù)的命令行參數(shù)

31、下面程序

main()

(

intx=10,y=3;

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

)

的輸出是o

A:0

B:1

C:3

D:不確定的值

答案:C

評析:

本題的考查點是除法運算。

x/y的結果約為3.33333,但是由于打印要求為整型,所以自動轉換為整型(相當于截取整數(shù)位),打印結

果為3。

故本題答案為C。

知識點:知識點/數(shù)據(jù)類型及其運算/C的數(shù)據(jù)類型及其定義方法

32、下面程序

voidprtv(int*x)

{printf("%d\n",++*x);

)

main()

{inta=25;

prtv(&a);

)

的輸出是o

A:23

B:24

C:25

D:26

答案:D

評析:

本題的考查點是指針變量作為函數(shù)參數(shù)。

觀察程序,可以發(fā)現(xiàn),函數(shù)prtv()的作用是將地址等于x的內(nèi)存單元中值加1,因為我們在主函數(shù)中是將

變量a的地址作為實參傳遞給了prtv()函數(shù),所以,函數(shù)prtv()將地址等于變量a的地址的那個內(nèi)存單元中值

加一,打印結果自然就是25+1=26了。

故本題答案為D。

知識點:知識點/指針/指針數(shù)組,指向指針的指針,MAIN函數(shù)的命令行參數(shù)

33、下面的程序

main()

{intx=3;

do{

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

}while(!(-x));

}

A:輸出的是1

B:輸出的是1和-2

C:輸出的是3和0

D:是死循環(huán)

答案:B

評析:

本題的考查點是do-while語句。

在第一次循環(huán)時,先計算表達式x-=2,所以輸出1,-x為0,判斷表達式的值為非零,返回重新執(zhí)行該

語句;

在第二次循環(huán)時,表達式x-=2,即-2,所以輸出-2,—x為-3,判斷表達式的值為零,循環(huán)結束。

故本題答案為B。

知識點:知識點/循環(huán)結構程序設計/WHILE和DOWHILE循環(huán)結構

34、下面的程序中錯誤(每行程序前面的數(shù)字是行號)。

1#include<stdio.h>

2main()

3(

4floata[3]={0.0};

5inti;

6for(i=0;i<3;i++)scanf("%d",a[i]);

7for(i=1;i<3;i++)a[0]=a[0]+a[i];

8printf("%f\n",a[O]);

9)

A:沒

B:第4行

C:第6行

D:第8行

答案:C

評析:

本題的考查點是函數(shù)scanf()的格式輸入。

根據(jù)函數(shù)scanf()的語法可知,在函數(shù)中的參數(shù)表列部分,應當是欲賦值變量的內(nèi)存地址,象第六行這

樣,將數(shù)組元素直接放在參數(shù)表列中是無法達到給數(shù)組元素賦值的目的。

故本題答案為c。

知識點:知識點/基本語句/數(shù)據(jù)的輸入與輸出,輸入輸出函數(shù)的調(diào)用

35、下面函數(shù)

intfun1(char*x)

{char*y=x;

while(*y++);

return(y-x-l);

}

的功能是o

A:求字符串的長度

B:比較兩個字符串的大小

C:將字符串x復制到字符串y

D:將字符串x連接到字符串y后面

答案:A

評析:

本題的考查點是whHe()循環(huán)語句。

這個函數(shù)的功能是求字符串的長度,需要注意的是,在返回長度時一定記住要減一,否則計算出的串

長度將會多一。

故本題答案是A。

知識點:知識點/循環(huán)結構程序設計/WHILE和DOWHILE循環(huán)結構

36、以下程序的輸出結果是。

#include<stdio.h>

main()

(

inti=10,j=10;

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

)

A:11,10

B:9,10

C:010,9

D:10,9

答案:A

評析:

本題的考查點是變量的自增、自減運算。

++i是先對i進行加1運算,再使用i的值;j-是先使用j值,再對j進行減1運算。所以,程序的打印結果應

當為“11,10”。

故本題答案為A。

知識點:知識點/數(shù)據(jù)類型及其運算/C運算符的種類、運算優(yōu)先級和結合性

37、以下的for循環(huán):

for(x=0,y=0;(y!=123)&&(x<4);x++);

A:是無限循環(huán)

B:循環(huán)次數(shù)不定

C:執(zhí)行4次

D:執(zhí)行3次

答案:C

評析:

本題的考查點是for語句循環(huán)條件的判斷。

循環(huán)條件是表達式(y!=123)&&(x<4),因為y值始終為0,所以表達式左邊一定恒為1,當x<4時,循環(huán)可

以運行,當x=4時,循環(huán)終止,所以這個循環(huán)一共可以執(zhí)行4次。

故本題答案為C。

知識點:知識點/循環(huán)結構程序設計/FOR循環(huán)結構

38、有以下程序:

include<stdio.h>

unionpw

{inti;charch[2];

}a;

main()

{a.ch[0]=13;

a.ch[1]=0;

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

)

程序的輸出結果是(注意:ch[0]在低字節(jié),ch川在高字節(jié))o

A:13

B:14

C:208

D:209

答案:A

評析:

本題的考查點是共用體類型數(shù)據(jù)的特點。

根據(jù)共用體的定義可知:共用體a的成員i和成員ch[2]是共用著同一段內(nèi)存空間,所以,當程序給a.ch[0]

賦值后,實際上,共用體成員i的值也確定了,為13,所以打印輸出的結果應當為13。

故本題答案為A。

知識點:知識點/結構體(即“結構”)與共用體(即“聯(lián)合”)/結構體和共用體類型數(shù)據(jù)的定義方法和引用方

39、有以下程序

main()

{intc;

while((c=getchar())!='\n'){

switch(c-'2'){

case0:case1:putchar(c+4);

case2:putchar(c+4);break;

case3:putchar(c+3);

default:putchar(c+2);break;}

)

)

從第一列開始輸入以下數(shù)據(jù),/代表一個回車符。

2473/

程序的輸出結果是。

A:668977

B:668966

C:66778777

D:6688766

答案:A

評析:

本題的考查點是swRch()語句。

getchar()函數(shù)是從鍵盤接受一個字符輸入;當用戶鍵入的字符不是回車符時,會進入一個多分支選擇

語句,根據(jù)表達式的值進行分支選擇;putchar()是在屏幕上打印一個字符,最后的結果應當為668977。

故本題答案為A。

知識點:知識點/選擇結構程序設計/用SWITCH語句實現(xiàn)多分支選擇結構

40、執(zhí)行下面程序片段的結果是o

intx=23;

do

(

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

)

while(!x);

A:打印出321

B:打印出23

C:不打印任何內(nèi)容

D:陷入死循環(huán)

答案:B

評析:

本題的考查點是do-while循環(huán)語句的判斷。

x-是自減運算,先使用x的值,后進行自減運算,所以打印出來的結果應當為23。

故本題答案為B。

知識點:知識點/循環(huán)結構程序設計/WHILE和DOWHILE循環(huán)結構

41、執(zhí)行下面的程序段

intx=35;

charz='A';

intB;

B=((x&15)&&(z<'a'));

后,B的值為o

A:0

B:1

C:2

D:3

答案:B

評析:

本題的考查點是邏輯與及位與運算。

從整個表達式來看是個邏輯表達式,而與運算符”&&”的右邊的子表達式中由于z的值為,而A的

ASCII碼的值小于a的ASCII碼值,所以這個子表達式的值為真,即1;在與運算符"&&”的左邊的子表達式是

個基于位運算的子表達式,將x的值與15做位與運算,表達式值不為零,所以兩個子表達式的與值應當為1。

故本題答案為B。

知識點:知識點/位運算/位運算符的含義及使用

42、表達式:10!=9的值是o

A:true

B:非零值

C:0

D:1

答案:D

評析:

本題的考查點是關系運算符!二。

在這種運算中,表達式的值只有兩種:1或0,表達式10!=9的值應當是1。

故本題答案為D。

知識點:知識點/數(shù)據(jù)類型及其運算/C表達式類型和求值規(guī)則

43、若有說明:inti,j=7,*p=&i;則與i寸等價的語句是。

A:i=*p;

B:

C:i=&j;

D:i=**p;

答案:B

評析:

本題的考查點是指針變量的弓I用。

p的地址本身和i的地址一樣,所以*p代表i中的數(shù)值,而&j是j的地址,*&j就是j中的數(shù)值,所以,*p=*&j

和i=j是等價的。

故本題答案為B。

知識點:知識點/指針/指針與指針變量的概念,指針與地址運算符

44、以下程序的輸出結果是o

main()

{char*s=',1213421T';intv[4]={0,0,0,0},kJ;

for(k=0;s[k];k++)

{switch(s[k])

{case'1':i=0;

case2:i=1;

case'3':i=2;

case'4":i=3;

)

v[i]++;

)

for(k=0;k<4;k++)printf("%du,v[k]);

)

A:4211

B:0008

C:4678

D:8888

答案:B

評析:

本題的考查點是switch語句的應用。

在每次執(zhí)行switch后面括號內(nèi)的表達式s[k]時,要先取當前s[k]的值與case后的字符常量進行比較,找

到與之匹配的分支后,即轉去執(zhí)行該分支中的語句。switch語句中,某分支執(zhí)行完畢,若未遇到break語句,

則接著執(zhí)行剩余的其它分支,直到遇到break語句。此題中,因為沒有break語句,所以總會執(zhí)行到i=3,即

總是v[3]在遞加。

故本題答案為B。

知識點:知識點/選擇結構程序設計/用SWITCH語句實現(xiàn)多分支選擇結構

45、有如下程序

main()

(

intn=9;

while(n>6)

(

n-;

printf("%d",n);

該程序的輸出結果是o

A:987

B:876

C:8765

D:9876

答案:B

評析:

本題考查點是While語句循環(huán)次數(shù)的問題。

符合n>6的n只有7,8,9;所以循環(huán)次數(shù)為3。選項C、D可以排除。又因n在輸出之前要執(zhí)行n-,所以輸出

結果只能是876。

本題答案為B。

知識點:知識點/循環(huán)結構程序設計/WHILE和DOWHILE循環(huán)結構

46、設有說明語句:chara='\72";則變量a。

A:包含1個字符

B:包含2個字符

C:包含3個字符

D:說明不合法

答案:A

評析:

本題考查點是轉義字符的應用。

轉義字符常量'\xx'可以把后面的數(shù)字轉換為對應的ASCII字符,'\72'表示的是ASCII碼等于72的那個字

符,即為"H",所以在字符變量中存儲的只是"H"這一個字符。

故本題答案為A。

知識點:知識點/數(shù)據(jù)類型及其運算/不同類型數(shù)據(jù)間的轉換與運算

47、若變量已正確定義并賦值,下面符合C語言的表達式是o

A:a:=b+1

B:a=b=c+2

C:int18.5%3

D:a=a+7=c+b

答案:B

評析:

選項A和C顯然錯誤;對于表達式a=a+7=c+b(答案D),是先執(zhí)行賦值表達式a+7=c+b,再把這個表

達式的值賦給a,顯然,表達式a+7=c+b非法,因為賦值表達式的左值不能為常量或表達式。

本題答案為B。

知識點:知識點/基本語句/表達式語句,空語句,復合語句

48、若已定義x和y為double類型,則表達式x=1,y=x+3/2的值是。

A:1

B:2

C:2.0

D:2.5

答案:C

評析:

這是一個逗號表達式,它的值應為表達式y(tǒng)=x+3/2的值,而前一個表達式已給x賦值1,在沒有進行類型

轉換的情況下,3/2的值為1,所以x+3/2的值應為2.0。

本題答案為C。

知識點:知識點/基本語句/表達式語句,空語句,復合語句

49、若變量a、i已正確定義,且i已正確賦值,合法的語句是o

A:a==1

B:++i;

C:a=a++=5

D:a=int(i);

答案:B

評析:

選項D顯然是錯的,而選項A沒有分號結束,不是C語句;a++=5違反了賦值表達式左值必須為一個變

量(不能是常量或表達式)的規(guī)定.

本題答案為B。

知識點:知識點/基本語句/表達式語句,空語句,復合語句

50、有如下程序

main()

{inty=3,x=3,z=1;

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

)

運行該程序的輸出結果是。

A:34

B:42

C:43

D:33

答案:D

評析:

逗號表達式(++x,y++)的值應該是y++的值,由于y++是先引用后自增,所以y++的值是3。

本題答案為D。

知識點:知識點/基本語句/數(shù)據(jù)的輸入與輸出,輸入輸出函數(shù)的調(diào)用

51、有如下程序

main()

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

switch(x){

case0:b++;

case1:a++;

case2:a++;b++;

)

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

)

該程序的輸出結果是o

A:a=2,b=1

B:a=1,b=1

C:a=1,b=0

D:a=2,b=2

答案:A

評析:

在這個switch語句中,因為x的值為1,所以執(zhí)行case1:后面的a++,這樣a=1。但又由于其下沒有break

語句,所以其后面的語句(a++;b++)也將被執(zhí)行,這樣一來,a=2,b=1o

本題答案為A。

知識點:知識點/選擇結構程序設計/用SWITCH語句實現(xiàn)多分支選擇結構

52、有如下程序

main()

{floatx=2.0,y;

if(x<0.0)y=0.0;

elseif(x<10.0)y=1.0/x;

elsey=1.0;

printf("%f\n”,y);

)

該程序輸出結果是o

A:0.000000

B:0.250000

C:0.500000

D:1.000000

答案:C

評析:

本題考查的是IF…ELSE語句的使用。x=2.0,符合第二個IF語句的條件xvlO.O,所以執(zhí)行y=1.0/x語句,

即y=1.0/2.0=0.500000。

本題答案為C。

知識點:知識點/選擇結構程序設計/用IF語句實現(xiàn)選擇結構

53、有如下程序

main()

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

if(a<b)

if(b<0)c=0;

elseC++;

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

)

該程序的輸出結果是o

A:0

B:1

C:2

D:3

答案:C

評析:

由于條件(a<b)并不滿足,所以if(a<b)后面的語句并沒有被執(zhí)行,c仍然等于2。

本題答案為C。

知識點:知識點/選擇結構程序設計/用IF語句實現(xiàn)選擇結構

54、有如下程序

main()

{inti,sum;

for(i=1;i<=3;sum++)sum+=i;

printf("%d\nM,sum);

)

該程序的執(zhí)行結果是o

A:6

B:3

C:死循環(huán)

D:0

答案:C

評析:

在循環(huán)過程中,i的值一直沒有被改變,所以這是一個死循環(huán)。

本題答案為C。

知識點:知識點/循環(huán)結構程序設計/FOR循環(huán)結構

55、有如下程序

main()

{intn=9;

while(n>6){n-;printf("%d",n);}

)

該程序段的輸出結果是O

A:987

B:876

C:8765

D:9876

答案:B

評析:

符合n>6的n只有7,8,9;所以循環(huán)次數(shù)為3。C,D可以排除。又:n在輸出之前要執(zhí)行n??,所以輸

出結果只能是876。

本題答案為B。

知識點:知識點/循環(huán)結構程序設計/WHILE和DOWHILE循環(huán)結構

56、設有說明語句:chara='\72';則變量a。

A:包含1個字符

B:包含2個字符

C:包含3個字符

D:說明不合法

答案:A

評析:

轉義字符常SAxx,可以把、后面的數(shù)字轉換為對應的ASCII字符J\72就是'H、

本題答案為A。

知識點:知識點/基本語句/表達式語句,空語句,復合語句

57、有如下程序段

int*p,a=10,b=1;

p=&a;a=*p+b;

執(zhí)行該程序段后,a的值為o

A:12

B:11

C:10

D:編譯出錯

答案:B

評析:

執(zhí)行p=&a;后,p指向整數(shù)a,*p即p的目標變量,也就是a;所以a=*p+b等價于a=a+b,可知a的

值最終為11O

本題答案為B。

知識點:知識點/指針/指針與指針變量的概念,指針與地址運算符

58、對于基類型相同的兩個指針變量之間,不能進行的運算是o

A:<

B:=

C:+

D:-

答案:C

評析:

指針之間不能進行加運算。

本題答案為C。

知識點:知識點/指針/指針與指針變量的概念,指針與地址運算符

59、有如下程序

#defineN2

#defineMN+1

#defineNUM2*M+1

main()

{inti;

for(i=1;i<=NUM;i++)printf("%d\n",i);

}

該程序中的for循環(huán)執(zhí)行的次數(shù)是o

A:5

B:6

C:7

D:8

答案:B

評析:

在C語言中,宏定義在編譯時將被直接替換,所以NUM最后會被替換成2*N+1+1,MP2*2+1+1,值為6。

因此,for循環(huán)執(zhí)行的次數(shù)為6。

本題答案為B。

知識點:知識點/循環(huán)結構程序設計/FOR循環(huán)結構

60、有如下程序段

inta=14,b=15,x;

charc='A';

x=(a&&b)&a(c<B);

執(zhí)行該程序段后,x的值為o

A:true

B:false

C:0

D:1

答案:D

評析:

a&&b的值為true的值也為true,所以(a&&b)&&(cv'B)的值為true。但x是int型變量,所以(a&&b)

&&(cv'B')的值最后要從bool型轉換為int型賦給x。這樣x的值應為1。

本題答案為D。

知識點:知識點/數(shù)據(jù)類型及其運算/不同類型數(shù)據(jù)間的轉換與運算

61、有如下說明

inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;

則數(shù)值為9的表達式是o

A:*p+9

B:*(p+8)

C:*p+=9

D:p+8

答案:B

評析:

p是指針,p+8是地址值,D是錯的;*p是p的目標變量,即a[0],值為1,所以*p+9的值是10,而*p+=

9值是重新給a[0]賦了值(1+9);所以A和C也是錯的。p+8是地址值,指向a[8],那么*(p+8)的值就是a[8]的

值,即9。

本題答案為B。

知識點:知識點/指針/指針數(shù)組,指向指針的指針,MAIN函數(shù)的命令行參數(shù)

62、有如下程序

main()

intn[5]={0,0,0},i,k=2;

for(i=0;i<k;i++)n[i]=n[i]+1;

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

)

該程序的輸出結果是o

A:不確定的值

B:2

C:1

D:0

答案:D

評析:

由代碼可知,題中的for循環(huán)值執(zhí)行2次(i=0和1),所以只對a[0]和a[1]重新賦了值,而a[k]即a[2]的

值并沒有變,仍為0。

本題答案為D。

知識點:知識點/循環(huán)結構程序設計/FOR循環(huán)結構

63、有如下程序

main()

(

inta[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;

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

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

s+=a[i]0]];

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

)

該程序的輸出結果是o

A:18

B:19

C:20

D:21

答案:A

評析:

題中的外循環(huán)只執(zhí)行了2次:

第1次:a[1]⑼=3,a[1][1]=4,所以s=7;

第2次:a[2][0]=5,a[2][1]=6,a[2][2]=0,所以s=7+5+6+0=18。

本題答案為A。

知識點:知識點/循環(huán)結構程序設計/循環(huán)的嵌套

64、有如下定義

structperson{charname[9];intage;};

structpersonclass[10]={"John",17,

"Paul",19,

“Mary”,18,

"Adam",16,};

根據(jù)上述定義,能輸出字母M的語句是o

A:printf("%c\n",class[3].name);

B:printf("%c\n",class[3].name[1]);

C:printf("%c\nM,class[2].name[1]);

D:printf("%c\rT,class[2].name[0]);

答案:D

評析:

選項A將輸出A;選項B將輸出d;選項C將輸出a;選項D將輸出M。

本題答案為D。

知識點:知識點/基本語句/數(shù)據(jù)的輸入與輸出,輸入輸出函數(shù)的調(diào)用

65、以下對結構體類型變量的定義中,不正確的是o

A:typedefstructaa{intn;floatm;}AA;

AAtdl;

B:#defineAAstructaa

AA{intn;floatm;}td1;

C:struct{intn;floatm;}aa;

structaatd1;

D:struct{intn;floatm;}td1;

答案:C

評析:

在答案C中,aa是一個結構體變量,而不是結構體名,所以structaatd1;是非法的。

本題答案為C。

知識點:知識點/結構體(即“結構”)與共用體(即“聯(lián)合")/結構體和共用體類型數(shù)據(jù)的定義方法和引用方

66、下列敘述中正確的是o

A:C語言編譯時不檢查語法

B:C語言的子程序有過程和函數(shù)兩種

C:C語言的函數(shù)可以嵌套定義

D:C語言中,根據(jù)函數(shù)能否被其它源文件調(diào)用,被區(qū)分為內(nèi)部函數(shù)和外部函數(shù)

答案:D

評析:

選項A的錯誤在于編譯過程中是檢查語法的,若發(fā)現(xiàn)源程序有語法錯誤,則系統(tǒng)會提示出錯信息;選

項B的錯誤在于C語言中,子程序的作用是由函數(shù)來完成的,無過程的概念;選項C的錯誤在于函數(shù)不可以

嵌套定義,但可以嵌套調(diào)用。

本題答案為D。

知識點:知識點心語言的結構/程序的構成,MAIN函數(shù)和其他函數(shù)

67、以下列出C語言常量中,錯誤的是o

A:OxFF

B:1.2e0.5

C:2L

D:'\72'

答案:B

評析:

C語言中的指數(shù)形式,字母E之前必須有數(shù)字,且E后面指數(shù)必須為整數(shù)。

本題答案為B。

知識點:知識點/數(shù)據(jù)類型及其運算心的數(shù)據(jù)類型及其定義方法

68、以下變量x、y、z均為double類型且已正確賦值,不能正確表示數(shù)學式子x/(y*z)的C語言表達式是。

A:x/y*z

B:x*(1/(y*z))

C:x/y*1/z

D:x/y/z

答案:A

評析:

按照自左向右的運算邏輯,選項A是先做x/y,然后再乘以x,顯然與題意不符。

本題答案為A。

知識點:知識點/數(shù)據(jù)類型及其

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論