第 1 頁:選擇題 |
第 5 頁:程序填空題 |
第 6 頁:程序改錯題 |
第 7 頁:程序設(shè)計題 |
31已知有如下結(jié)構(gòu)體:
struct sk
{ int a;
float b;
}data,*p;
若有P一8Ldata,則對data的成員a引用正確的是( )。
A.(*p).data.aB.(*p).a;C.p->data.aD.P.data.a
參考答案:B
參考解析:本題主要考查結(jié)構(gòu)指針:p=&data,訪問結(jié)構(gòu)體的成員。它可以通過結(jié)構(gòu)變量訪問,即data可以用等價的指針形式:(*p).a和P一>a來訪問結(jié)構(gòu)體變量中的成員。
32若有定義和語句:
int*。pp,*P,a=20,b=10;
pp=8Lp;P=&a;P=&.b;printf(”%d,%d\n”,*
P,**PP);
則輸出結(jié)果是( )。
A.20,10B.20,20C.10,20D.10,10
參考答案:D
參考解析:本題考查指針變量的賦值。**pp是定義一個指針變量,語句pp=&p是將PP指向指針P,*P和**pp都是指針P所指的內(nèi)存空間的內(nèi)容,即b的值。
33合法的main()函數(shù)命令參數(shù)形式是( )。
A.main(int a,char*c口)B.main(int arc,char**arv)C.main(int argc,char*argv)D.main(int argv,char*argc[])
參考答案:C
參考解析:在C語言中,main()函數(shù)也可以有參數(shù),例如,main(intar90,char*argv),argc是指字符串的指針數(shù)組,而其他幾項表達不正確。
34當(dāng)執(zhí)行以下程序段時,( )。
x=-1:
do{x=x*x;)while(!x);
A.循環(huán)體將執(zhí)行一次
B.循環(huán)體將執(zhí)行兩次
C.循環(huán)體將執(zhí)行無限次
D.系統(tǒng)將提示有語法錯誤
參考答案:A
參考解析:do—while的功能是先執(zhí)行一次循環(huán)體,再判斷條件是否成立,當(dāng)x=一l時,執(zhí)行do語句,x=X*x=1、,接著執(zhí)行while后的表達式,其值為0,退出循環(huán),因此循環(huán)體只執(zhí)行了一次。
35設(shè)x=011050,則x=x&01252的值是( )。
A.000000 1000 101000B.1111110100011001C.0000001 01 1 100010D.1100000OOOl0 1 000
參考答案:A
參考解析:本題主要考查按位與運算,x—Oll050的二進制形式為O001001000010lo00,01252的二進制形式為0000001010101010,兩者相與得0000001000101000。
36下列選項不符合良好程序設(shè)計風(fēng)格的是( )。
A.源程序要文檔化
B.數(shù)據(jù)說明的次序要規(guī)范化
C.避免濫用got0語句
D.模塊設(shè)計原則是高耦合、高內(nèi)聚
參考答案:D
參考解析:在程序設(shè)計中,對于軟件設(shè)計中的模塊設(shè)計要保證高內(nèi)聚和低耦合,源程序要有文檔說明,同時對程序中數(shù)據(jù)的說明要規(guī)范化。而goto語句破壞程序的結(jié)構(gòu),要盡量避免使用。所以選項D不正確。
37若有說明“char sl E30]=”abc”,s2[]=”defghi“;”,
則在使用函數(shù)stcat(sl,s2)后,結(jié)果是( )。
A.sl的內(nèi)容更新為abcdefghi
B.sl的內(nèi)容更新為defghi\O
C.sl的內(nèi)容更新為defghiabc\O
D.sl的內(nèi)容更新為abcdefghi\O
參考答案:D
參考解析:strcat(sl,s2)函數(shù)的功能是把s2字符串連接到sl字符串的末尾,要保證sl有足夠的空間容納下連接后的字符串。
38有以下程序:
#include
main()
{ int x=4,y;
{ y=x;
if(!y)printf(”x”);
else
printf(”y”);
x--:
)while(x);
)
程序的輸出結(jié)果是( )。
A.xyyxB.YYYYC.yyxxD.yxyx
參考答案:B
參考解析:本題考查d0—while語句和if…else語句。d0—while語句的功能是先執(zhí)行循環(huán)體再判斷條件,所以先判斷if語句的條件,Y=一4,!Y為邏輯0,條件不成立,執(zhí)行下面的else語句,輸出y,然后將x的值減1,x一3,條件不成立,執(zhí)行下面的else語句,輸出y,然后將X的值減1,x=2,滿足while循環(huán)條件,繼續(xù)循環(huán)。第三次循環(huán):先判斷if語句的條件,y=2,!y為邏輯0,條件不成立,執(zhí)行下面的else語句,輸出Y,然后將x的值減1,x=1,滿足while循環(huán)條件,繼續(xù)循環(huán)。第四次循環(huán):先判斷if語句的條件,y=-l,!y為邏輯0,條件不成立,執(zhí)行下面的else語句,輸出Y,然后將x的值減1,x=0,不滿足while循環(huán)條件,結(jié)束循環(huán)。所以選項B正確。
39有以下程序段:
int i,j,m=0;
for(i=1;i<=15;i+=4)
for(j=3;j<=19;j+=4)m++;
printf(”%d\n”,m);
程序段的輸出結(jié)果是( )。
A.12B.15C.20D.25
參考答案:C
參考解析:
li=1<一15一一>J一3<一19一一>
m+十.m一1
j+4=7<=19m++m=2
j一十4—11<一19m=3J—l5m=4
19m=5
i+4—5<一15j又從3開始加5次m一10i+4—9<一15J又從3開始加5次m=15i一13<一15j又從3開始加5次m一20i十4—19>15結(jié)束m一20
40若有定義“double a;”,則正確的輸入語句是( )。
A.scan{(”%if”,a);
B.scanf(”%f”,&a);
C.scan{(”%If”,&a)
D.scan{(”%le”,&a);
參考答案:D
參考解析:
D。【解析】本題考查scanf函數(shù)的調(diào)用形式:scanf(格式字符串,輸入項地址表)。題中定義變量a為雙精度型變量,雙精度變量的格式符為“l(fā)e”;變量的地址用取地址符“&”加變量名表示,所以選項D正確。
相關(guān)推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |