- 相關(guān)推薦
2017計算機二級C語言選擇題訓(xùn)練及答案
C語言作為計算機二級考試的重點考察對象,要求考生們掌握更多C語言的知識,下面是百分網(wǎng)小編整理的2017計算機二級C語言選擇題訓(xùn)練及答案,希望可以為您帶來幫助!
選擇題
1.若某二叉樹的前序遍歷訪問順序是abdgcefh,中序遍歷訪問順序是dgbaechf,則其后序遍歷的結(jié)點訪問順序是( )。
A.bdgcefha
B.gdbecfha
C.bdgaechf
D.gdbehfca
2.三種基本結(jié)構(gòu)中,能簡化大量程序代碼的是( )。
A.順序結(jié)構(gòu)
B.分支結(jié)構(gòu)
C.選擇結(jié)構(gòu)
D.重復(fù)結(jié)構(gòu)
3.算法的時間復(fù)雜度是指( )。
A.執(zhí)行算法程序所需要的時間
B.算法程序的長度
C.算法執(zhí)行過程所需要的基本運算次數(shù)
D.算法程序中的指令條數(shù)
4.概要設(shè)計中要完成的事情是( )。
A.系統(tǒng)結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)的設(shè)計
B.系統(tǒng)結(jié)構(gòu)和過程的設(shè)計
C.過程和接口的設(shè)計
D.數(shù)據(jù)結(jié)構(gòu)和過程的設(shè)計
5.在結(jié)構(gòu)化分析方法中,數(shù)據(jù)字典的作用是( )。
A.存放所有需要處理的原始數(shù)據(jù)
B.存放所有處理的結(jié)果
c.存放所有程序文件
D.描述系統(tǒng)中所用到的全部數(shù)據(jù)和文件的有關(guān)信息
6.一個關(guān)系中屬性個數(shù)為1時,稱此關(guān)系為( )。
A.對應(yīng)關(guān)系
B.單一關(guān)系
c.一元關(guān)系
D.二元關(guān)系
7.若有以下定義:
char a;int b;
float c;double d;
則表達式a*b+b-c值的類型為( )。
A.float
B.int
C.char
D.double
8.下列選擇中,不能用做標識符的是( )。
A.1234
B._1_2
C.int_2_
D.2_int_
9.設(shè)x為int型變量,則執(zhí)行以下語句后,x的值為( )。
x=10;x=x-=x-x;
A.10
B.20
C.40
D.30
10.下列敘述中正確的是( )。
A.在面向?qū)ο蟮某绦蛟O(shè)計中,各個對象之間具有密切的關(guān)系
B.在面向?qū)ο蟮某绦蛟O(shè)計中,各個對象都是公用的
C.在面向?qū)ο蟮某绦蛟O(shè)中,各個對象之間相對獨立,相互依賴性小
D.上述3種說法都不對
11.以下程序的輸出結(jié)果是( )。
main()
{ int i;
for(i=0;i<3;i++)
switch(i){case 0:printf("%d",i);
case 2:printf("%d",i);
default:printf("%d",i);
}
}
A.000102
B.000020
C.000122
D.000111
12.下列程序執(zhí)行后的輸出結(jié)果是( )。
main()
{int x=’f’;printf("%c\n",’A’+(x-’a’+1));}
A.G
B.H
C.I
D.J
13.有如下程序:
main()
{ int a=2,b=-1.c=2;
if(a<0)if(b<0)c=0;
else c++;
printf("%d\n",c);
}
該程序的輸出結(jié)果是( )。
A.0
B.1
C.2
D.3
14.在C語言中,函數(shù)返回值的類型最終取決于( )。
A.函數(shù)定義時在函數(shù)首部所說明的函數(shù)類型
B.return語句中表達式值的類型
C.調(diào)用函數(shù)時主調(diào)函數(shù)所傳遞的實參類型
D.函數(shù)定義時形參的類型
15.以下程序的輸出結(jié)果是( )。
main()
{ int i=0,S=0;
for(;;)
{
if(i==3 ||i==5)continue;
if(i==6)break;
i++;
s+=i:
};
printf("%d\n",s);
}
A.10
B.13
C.21
D.程序陷入死循環(huán)
16.假設(shè)a和b為int型變量,則執(zhí)行以下語句后b的值為( )。
a=1;b=10;
do
{ b-=a;a++;}
while(b--<0);
A.9
B.-2
C.-l
D.8
17.下列程序執(zhí)行后的輸出結(jié)果是( )。
main()
{ int a[3][3],*p,i};
p=&a[0][0];
for(i=p;i<9;i++)p[i]=i+1;
printf("%d\n",a[1][2]);
}
A.3
B.6
C.9
D.隨機數(shù)
18.以下程序的輸出結(jié)果是( )。
int f(int A)
{ return a%2; }
main()
{int s[8]={1,3,5,2,4,6},i,d=0;
for(i=0;f(s[8]);i++)d+=s[i];
printf("%d\n",d);
}
A.9
B.11
C.19
D.21
19.s1和s2已正確定義并分別指向兩個字符串。若要求:當s1所指串大于s2所指串時,執(zhí)行語句s;則以下選項中正確的是( )。
A.if(s1>s2)S;
B.if(strcmp(s1,s2))S;
C.if(strcmp(s2,sl)>O)S;
D.if(stremp(s1,s2)>O)S;
20.有以下函數(shù):
char fun(char*p)
{return P;}
該函數(shù)的返回值是( )。
A.無確切的值
B.形參p中存放的地址值
c.一個臨時存儲單元的地址
D.形參p自身的地址值
21.以下程序的輸出結(jié)果是( )。
main()
{char str[]1-10]={"china","beijing"),*p=str;
printf("%s\n",p+10);
}
A.China
B.Beijing
C.ng
D.ing
22.合法的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[])
23.有以下結(jié)構(gòu)體說明和變量的定義,且指針P指向變量a,指針q指向變量b,則不能把結(jié)點b連接到結(jié)點a之后的語句是( )。
struct node
{char data;
struct node*next:
}a,b,*p=&a,*q=&b;
A.a.next=q;
B.P.next=&b;
C.p->next=&b;
D.(*p).next=q;
24.有如下程序:
#include
main()
{ FILE*fp1;
fp1=fopen("f1.txt","w");
fprintf(fp1,"abe");
fclose(fp1);
}
若文本文件f1.txt中原有內(nèi)容為:good。則運行以上程序后文件f1.txt中的內(nèi)容為( )。
A.goodabc
B.abcd
C.abc
D.abcgood
25.與“y=(x>0?1:x<0?-1:0)”;的功能相同的if 語句是( )。
A.if(x>0)y=1;
else if(x<0)y=1;
else y=0;
B.if(x)
if(x>0)y=1;
else if(x<0)y=-l;
else y=0;
C.y=-l
if(x)
if(x>O)y=1;
else if(x=-0)y=0;
else y=-l;
D.y=0;
if(x>=0)
if(x>=0)y=1;
else y=-l;
26.下列字符串是標識符的是( )。
A.aa
B.a-class
C.int
D.LINE 1
27.執(zhí)行下列程序后,變量a,b,C的值分別是( )。
int x=5,y=4;
int a,b,c;
a=(--x==y++)?X:++y;
b=++x:
c=y:
A.a=5,b=5,c=5
B.a=4,b=5,c=5
C.a=5,b=6,c=5
D.a=1,b=5,c=6
28.下列變量聲明合法的是( )。
A.short a=1.4e-1;
B.double b=1+3e2.8;
C.10ng do=oxfdaL;
D.float 2 aaa=1e-3;
29.下列程序的輸出結(jié)果是( )。
#include
main()
{ int i;
for(i=1;i<=10,i++)
{ if((i*i>=20)&&(i*i<=100))
break;
}
printf("%d\n",i*i;
}
A.49
B.36
C.25
D.64
30.運行下列程序,若從鍵盤輸入字符“a”,則輸出結(jié)果是( )。
char c;
c=getchar();
if(c>=’a’&&c<=’g’)c=c+4:
else if(c>=’9’&&c<=’2’)c=c-21:
else printf("input error! \n");
putchar(c);
A.f
B.t
C.e
D.d
31.下列程序的輸出結(jié)果是( )。
#include
int b=2:
int func(int*a)
{ b+=*a;return b;}
main()
{ int a=1,t=2;
t+=func(&a):
printf("%d\n",t);
}
A.4
B.5
C.6
D.8
32.若有定義“float a=25,b,*p=&b;”,則下列對賦值語句“*p=a;”和“p=&a;”的正確解釋為( )。
A.兩個語句都是將變量a的值賦予變量P
B.*p=a是使P指向變量a,而p=&a是將變量的值賦予變量指針P
c.*p=a是將變量a的值賦予變量b,而&a是使P指向變量a
D.兩個語句都是使P指向變量a
33.對兩個數(shù)組a和b進行下列初始化:
char m[]="1234567";
char n[]={’1’,’2’,’3’,’4’,’5’,’6’,’7’};
則下列敘述正確的是( )。
A.數(shù)組m與數(shù)組n完全相同
B.數(shù)組m與數(shù)組n長度相同
C.數(shù)組m比數(shù)組n長1
D.數(shù)組m與數(shù)組n中都存放字符串
34.下列程序輸出結(jié)果是( )。
#include
main()
{ char a[]={’a’,’b’,’C’,’d’,’e’,’f’,’\0’).
int i,j;
i=sizeof(a);
j=strlen(a);
printf("%d,%d",i,j);
}
A.7,7
B.7,6
C.6,6
D.6,7
35.軟件生命周期是指( )。
A.軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程
B.軟件從需求分析、設(shè)計、實現(xiàn)到測試完成的過程
C.軟件的開發(fā)過程
D.軟件的運行維護過程
36.下列程序的運行結(jié)果是( )。
#include
#define ADD(x) x+x
main()
{ int m=1,n=2,k=3;
int S=ADD(m+n)*k;
printf("s=%d",s);
}
A.sum=18
B.sum=10
C.sum=9
D.sum=25
37.有以下程序:
fun(int x,int y){return(x+y);)
main()
{ int a=1,b=2,c=2,sum;
sum=fun((a++,b++,a+b),c++);
printf("%d\n",sum);
}
執(zhí)行后的結(jié)果是( )。
A.6
B.7
C.8
D.9
38.設(shè)x=011050,則x=x&01252的值是( )。
A.0000001000101000
B.1111110100011001
C.0000001011100010
D.1100000000101000
39.有以下程序:
int fun(int x)
{ int p;
if(x==0||x==1)return(3);
p=x-fun(x-2);
return p;
}
main()
{ printf("%d\n",fun(7));}
執(zhí)行后的結(jié)果是( )。
A.7
B.3
C.2
D.0
40.已知函數(shù)fread的調(diào)用形式為“fread(buffer,size,count,fp);”,其中buffer代表的是( )。
A.存放讀入數(shù)據(jù)項的存儲區(qū)
B.一個指向所讀文件的文件指針
C.一個指針,是指向輸入數(shù)據(jù)存放在內(nèi)存中的起始地址
D.一個整型變量,代表要讀入的數(shù)據(jù)項總數(shù)
參考答案與解析:
1.D!窘馕觥亢笮虮闅v是增首先遍歷左子樹或左子結(jié)點,然后遍歷右子樹或右子結(jié)點,最后訪問根結(jié)點。前序遍歷是指首先訪問根結(jié)點,依次訪問左子樹、右子樹。本題根據(jù)前序和中序遍歷的結(jié)果確定,然后再對其進行后序遍歷,正確答案為選項D。
2.D。【解析】重復(fù)結(jié)構(gòu)也稱為循環(huán)結(jié)構(gòu),它根據(jù)給定的條件,判斷是否需要重復(fù)執(zhí)行某一相同或類似的程序段,這種可以簡化大量的程序行。
3.C!窘馕觥克惴◤(fù)雜度包括時間復(fù)雜度和空間復(fù)雜度,算法的時間復(fù)雜度是指執(zhí),亍算法所需要的計算機工作量,即算法執(zhí)行過程中所需要的基本運算次數(shù)。
4.A。【解析】在C語言中軟件概要設(shè)計的基本任務(wù)是:設(shè)計軟件系統(tǒng)結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)庫設(shè)計、編寫概要設(shè)計文檔、概要設(shè)計文檔評審4種。
5.D!窘馕觥吭赾語言中.結(jié)構(gòu)化分析方法中的數(shù)據(jù)字典的作用是描述系統(tǒng)中所用到的全部數(shù)據(jù)和文件的有關(guān)信息。
6.C。【解析】在關(guān)系模型數(shù)據(jù)庫中,我們把構(gòu)成基本結(jié)構(gòu)的一維表稱為關(guān)系。關(guān)系的列稱為屬性,具有N個屬性的關(guān)系稱為N元關(guān)系。
7.D!窘馕觥吭诒磉_式a*b+d-c中,double的類型最高,C語言中,由低類型自動向高類型轉(zhuǎn)換,所以最后的結(jié)果一定是double型。
8.D。【解析】C語言規(guī)定標識符是由字母、數(shù)字和下劃線組成的,且必須以字母或下劃線開頭,因此可知D選項錯誤。
9.A!窘馕觥繄(zhí)行x=x-=x-x語句可寫成x=x- (x-x),可看出結(jié)果為10,故八選項正確。
10.C!窘馕觥勘绢}考查對面向?qū)ο蟮睦斫,面向(qū)ο蟮某绦蛟O(shè)計是對象模擬問題領(lǐng)域中的實體,各對象之間相對獨立,相互依賴性小,通過消息來實現(xiàn)對象之間的相互聯(lián)系。
11.C!窘馕觥慨攊=0時,執(zhí)行switch語句,對應(yīng)的執(zhí)行case 0,輸出0,因為沒有break,接著執(zhí)行case 2的語句,又輸出一個0,接著執(zhí)行default語句,再輸出一個0,返回i+ +;i=1時,沒有case語句,執(zhí)行default語句,輸出一個1,接著又返回i++;當i=2時執(zhí)行case 2和default語句分別輸出一個2,此時又返回i++,i變?yōu)?,for循環(huán)不成立,終止,最后輸出000122。
12.D!窘馕觥恳驗閤=’f’,所以寫成’A’+(x-’a’+1) =’A ’+(’f ’-’a’+1)=’A’+6=’J ’,故選擇D選項。
13.C。【解析]else與離它最近的if構(gòu)成if…else語句,而當a為2時,第一個if語句不成立,因此什么也不做,即c 的值仍然為2,故選擇C選項。
14.A!窘馕觥吭赾語言中,函數(shù)返回的類型最終取決于函數(shù)定義時在函數(shù)首部所說明的函數(shù)類型,與調(diào)用函數(shù)時主調(diào)函數(shù)所傳遞的實參類型和函數(shù)定義時形參的類型無關(guān),而return語句表達式的值將強制轉(zhuǎn)換為函數(shù)定義時在函數(shù)首部所說明的函數(shù)類型返回。
15.D!窘馕觥慨攊一0時,兩個if都不滿足,所以都不執(zhí)行,直接執(zhí)行i++語句,此時i為1,S為l,返回for循環(huán)中;當i=1時,同樣不執(zhí)行兩個if語句,執(zhí)行i++后,i=2,s= 3,返回for循環(huán)中;i=2時也不執(zhí)行if語句,執(zhí)行i++后,i =3,s=6,接著又執(zhí)行for循環(huán),此時符合第一個if語句,執(zhí)行到continue時不再執(zhí)行i++了,continue是跳出本次循環(huán),接著下次循環(huán)。永遠這樣執(zhí)行下去,i的值永遠為3,故選擇D選項。
16.D!窘馕觥慨攂為10時,執(zhí)行b-=a,此時b為9,接著b--表達式值為9,b的值為8,大于0,while不成立,退出循環(huán),故選擇D選項。
17.D!窘馕觥砍绦驁(zhí)行在for循環(huán),當i=p時,i中放的是P的地址,類型不符合,因此輸出隨機數(shù),故選擇D 進項.
18.A。【解析】在程序中當i=0時,s[o]=1,f(s[0])為1,執(zhí)行d+=s[0],d的值為1,i++也變?yōu)?。當i=1時,s[1]=3,f(s[1])為1,也為非0,繼續(xù)執(zhí)行后面的表達式,此時d的值為1+3=4,繼續(xù)著i++變?yōu)?,接著執(zhí)行for循環(huán),可知for循環(huán)的目的是把S數(shù)組中的奇數(shù)相加,因此最后d的值為1+3+5為9,故選擇A選項。
19.D。【解析】在C語言中,不能直接比較兩個字符串的大小,必須用特定的函數(shù)來完成,選項A錯誤;選項B不管大于還是小于都執(zhí)行S,不符合題意;選項C正好相反,當s2大于s1時,執(zhí)行語句S,可知選項D正確。
20.A。【解析】在程序中因為fun函數(shù)的返回值為char,而P是指向char的指針變量,因此類型不匹配,故選擇A選項。
21.B!窘馕觥勘绢}考查指針,由*p=str可知,指針P指向字符串數(shù)組的首地劃。二維數(shù)組str為每個字符串分配的存儲空間是10個字節(jié),因此p+10指向str[1][0],輸出的字符串就是數(shù)組中的第2個字符串。
22.C!窘馕觥吭贑語言中,main()函數(shù)也可以有參數(shù),例如,main(int ar90,char * argv),argc是指字符串的指針數(shù)組,而其他幾項表達不正確。
23.B。【解析】本題考查結(jié)構(gòu)體指針變量的賦值方法,要把結(jié)點b連接到結(jié)點;l的后面,必須把b的地址給a的next指針。故8正確。
24.C!窘馕觥慨斢“w”打開時,已存在一個以該文件名命名的文件,則在打開時將該文件刪除,再重新建立一個新文件,因此當輸入時原來的內(nèi)容已被覆蓋,所以只有后輸入的內(nèi)容,故選擇C選項。
25.B!窘馕觥縴=(x=)07 1:x<0 -1="" 0="" y="(x">07 1:(x<0?-1:0)),故選擇8選項。
26.A!窘馕觥緾語言規(guī)定,標識符是由字母、數(shù)字或下劃線組成,并且它的第一個字符必須是字母或者下劃線。int就是表達整型變量類型的標識符,它不能用做變量名和函數(shù)名。
27.B!窘馕觥勘绢}考查自加(++)、自減(--)運算符的使用。“++x,--x”,在變量x前使用,先使X的值加1或者減1,再使用此時的表達式的值參與運算;“x++,x --”,先把使用X的值參與運算,在使用X之后,再使x的值加1或者減1。對于表達式--x=4,y++=4,兩者相等,--x=y ++為真,所以a=x=4,執(zhí)行完此語句后y的值是5。第2個表達式b=++x,x的值先加1,然后賦給b,即b=x+1=5;第一個表達式c=y=5。故B正確。
28.A!窘馕觥拷獯鸨绢}需了解3個知識點:①標識符是由字母、數(shù)字或下劃線組成,并且它的第一個字符必須是字母或者下劃線;②do是C語言的一個關(guān)鍵字,不能再用做
變量名和函數(shù)名;③c語言規(guī)定指數(shù)形式的實型數(shù)量e或E 后面的指數(shù)必須是整數(shù)。
29.C!窘馕觥勘绢}考查for循環(huán)及if語句。當執(zhí)行到第一個滿足(i*i>一20)&&(i*i<=100)這個條件的i出現(xiàn)時,break跳出循環(huán),執(zhí)行下列的printf語句。
30.C!窘馕觥縢etchar函數(shù)是讀取鍵盤的輸入函數(shù),本題中輸入字母“a”,則c=’ a ’,判斷if條件,發(fā)現(xiàn)’ a ’>=’a ’ &&’a ’<=’g’成立,則執(zhí)行下列語句:C=C+4,C得到的字
符的ASCII碼值,退出if語句,通過putchar函數(shù)輸出字符。
31.B!窘馕觥勘绢}考查函數(shù)調(diào)用時的參數(shù)傳遞。在執(zhí)行函數(shù)func時,由于全局定義了一個變量b,所以在函數(shù)體中執(zhí)行b=2+1=3,最終t=2+3=5。
32.C。【解析】“P”是指針變量,指向一個地址:“*P”為P指針所指向地址的內(nèi)容 “&”是取變量地址。
33.C。【解析】本題考查字符串數(shù)組和字符數(shù)組賦值的區(qū)別。“char m[]="1234567";”定義一個字符型數(shù)組并初始化,C語言規(guī)定,在字符串的末尾自動加上串結(jié)束標記’\0 ’,因此數(shù)組m的長度是8;而數(shù)組n是按照字符方式對數(shù)組初始化,系統(tǒng)不加上串結(jié)束標記’\0’,因此數(shù)組n的長度是7。
34.B。【解析】本題要注意sizeof()和strlen()的區(qū)別,sizeof()函數(shù)的功能是返回字符串所占的字節(jié)數(shù),strlen()函數(shù)的功能是返回字符串長度,’\0 ’是一個轉(zhuǎn)義符,它占存儲空間,但不計入串的長度。
35.B!窘馕觥寇浖芷(Systems Development Life Cyele,sDLC)是軟件的產(chǎn)生直到報廢的生命周期,周期內(nèi)有問題定義、可行性分析、總體描述、系統(tǒng)設(shè)計、編碼、調(diào)試和測試、驗收與運行、維護升級到廢棄等階段。
36.B!窘馕觥勘绢}考查帶參數(shù)的宏的定義:“#define ADD(x)x+x”中X代表m+n,故s寫成s=m+n+m+n *k=1+2+1+2*3=10。
37.C。【解析】表達式a++,b++,a+b是一個逗號表達式,在逗號表達式中,從左向右進行各個表達式的運算,最后一個表達式的值就是逗號表達式的結(jié)果,所以表達式a++,b++,a+b的值為5,所以fun()函數(shù)中的形參x 的值為5;表達式c++先把變量C的值傳給形參y,然后c 的值加1,所以y的值為3,因此函數(shù)fun((a++,b++,a+ b),c++)的返回值為8。
38.A。【解析】本題考查按位與運算,按位與就是相同為1,不同為0,把x=011050化成二進制為0001001000101000,把01252 化成二進制 為0000001010101010,兩者相與得0000001000101000。
39.C!窘馕觥空{(diào)用函數(shù)fun(7)時,由于x的值為7,執(zhí)行語句“p=x-fun(x-2);”,相當于執(zhí)行p=7-fun(5);
調(diào)用函數(shù)fun(5)時,由于x的值為5,執(zhí)行語句“p=x- fun(x-2);”,相當于執(zhí)行p=7-fun(3);
調(diào)用函數(shù)fun(3)時,由于x的值為3,執(zhí)行語句“p=x- fun(x-2);”,相當于執(zhí)行p=7-fun(1);
調(diào)用函數(shù)fun(1)時,由于X的值為1,執(zhí)行語句“return (3);”,函數(shù)的返回值為3。
因此函數(shù)調(diào)用fun(7)等價于7-(5-fun(3)),即7 -(5 -(3-fun(1))),即7-(5-(3-3)),所以函數(shù)fun(7)的返回值為2。答案為C。
40.C。【解析】本題考查數(shù)據(jù)塊讀取函數(shù)調(diào)用形式:fread(buffer,size,count,fp)。
fread函數(shù)參數(shù)說明:“buffer”是一個指針,是讀入數(shù)據(jù)的存放地址,對fwrite來說,是要輸出數(shù)據(jù)的地址;“size”是要讀寫的字節(jié)數(shù);“count”是要進行讀寫多少個size字節(jié)數(shù)據(jù)項;“fp”是指文件型指針。
【計算機二級C語言選擇題訓(xùn)練及答案】相關(guān)文章:
計算機二級《C語言》選擇題題庫與答案07-27
計算機二級《C語言》選擇題題庫及答案11-16
計算機二級考試C語言試題與答案(選擇題)07-06
2016計算機二級C語言選擇題及答案09-10
計算機二級C語言選擇題及答案201605-04
2017計算機二級C語言選擇題及答案10-05