計(jì)算機(jī)二級選擇題題庫
選擇題題庫
1.下列數(shù)據(jù)結(jié)構(gòu)中,屬于非線性結(jié)構(gòu)的是( )。
A) 循環(huán)隊(duì)列
B) 帶鏈隊(duì)列
C) 二叉樹
D) 帶鏈棧
1、參考答案:C
【解析】樹是簡單的非線性結(jié)構(gòu),所以二叉樹作為樹的一種也是一種非線性結(jié)構(gòu)。
2.下列數(shù)據(jù)結(jié)構(gòu)中,能夠按照"先進(jìn)后出"原則存取數(shù)據(jù)的是( )。
A) 循環(huán)隊(duì)列
B) 棧
C) 隊(duì)列
D) 二叉樹
2、參考答案:B
【解析】棧是按先進(jìn)后出的原則組織數(shù)據(jù)的。隊(duì)列是先進(jìn)先出的原則組織數(shù)據(jù)
3.對于循環(huán)隊(duì)列,下列敘述中正確的是( )。
A) 隊(duì)頭指針是固定不變的
B) 隊(duì)頭指針一定大于隊(duì)尾指針
C) 隊(duì)頭指針一定小于隊(duì)尾指針
D) 隊(duì)頭指針可以大于隊(duì)尾指針,也可以小于隊(duì)尾指針
3、參考答案:D
【解析】循環(huán)隊(duì)列的隊(duì)頭指針與隊(duì)尾指針都不是固定的,隨著入隊(duì)與出隊(duì)操作要進(jìn)行變化。因?yàn)槭茄h(huán)利用的隊(duì)列結(jié)構(gòu)所以對頭指針有時可能大于隊(duì)尾指針有時也可能小于隊(duì)尾指針。
4.算法的空間復(fù)雜度是指( )。
A) 算法在執(zhí)行過程中所需要的計(jì)算機(jī)存儲空間
B) 算法所處理的數(shù)據(jù)量
C) 算法程序中的語句或指令條數(shù)
D) 算法在執(zhí)行過程中所需要的臨時工作單元數(shù)
4、參考答案:A
【解析】算法的空間復(fù)雜度是指算法在執(zhí)行過程中所需要的內(nèi)存空間。所以選擇A)。
5.軟件設(shè)計(jì)中劃分模塊的一個準(zhǔn)則是( )。
A) 低內(nèi)聚低耦合
B) 高內(nèi)聚低耦合
C) 低內(nèi)聚高耦合
D) 高內(nèi)聚高耦合
5、參考答案:B
【解析】一般較優(yōu)秀的軟件設(shè)計(jì),應(yīng)盡量做到高內(nèi)聚,低耦合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性,有利于提高模塊的獨(dú)立性。
6.下列選項(xiàng)中不屬于結(jié)構(gòu)化程序設(shè)計(jì)原則的是( )。
A) 可封裝
B) 自頂向下
C) 模塊化
D) 逐步求精
6、參考答案:A
【解析】結(jié)構(gòu)化程序設(shè)計(jì)的思想包括:自頂向下、逐步求精、模塊化、限制使用goto語句,所以選擇A)。
7.軟件詳細(xì)設(shè)計(jì)生產(chǎn)的圖如下:
該圖是( )
A) N-S圖
B) PAD圖
C) 程序流程圖
D) E-R圖
7、參考答案:C
【解析】N-S圖提出了用方框圖來代替?zhèn)鹘y(tǒng)的程序流程圖,所以A)不對。PAD圖是問題分析圖,它是繼承程序流程圖和方框圖之后提出的又一種主要用于描述軟件詳細(xì)設(shè)計(jì)的圖形表示工具,所以B)不對。E-R圖是數(shù)據(jù)庫中的用于表示E-R模型的圖示工具,所以D)不對。根據(jù)圖中所示表示方法是進(jìn)行軟件詳細(xì)設(shè)計(jì)時使用的程序流程圖。
8.數(shù)據(jù)庫管理系統(tǒng)是( )。
A) 操作系統(tǒng)的一部分
B) 在操作系統(tǒng)支持下的系統(tǒng)軟件
C) 一種編譯系統(tǒng)
D) 一種操作系統(tǒng)
8、參考答案:B
【解析】數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫的機(jī)構(gòu),它是一種系統(tǒng)軟件,負(fù)責(zé)數(shù)據(jù)庫中數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護(hù)、控制及保護(hù)和數(shù)據(jù)服務(wù)等。是一種在操作系統(tǒng)之上的系統(tǒng)軟件。
9.在E-R圖中,用來表示實(shí)體聯(lián)系的圖形是( )。
A) 橢圓形
B) 矩形
C) 菱形
D) 三角形
9、參考答案:C
【解析】在E-R圖中實(shí)體集用矩形,屬性用橢圓,聯(lián)系用菱形。
10.有三個關(guān)系R、S和T如下:則關(guān)系T是由關(guān)系R和S通過某種操作得到,該操作為( )。
A) 選擇
B) 投影
C) 交
D) 并
10、參考答案:D
【解析】在關(guān)系T 中包含了關(guān)系R與S中的所有元組,所以進(jìn)行的是并的運(yùn)算。
11.計(jì)算機(jī)高級語言程序的運(yùn)行方法有編譯執(zhí)行和解釋執(zhí)行兩種,以下敘述中正確的是( )。
A) C語言程序僅可以編譯執(zhí)行
B) C語言程序僅可以解釋執(zhí)行
C) C語言程序既可以編譯執(zhí)行又可以解釋執(zhí)行
D) 以上說法都不對
11、參考答案:A
【解析】解釋程序是將源程序(如BASIC)作為輸入,解釋一句后就提交計(jì)算機(jī)執(zhí)行一句,并不形成目標(biāo)程序。編譯程序是把高級語言(如FORTRAN、COBOL、Pascal、C等)源程序作為輸入,進(jìn)行翻譯轉(zhuǎn)換,產(chǎn)生出機(jī)器語言的目標(biāo)程序,然后再讓計(jì)算機(jī)執(zhí)行這個目標(biāo)程序,得到計(jì)算結(jié)果。
12.以下敘述中錯誤的是( )。
A) 用戶所定義的標(biāo)識符允許使用關(guān)鍵字
B) 用戶所定義的標(biāo)識符應(yīng)盡量做到"見名識意"
C) 用戶所定義的標(biāo)識符中,大、小寫字母代表不同標(biāo)識
D) 用戶所定義的標(biāo)識符必須以字母或下劃線開頭
12、參考答案:A
【解析】C語言規(guī)定標(biāo)識符只能由字母、數(shù)字和下劃線3種字符組成,且第一個字符必須為字母或下劃線,排除D);用戶定義標(biāo)識符中大小寫字母之間是有區(qū)別的并且應(yīng)盡量做到"見名識意",排除選項(xiàng)B)和C);C語言中還規(guī)定標(biāo)識符不能為C語言的關(guān)鍵字,故選項(xiàng)A)敘述錯誤,正確答案是選項(xiàng)A)。
13.若有說明語句:char c='\72';則變量c( )。
A) 包含1個字符
B) 包含2個字符
C) 包含3個字符
D) 說明不合法,c的值不確定
13、參考答案:A
【解析】C語言的字符型常量中,允許用一種特殊形式的字符常量,就是以一個""開頭的字符。其中,"\ddd"表示用ASCII碼(八進(jìn)制數(shù))表示一個字符,本題中的char c='\2'即表示占一個字符的變量c的ASCII碼值。
14.現(xiàn)有定義int a;double b;float c;char k;,則表達(dá)式a/b+c-k值的類型為( )。
A) int
B) double
C) float
D) char
14、參考答案:B
【解析】雙目運(yùn)算中兩邊運(yùn)算量類型轉(zhuǎn)換規(guī)律:
15.以下定義語句中正確的是( )。
A) int a=b=0;
B) char A=65+1,b=′b′;
C) float a=1,*b=&a,*c=&b;
D) double a=0.0;b=1.1
15、參考答案:B
【解析】本題考查變量的定義方法。如果要一次進(jìn)行多個變量的定義,則在它們之間要用逗號隔開。因此選項(xiàng)A)和D)錯誤;在選項(xiàng)C)中,變量c是一個浮點(diǎn)型指針,它只能指向一個浮點(diǎn)型數(shù)據(jù),不能指向指針變量b;所以正確答案為B)。
16.若在定義語句int a,b,c,*p=&c;之后,接著執(zhí)行以下選項(xiàng)中的語句,則能正確執(zhí)行的語句是( )。
A) scanf("%d",a,b,c);
B) scanf("%d%d%d",a,b,c);
C) scanf("%d", &p);
D) scanf("%d", p);
16、參考答案:D
【解析】scanf函數(shù)中的輸入項(xiàng)必須是指針,只有選項(xiàng)D)符合這個要求。
17.以下程序的運(yùn)行結(jié)果是( )。
int k=0;
void fun(int m)
{ m+=k;k+=m;printf("m=%d k=%d ",m,k++);}
main()
{ int i=4;
fun(i++); printf("i=%d k=%d\n",i,k);
}
A) m=4 k=5 i=5 k=5
B) m=4 k=4 i=5 k=5
C) m=4 k=4 i=4 k=5
D) m=4 k=5 i=4 k=5
17、參考答案:B
【解析】由于在main()函數(shù)中,變量 i=4,所以就調(diào)用fun(4),則輸出"m=4 k=4"。然后變量k增1等于5,變量i增1等于5,所以main()函數(shù)的"printf("i=%d k=%d\n",i,k);"語句輸出"i=5 k=5"。
18.在執(zhí)行下述程序時,若從鍵盤輸入6和8,則結(jié)果為( )。
main()
{ int a,b,s;
scanf("%d%d",&a,&b);
s=a ;
if(a<b)
s=b;
s*=s;
printf("%d",s); }
A) 36
B) 64
C) 48
D) 以上都不對
18、參考答案:B
【解析】本題中a的值為6,b的值為8,最后s的值為8,s*=s等價(jià)于s=s*s。
19.有以下程序:
main()
{ int k=5,n=0;
while(k>0) { switch(k) {
default : break;
case 1 : n+=k;
case 2 :
case 3 : n+=k;
}
k--;
}
printf("%d\n",n);
}
程序運(yùn)行后的輸出結(jié)果是( )。
A) 0
B) 4
C) 6
D) 7
19、參考答案:D
【解析】本題考查的是switch語句。在switch語句中,表達(dá)式的值與某一個case后面的常量表達(dá)式的值相等時,就執(zhí)行此case后面的語句,若所有的case中的常量表達(dá)式的值都沒有與表達(dá)式的值匹配的,就執(zhí)行default后面的語句,各個case和default的出現(xiàn)次序不影響執(zhí)行結(jié)果。所以在本題中,當(dāng)k=5和k=4的時候,case都沒有與其匹配的值,所以執(zhí)行了default語句;當(dāng)k=3時,執(zhí)行"case 3 : n+=k;"得n=3,然后執(zhí)行default;當(dāng)k=2時,執(zhí)行"case 2 : case 3 : n+=k;"得n=5,然后執(zhí)行default;當(dāng)k=1時,執(zhí)行"case 1 : n+=k; case 2 : case 3 : n+=k;"使得n加兩次k,得到n=7。
20.有以下程序:
#include <stdio.h>
main() { int x;
scanf("%d",& x);
if(x<=3); else
if(x?。?0) printf("%d\n",x);
}
程序運(yùn)行時,輸入的值在哪個范圍才會有輸出結(jié)果( )。
A) 不等于10的整數(shù)
B) 大于3且不等10的整數(shù)
C) 大于3或等于10的整數(shù)
D) 小于3的整數(shù)
20、參考答案:B
【解析】if…else控制結(jié)構(gòu)中,else總是與最近的未配對的if匹配。本題的執(zhí)行過程為:如果輸入整數(shù)小于3則不進(jìn)行任何操作,否則判斷是否不等于10,若為真則進(jìn)行輸出。因此程序輸出的數(shù)據(jù)為大于3且不等于10的整數(shù)。
21.有以下程序:
#include <stdio.h>
main(){ int a=1,b=0;
printf("%d,",b=a+b);
printf("%d\n",a=2*b)}
程序運(yùn)行后的輸出結(jié)果是( )。
A) 0,0
B) 1,0
C) 3,2
D) 1,2
22.有以下程序:
main(){ int num[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},i,j;
for(i=0;i<4;i++) { for(j=0;j<=i;j++)printf("%4c", ' ');
for(j= ??;j<4;j++)printf("%4d",num[i][j]);
printf("\n");
}
}
若要按以下形式輸出數(shù)組右上半三角
1 2 3 4
6 7 8
11 12
16
則在程序下劃線處應(yīng)填入的語句是( )。
A) i-1
B) i+1
C) i
D) 4-i
22、參考答案:C
【解析】此題中嵌套了兩個for語句,第一個用來輸出空格,第二個用來輸出數(shù)字。如此類型的輸出某種格式的考題,一般是采用多重循環(huán)來解決,需要考生找出輸出數(shù)據(jù)的特點(diǎn),并用相對應(yīng)的數(shù)學(xué)公式表達(dá)出來。
23.以下程序段中,與語句:k=a>b?(b>c?1:0):0;功能相同的是( )。
A) if((a>b)&&(b>c))k=1;
else k=0;
B) if((a>b)‖(b>c))k=1;
else k=0;
C) if(a<=b)k=0;
else if(b<=c)k=1;
D) if(a>b)k=1;
else if(b>c) k=1;
else k=0;
23、參考答案:A
【解析】表達(dá)式k=a>b?(b>c?1∶0)∶0表示:如果(a>b)條件為真,則k取值(b>c?1∶0),否則k取值0;當(dāng)a>b的情況下,如果b>c,則k值為1,否則為0。所以該表達(dá)式與選項(xiàng)A)功能相同。
24.有以下程序:
void ss(char *s,char t)
{ while(*s)
{ if(*s==t)*s=t-a+A;
s++; } }
main()
{ char str1[100]="abcddfefdbd",c=d;
ss(str1,c); printf("%s\n",str1);}
程序運(yùn)行后的輸出結(jié)果是( )。
A) ABCDDEFEDBD
B) abcDDfefDbD
C) abcAAfefAbA
D) Abcddfefdbd
24、參考答案:B
【解析】在內(nèi)存中,字符數(shù)據(jù)以ASCII碼存儲,它的存儲形式與整數(shù)的存儲形式類似。C語言中,字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用,也可以對字符型數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算,此時相當(dāng)于對它們的ASCII碼進(jìn)行算術(shù)運(yùn)算,在本題中,s++相當(dāng)于s=s+1,即讓s指向數(shù)組中的下一個元素。
25.現(xiàn)有如下程序段:
#include "stdio.h"
main()
{ int k[30]={12,324,45,6,768,98,21,34,453,456};
int count=0,i=0;
while(k[i])
{ if(k[i]%2==0||k[i]%5==0)count++;
i++; }
printf("%d,%d\n",count,i);}
則程序段的輸出結(jié)果為( )。
A) 7,8
B) 8,8
C) 7,10
D) 8,10
25、參考答案:D
【解析】在C語言中,定義一維數(shù)組的語句一般形式如下:
類型名 數(shù)組名[常量表達(dá)式];
一維數(shù)組的引用形式為:數(shù)組名[下標(biāo)表達(dá)式]。count表示能被2整除或被5整除的個數(shù),i則計(jì)算有多少個數(shù)組元素。
26.以下程序運(yùn)行后的輸出結(jié)果是( )。
#include<string.h>
void f(char *s,char *t){ char k;
k=*s;
*s=*t;
*t=k;
s++;t--;
if(*s)f(s,t);
}
main(){ char str[10]="welcome",*p;
p=str+strlen(str)/2+1;
f(p,p-2);
printf("%s\n",str);
}
A) eelcomw
B) weoclme
C) welcome
D) emoclew
26、參考答案:D
【解析】該程序中f函數(shù)的功能是交換兩個位置字符的值,f函數(shù)共調(diào)用3次,依次更改了字符串中l(wèi)和o、e和m、w和e的值,因此更改后的字符串的值是emoclew。
27.設(shè)有如下程序段:
int x=2004,y=2008;
printf("%d\n",(x,y));
則以下敘述中正確的是
A) 輸出值為2004
B) 輸出值為2008
C) 運(yùn)行時產(chǎn)生出錯信息
D) 輸出語句中格式說明符的個數(shù)少于輸出項(xiàng)的個數(shù),不能正確輸出
27、參考答案:B
【解析】(x,y)考查逗號表達(dá)式,逗號運(yùn)算符的結(jié)合性為從左到右,因此,最后一個表達(dá)式的值就是此逗號表達(dá)式的值,因此選項(xiàng)B)正確。
28.有以下程序:
#include <stdio.h>
void fun(char*c,int d){ *c=*c+1;d=d+1;
printf("%c,%c,",*c,d);
}
main(){ char b=a,a=A;
fun(&b,a); printf("%c,%c\n",b,a);
}
程序運(yùn)行后的輸出結(jié)果是( )。
A) b,B,b,A
B) b,B,B,A
C) a,B,B,a
D) a,B,a,B
28、參考答案:A
【解析】函數(shù)fun的第一個參數(shù)傳指針,可以將更改后的值傳回調(diào)用函數(shù),第二個參數(shù)傳值,不能將更改后的值傳回調(diào)用函數(shù),故選A)。
29.有以下程序:
#include <stdio.h>
#include <string.h>
main(){ char a[10]="abcd";
printf("%d,%d\n",strlen(a),sizeof(a));
}
程序運(yùn)行后的輸出結(jié)果是( )。
A) 7,4
B) 4,10
C) 8,8
D) 10,10
29、參考答案:B
【解析】strlen()用來返回字符串的長度,而sizeof()返回的是一個對象或者類型所占的內(nèi)存字節(jié)數(shù),即數(shù)組所占的內(nèi)存。
30.若有定義int a[2][3];,則對a數(shù)組的第i行第j列(假設(shè)i,j已正確說明并賦值)元素值的正確引用為( )。
A) *(*(a+i)+j)
B) (a+i)[j]
C) *(a+i+j)
D) *(a+i)+j
30、參考答案:A
【解析】本題考查了二維數(shù)組元素的引用方法。選項(xiàng)A)中a+i指向了數(shù)組a的第i+1行,*(a+i)則是第i+1行第0列的地址值,*(a+i)+j指向了數(shù)組a第i+1行,j+1列,*(*(a+i)+j)取到的是數(shù)組a的a[i][j]元素。
31.有以下程序:
#include <stdio.h>
main()
{ char c1,c2,c3,c4,c5,c6;
scanf("%c%c%c%c",&c1,&c2,&c3,&c4);
c5=getchar(); c6=getchar();
putchar(c1);putchar(c2);
printf("%c%c\n",c5,c6);
}
程序運(yùn)行后,若從鍵盤輸入(從第1列開始)
123<回車>
45678<回車>
則輸出結(jié)果是( )
A) 1267
B) 1256
C) 1278
D) 1245
31、參考答案:D
【解析】putchar(c1)輸出1,putchar(c2)輸出2,printf("%c%c\n",c5,c6)輸出45。
32.以下程序的運(yùn)行結(jié)果是( )。
#include <stdio.h>
int a=1;
int f(int c){ static int a=2;
c=c+1;
return(a++)+c;}
main(){ int i,k=0;
for(i=0;i<2;i++){int a=3;k+=f(a);}
k+=a;
printf("%d\n",k);
}
A) 17
B) 16
C) 15
D) 14
32、參考答案:D
【解析】fun函數(shù)語句return(a++)+c;中訪問的a,是其內(nèi)部定義的靜態(tài)局部變量,main函數(shù)中語句k+=f(a)訪問的a是其局部變量,所以兩次調(diào)用實(shí)際上都是調(diào)用f(3)。第一次調(diào)用時,fun函數(shù)中c=4,表達(dá)式(a++)+c的值為6,a遞增為3,k=6。第二次調(diào)用時,fun函數(shù)中c=4,表達(dá)式(a++)+c的值為7,a遞增為4,k=6+7=13。語句k+=a中的a是全局變量,所以k=13+1=14。
33.設(shè)有定義:int n1=0,n2,*p=&n2,*q=&n1;,以下賦值語句中與n2=n1;語句等價(jià)的是( )。
A) *p=*q;
B) p=q;
C) *p=&n1;
D) p=*q;
33、參考答案:A
【解析】本題考查的是指針變量的賦值。題目中各變量定義后,指針變量p指向了變量n2所在的存儲單元,指針變量q指向了變量n1所在的存儲單元,要使得n1的值賦給n2,可用指針變量q所指向的存儲單元的值賦給指針變量p所指向的存儲單元,即*p=*q。
34.設(shè)有如下說明:
typedef struct ST
{ long a;
int b;
char c[2];
}NEW;
以下說法正確的是( )。
A) NEW是一個結(jié)構(gòu)體變量
B) NEW是一個結(jié)構(gòu)體類型
C) ST是一個結(jié)構(gòu)體類型
D) 以上說明形式非法
34、參考答案:B
【解析】以上形式定義NEW表示ST的結(jié)構(gòu)類型,然后可以用NEW來說明結(jié)構(gòu)體變量。因此選項(xiàng)B)正確
35.有以下程序:
#include <stdio.h>
#include <string.h>
typedef struct{ char name[9]; char sex; float score[2]; }STU;
void f(STU a)
{ STU b={"Zhao",'m',85.0,90.0}; int i;
strcpy(a.name,b.name);
a.sex=b.sex;
for(i=0;i<2;i++) a.score[i]=b.score[i];
}
main()
{ STU c={"Qian",' f ',95.0,92.0};
f(c);
printf("%s,%c,%2.0f,%2.0f\n",c.name,c.sex,c.score[0],c.score[1]);
}
程序的運(yùn)行結(jié)果是( )。
A) Qian,f,95,92
B) Qian,m,85,90
C) Zhao,f,95,92
D) Zhao,m,85,90
35、參考答案:A
【解析】本題考查的是函數(shù)調(diào)用時的參數(shù)傳遞以及結(jié)構(gòu)體變量的引用的問題。程序在調(diào)用函數(shù)f時,傳給函數(shù)f的參數(shù)只是結(jié)構(gòu)變量c在棧中的一個拷貝,函數(shù)f的所有操作只是針對這個數(shù)據(jù)拷貝進(jìn)行的修改,這些都不會影響變量c的值。
36.有以下程序:
#include <stdio.h>
#define N 4
void fun(int a[][N],int b[]){ int i;
for(i=0;i<N;i++) b[i]=a[i][i];
}
main(){ int x[][N]={{1,2,3},{4},{5,6,7,8},{9,10}},y[N],i;
fun(x,y);
for(i=0;i<N;i++)printf("%d,",y[i]);
printf("\n");
}
程序的運(yùn)行結(jié)果是( )。
A) 1,2,3,4,
B) 1,0,7,0,
C) 1,4,5,9,
D) 3,4,8,10,
36、參考答案:B
【解析】該題目中fun函數(shù)的功能是將二維數(shù)組a中符合條件的值賦給一維數(shù)組的符合條件的元素。主函數(shù)的功能是將符合條件的一維數(shù)組的元素進(jìn)行輸出。
37.有以下程序:
#include<stdio.h>
int fun(int x,int y){ if(x?。統(tǒng))return((x+y)/2);
else return(x);
}
main(){ int a=4,b=5,c=6;
printf("%d\n",fun(2*a,fun(b,c)));
}
程序運(yùn)行后的輸出結(jié)果是( )。
A) 3
B) 6
C) 8
D) 12
37、參考答案:B
【解析】本題中對函數(shù)fun()進(jìn)行了嵌套的調(diào)用。首先調(diào)用fun(5,6),返回值為5,2*a的值為8,然后調(diào)用fun(8,5),最終輸出值為6.
38.若x是int型變量,且有下面的程序片段:
for(x=3;x<6;x++) printf((x%2)?("**%d"):("##%d\n"),x);
上面程序片段的輸出結(jié)果是( )。
A) **3
##4
**5
B) ##3
**4
##5
C) ##3
**4##5
D) **3##4
**5
38、參考答案:B
【解析】& 按位與,如果兩個相應(yīng)的二進(jìn)制位都為1,則該位的結(jié)果值為1,否則為0。| 按位或,兩個相應(yīng)的二進(jìn)制位中只要有一個為1,該位的結(jié)果值為1。2的二進(jìn)制為00000010,4的二進(jìn)制為00000100,所以做或運(yùn)算結(jié)果為00000110,該數(shù)與5即00000101做與操作結(jié)果為00000100,即4。
39.有以下程序:
#include <stdio.h>
#define N 5
#define M N+1
#define f(x)(x*M)
main()
{ int i1,i2;
i1=f(2);
i2=f(1+1);
printf("%d %d\n",i1,i2);
}
程序的運(yùn)行結(jié)果是( )。
A) 12 12
B) 11 7
C) 11 11
D) 12 7
40.有以下程序:
#include<stdio.h>
main(){ unsigned char a=8,c;
c=a>>3;
printf("%d\n",c);
}
程序運(yùn)行后的輸出結(jié)果是( )。
A) 32
B) 16
C) 1
D) 0
40、參考答案:C
【解析】本題中將8賦值給字符變量a,則a的二進(jìn)制為"00001000",a>>3的位運(yùn)算是把a(bǔ)向右移動三位,結(jié)果為"00000001",輸出其十進(jìn)制的值1。