(1)下列敘述中錯誤的是( )。
A.C程序可以由多個程序文件組成
B.一個c語言程序只能實現(xiàn)一種算法
C.c程序可以由一個或多個函數(shù)組成,
D.一個C函數(shù)可以單獨作為一個C程序文件存在
(2)以下選項中,能用作數(shù)據(jù)常量的是( )。
A.115L
B.0118
C.1.5el.5
D.0115
(3)按照c語言規(guī)定的用戶標識符命名規(guī)則,不能出現(xiàn)在標識符中的是( )。
A.大寫字母
B.下劃線
C.數(shù)字字符
D.連接符
(4)設(shè)變量已正確定義并賦值,以下正確的表達式是( )。
A.X=Y+z+5,++Y
B.int(15.8%5)
C.X=Y*5=X+Z
D.X=25%5.0
(5)設(shè)有定義:int X=2;,以下表達式中,值不為6的是( )。
A.2*x.x+=2
B.x++,2*x
C.x*=(1+x)
D.x*!x+1
(6)有以下程序:

程序運行后的輸出結(jié)果是( )。
A.2,3,3
B.2,3,2
C.2,3,1
D.2,2,1
(7)有以下程序:

已知字母A的ASCIl碼為65,程序運行后的輸出結(jié)果是( )。
A)E.68B.
B)D,69
C.E,D
D.輸出無定值
(8)若有定義int x,y;并已正確給變量賦值,則以下選項中與表達式(x—y)?(x++):(y++)中的條件表達式(x—Y)等價的是( )。
A.(x—Y<01Ix—Y>O)
B.(x—y<0)
C.(x—Y>0)
D.(x—Y==0)
(9)有以下程序:

程序運行后的輸出結(jié)果是( )。
A.3
B.2
C.1
D.0
(10)若有定義:float x=1.5;int a=1,b=3,c=2;則正確的switch語句是( )。

(11)以下敘述中錯誤的是( )。
A.c語言中的每條可執(zhí)行語句和非執(zhí)行語句最終都將被轉(zhuǎn)換成二進制的機器指令
B.c程序經(jīng)過編譯、連接步驟之后才能形成一個真正可執(zhí)行的二進制機器指令文件
C.用c語言編寫的程序稱為源程序,它以ASCIl代碼形式存放在一個文本文件中
D.c語言源程序經(jīng)編譯后生成后綴為.obj的目標程序
(12)以下選項中,合法的一組c語言數(shù)值常量是( )。
A.12.0Xa23 4.5e0
B.028.5e…3 0xf
C.177 4el.5 0abe
D.0x8A 10,000 3.e5
(13)以下選項中不合法的標識符是( )。
A.&a
B.FOR
C.pfint
D.00

(15)若有定義:double a=22;inti=0,k=18;,則不符合c語言規(guī)定的賦值語句是( )。
A.i=(a+k)<=(i+k);B.i=a%11;
C.a=a++,i++;D.i=!a;
(16)有以下程序:

在VC 6.0平臺上編譯運行,程序運行后的輸出結(jié)果是( )。
A.10,6
B.4,4
C.2,4
D.4。8
(17)有以下程序:

