等級(jí)考試典型題解析
發(fā)布時(shí)間:2008-04-15 閱讀數(shù): 次 來(lái)源:網(wǎng)樂(lè)原科技
2004年4月二級(jí)C語(yǔ)言選擇題
16. 設(shè)有以下定義:
int a=0;
double b=1.25;
char c=’A’;
#define d 2
則下面語(yǔ)句中錯(cuò)誤的是(?。?
?。ˋ)a++ (B)b ++ (C)c++?。―)d++
答案:D
解析:由于a、b、c均為變量,可以使用自增運(yùn)算符++,而d是自定義常量,只能在定義處修改,定義好后,不能在程序中隨便改變。
18. 有以下程序:
main( )
{
int x=102,y=012;
printf("%2d,%2d\n",x,y);
} 執(zhí)行后輸出結(jié)果是(?。?
(A)10,01 (B)002,12
?。–)102,10 (D)02,10
答案:C
解析:C語(yǔ)言規(guī)定,整型常量可有三種表示方法:以非0開始的數(shù)是十進(jìn)制,以0開始的數(shù)是八進(jìn)制,以0x開始的數(shù)是十六進(jìn)制。因此八進(jìn)制的y以十進(jìn)制輸出結(jié)果應(yīng)是10,而x就是十進(jìn)制,結(jié)果不變應(yīng)是102。
20. 設(shè)有定義:int a,pa=&&a;以下scanf語(yǔ)句中能正確為變量a讀入數(shù)據(jù)的是(?。?
?。ˋ)scanf("%d",pa);?。˙)scanf("%d",a);
(C)scanf("%d",&&pa); (D)scanf("%d",pa);
答案:A
解析:語(yǔ)句“int apa=&a”中定義:a為一整型變量,pa是指向整型變量a的指針變量,即指針變量pa中存儲(chǔ)的值就是整型變量a在內(nèi)存中的地址的值,而scanf(“控制格式”,參數(shù)表)語(yǔ)句中要求參數(shù)必須是要求輸入變量的地址(即指針)。而(B)中的a是變量,(C)中的&pa是錯(cuò)誤的形式,(D)中pa與a等價(jià),只有(A)是正確的。
22. 有以下程序:
main( )
{ char k; int I;
for(i=1;i3;i++)
{ scanf("%c",&&k);
switch(k)
{ case '0' : printf("another\n");
case '1': printf("number\n");
}
}
}
程序運(yùn)行時(shí),從鍵盤輸入:01回車>,程序執(zhí)行后的輸出結(jié)果是(?。?
?。ˋ)another (B)another
number number
another
?。–)another ?。―)number
number number
number
答案:C
解析:在for循環(huán)語(yǔ)句中當(dāng)i=1時(shí),k的值由鍵盤輸入為字符‘0’,執(zhí)行switch語(yǔ)句,滿足case '0',輸出another 并換行,由于語(yǔ)句 case '0':printf″another\n″ 后沒(méi)有breek,故接著執(zhí)行語(yǔ)句 case '1' printf″number\n″ 輸出number并換行;當(dāng)i=1時(shí),k的值由鍵盤輸入為字符‘1’,執(zhí)行switch語(yǔ)句,滿足case '1',執(zhí)行語(yǔ)句case '1' printf″number\n″ 輸出number并換行,所以選C。
23. 有以下程序
main( )
{ int x=0,y=5,z=3;
while(z--0&&&&++x5) y=y-1;
printf("%d,%d,%d\n",x,y,z);
}
程序執(zhí)行后的輸出結(jié)果是(?。?
?。ˋ)3,2,0 ?。˙)3,2,-1
?。–)4,3,-1 ?。―)5,-2,-5
答案:B
解析:第一次執(zhí)行語(yǔ)句后,x=1y=4z=2;第二次執(zhí)行語(yǔ)句后x=2y=3z=1;第三次執(zhí)行while語(yǔ)句后x=3y=2z=0;判斷while條件由于不滿足條件z——0,退出while循環(huán)執(zhí)行printf語(yǔ)句,此時(shí)x=3y=2z=-1,所以結(jié)果為B。這里需特別指出的是判斷完z——0不滿足條件,不再判斷條件++x5,即z的值要自減1,而x的值不變。