當執(zhí)行程序時,按下列方式輸入數(shù)據(jù)(從第l列開始,
A.12
B.12
C.1234
D.12343
(18)以下關(guān)于邏輯運算符兩側(cè)運算對象的敘述中正確的是( )。
A.可以是任意合法的表達式
B.只能是整數(shù)0或非0整數(shù)
C.可以是結(jié)構(gòu)體類型的數(shù)據(jù)
D.只能是整數(shù)0或1
(19)有以下程序:

程序運行后的輸出結(jié)果是( )。
A.1,1,2,0
B.0,0,0,3
C.編譯有錯
D.0,1,2,0
(20)有以下程序:


程序運行后的輸出結(jié)果是( )。
A.a=2,b=2
B.a=2,b=1
C.a=1,b=l
D.a=1,b=0
(1)B【解析】在一個C語言程序中可以進行多種算法的實現(xiàn),對算法的個數(shù)沒有規(guī)定,所以B錯誤。
(2)A【解析】A選項中l(wèi)15L表示ll5是長整型數(shù)據(jù),合法。B選項是八進制常量的表示方法,但是在八進制中不能含有數(shù)字8,所以B錯誤。c選項中e后面應該是整數(shù)不能是小數(shù)l.5,所以c錯誤。D選項中八進制常量應該是數(shù)字…0開始,而不是字母…O開始。
(3)D【解析】C語言中標識符由字母、下劃線、數(shù)字組成,且開頭必須是字母或下劃線。所以D選項中的連接符不合法。
(4)A【解析】8與D選項中取模運算符%的左右兩個操作數(shù)均應為整數(shù),所以B、D錯誤。c選項中不能將X+Y的值賦給表達式Y(jié)*5,所以c錯誤。
(5)A【解析】A選項中逗號表達式先計算第一表達式2*x,然后計算表達式x+=2的值,即x=x+2即4,整個逗號表達式為第二個表達式的值4,所以選擇A。B選項中首先計算逗號表達式中第一表達式x++,此時x為3,在執(zhí)行第二個表達式2·X=2*3=6,所以逗號表達式為第二個表達式的值6。C選項的賦值表達式可以表示為x=x *(1+x)=2}(1+2)=6。D選項中的表達式可以表示為x=X}(x+1)=2·3=60
(6)C【解析】z=X++,Y++,++y;因為賦值運算符的優(yōu)先級高于逗號運算符的優(yōu)先級,所以可以將上式表示成(Z=x++),(Y++),(++y)。然后從左向右先計算表達式Z=X++,因為x++先使用后自增,所以z的值為1,X的值為2。再計算逗號表達式第二個表達式Y(jié)++,此時Y的值為2,最后計算第三個表達式++y,Y的值為3。
(7)A【解析】本題目中字符變量cl是字符‘A’的ASCIl碼加上4,即69所對應的字符‘E’。字符變量c2是字符‘A’的ASCIl碼加上3,即68所對應的字符‘D’。但是打印輸出時,cl以%C的格式輸出,所以是E,c2以%d的格式輸出,所以是68。
(8)A【解析】條件表達式:x=表達式17表達式2:表送式3的含義是:先求解表達式1,若為非0(真),則求解表達芪2,將表達式2的值賦給x。若表達式1的值為0(假),則求辭表達式3,將表達式3的值賦給x。在本題中與表達式1::x—y)等價的是(x—Y<0I|x—Y>O)。
(9)D【解析】在if else語句中else總是與離它最近的f配對。本題目中x為l所以!X為0,所以執(zhí)行else if語句中的內(nèi)容,判斷(x==O)是否成立,因為x為1所以條件不成立,聽以else if內(nèi)部的if…else語句不再執(zhí)行,所以Y的值還是初蛤值0。
(10)A【解析】B選項中switch((int)x);語句中不應該有最后的分號。switch(exprl),中的exprl不能用浮點類型或10n9類型,也不能為一個字符串,所以c錯誤。ca”后面常量表達式的類型必須與switch后面表達式的類型一致,所以D錯誤。
(11)A【解析】C語言中的非執(zhí)行語句不會被編譯,不會生成二進制的機器指令,所以A錯誤。由C語言構(gòu)成的指令序列稱c源程序,C源程序經(jīng)過C語言編譯程序編譯之后生成一個后綴為.OBJ的二進制文件(稱為目標文件);最后要由“連接程序”把此.OBJ文件與C語言提供的各種庫函數(shù)連接起來生成一個后綴為.EXE的可執(zhí)行文件。
(12)A【解析】C語言中八進制整型常量的開頭是數(shù)字0,十六進制整型常量的數(shù)字開頭是Ox。C語言中的實型常量
有兩種表示形式:小數(shù)形式,小數(shù)形式表示的實型常量必須要有小數(shù)點;指數(shù)形式,以“e”或“E',后跟一個整數(shù)來表示以l0為底數(shù)的冪數(shù),且規(guī)定字母e或E之前必須要有數(shù)字,且e或E后面的指數(shù)必須為整數(shù)。B選項中028錯誤,八透割中沒有數(shù)字8。c選項中4el.5中e后面的指數(shù)不是整數(shù):D選項中3.e5小數(shù)點后面缺少數(shù)字。
(13)A【解析】C語言中標識符由字母、下劃線、數(shù)字組成,且開頭必須是字母或下劃線。另外,關(guān)鍵字不能作為標識符。因為C語言中區(qū)分大小寫,所以B選項中的。FOR??梢宰鳛闃俗R符來用。A選項中含有非法字符&,所以選擇A。
(14)A【解析】B選項中函數(shù)pow(x,C)錯誤應該直接使用exp(x)函數(shù)。c選項中函數(shù)ah(n^x+e“x)錯誤,應該使用fabs()返回浮點數(shù)的絕對值。D選項中pow(x,n)參數(shù)順序錯誤。
(15)B【解析】取模運算符“%”,二元運算符,具有左結(jié)合性,參與運算的量均為整型。選項8中的a變量是doable實型,所以8不符合規(guī)定。
(16)D【解析】C語言中利用sizeof()函數(shù)判斷數(shù)據(jù)類型長度,在VC 6.0平臺中,整型int占有4個字節(jié),doable型數(shù)據(jù)占有8個字節(jié)。
(17)D【解析】按照從鍵盤輸入的數(shù)據(jù)可以_判斷字符l給了變量a,字符2給了變量b,字符<CR>即回車給了變量c,字符3給了變量d。所以打印輸出的結(jié)果為D選項。
(18)A【解析】C語言的邏輯運算符比較特別,它的操作數(shù)沒有明確的數(shù)據(jù)類型,可以是任意合法的表達式,所以選擇A。
(19)C【解析】本題中ff(a=1)b=1;與else d=3;之間多了語句c=2;所以會出現(xiàn)else語句的位置錯誤的編譯失敗提示。
(20)B【解析】C88e常量表達式只是起語句標號作用,并不是該處進行條件判斷。在執(zhí)行switch語句時,根據(jù)switch的表達式,找到與之匹配的Case語句,就從此case子句執(zhí)行下去,不在進行判斷,直到碰到break或函數(shù)結(jié)束為止。所以執(zhí)行內(nèi)層switch(y)時只執(zhí)行了a++,此時a的值為1。然后執(zhí)行外層case 2語句的a十+;b++;a為2,b為1。所以結(jié)果為B。