2017計算機二級C語言選擇題訓練及答案
C語言作為計算機二級考試的重點考察對象,要求考生們掌握更多C語言的知識,下面是百分網(wǎng)小編整理的2017計算機二級C語言選擇題訓練及答案,希望可以為您帶來幫助!
選擇題
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.重復結(jié)構(gòu)
3.算法的時間復雜度是指( )。
A.執(zhí)行算法程序所需要的時間
B.算法程序的長度
C.算法執(zhí)行過程所需要的基本運算次數(shù)
D.算法程序中的指令條數(shù)
4.概要設計中要完成的事情是( )。
A.系統(tǒng)結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)的設計
B.系統(tǒng)結(jié)構(gòu)和過程的設計
C.過程和接口的設計
D.數(shù)據(jù)結(jié)構(gòu)和過程的設計
5.在結(jié)構(gòu)化分析方法中,數(shù)據(jù)字典的作用是( )。
A.存放所有需要處理的原始數(shù)據(jù)
B.存放所有處理的結(jié)果
c.存放所有程序文件
D.描述系統(tǒng)中所用到的全部數(shù)據(jù)和文件的有關信息
6.一個關系中屬性個數(shù)為1時,稱此關系為( )。
A.對應關系
B.單一關系
c.一元關系
D.二元關系
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.設x為int型變量,則執(zhí)行以下語句后,x的值為( )。
x=10;x=x-=x-x;
A.10
B.20
C.40
D.30
10.下列敘述中正確的是( )。
A.在面向?qū)ο蟮某绦蛟O計中,各個對象之間具有密切的關系
B.在面向?qū)ο蟮某绦蛟O計中,各個對象都是公用的
C.在面向?qū)ο蟮某绦蛟O中,各個對象之間相對獨立,相互依賴性小
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.假設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.軟件從需求分析、設計、實現(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.設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。【解析】重復結(jié)構(gòu)也稱為循環(huán)結(jié)構(gòu),它根據(jù)給定的條件,判斷是否需要重復執(zhí)行某一相同或類似的程序段,這種可以簡化大量的程序行。
3.C!窘馕觥克惴◤碗s度包括時間復雜度和空間復雜度,算法的時間復雜度是指執(zhí),亍算法所需要的計算機工作量,即算法執(zhí)行過程中所需要的基本運算次數(shù)。
4.A!窘馕觥吭贑語言中軟件概要設計的基本任務是:設計軟件系統(tǒng)結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)庫設計、編寫概要設計文檔、概要設計文檔評審4種。
5.D。【解析】在c語言中.結(jié)構(gòu)化分析方法中的數(shù)據(jù)字典的作用是描述系統(tǒng)中所用到的全部數(shù)據(jù)和文件的有關信息。
6.C!窘馕觥吭陉P系模型數(shù)據(jù)庫中,我們把構(gòu)成基本結(jié)構(gòu)的一維表稱為關系。關系的列稱為屬性,具有N個屬性的關系稱為N元關系。
7.D!窘馕觥吭诒磉_式a*b+d-c中,double的類型最高,C語言中,由低類型自動向高類型轉(zhuǎn)換,所以最后的結(jié)果一定是double型。
8.D!窘馕觥緾語言規(guī)定標識符是由字母、數(shù)字和下劃線組成的,且必須以字母或下劃線開頭,因此可知D選項錯誤。
9.A。【解析】執(zhí)行x=x-=x-x語句可寫成x=x- (x-x),可看出結(jié)果為10,故八選項正確。
10.C!窘馕觥勘绢}考查對面向?qū)ο蟮睦斫,面向(qū)ο蟮某绦蛟O計是對象模擬問題領域中的實體,各對象之間相對獨立,相互依賴性小,通過消息來實現(xiàn)對象之間的相互聯(lián)系。
11.C!窘馕觥慨攊=0時,執(zhí)行switch語句,對應的執(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。【解析】因為x=’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ù)定義時形參的類型無關,而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!窘馕觥吭贑語言中,不能直接比較兩個字符串的大小,必須用特定的函數(shù)來完成,選項A錯誤;選項B不管大于還是小于都執(zhí)行S,不符合題意;選項C正好相反,當s2大于s1時,執(zhí)行語句S,可知選項D正確。
20.A!窘馕觥吭诔绦蛑幸驗閒un函數(shù)的返回值為char,而P是指向char的指針變量,因此類型不匹配,故選擇A選項。
21.B。【解析】本題考查指針,由*p=str可知,指針P指向字符串數(shù)組的首地劃。二維數(shù)組str為每個字符串分配的存儲空間是10個字節(jié),因此p+10指向str[1][0],輸出的字符串就是數(shù)組中的第2個字符串。
22.C。【解析】在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。【解析】y=(x=)07 1:x<0 -1="" 0="" y="(x">07 1:(x<0?-1:0)),故選擇8選項。
26.A。【解析】C語言規(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語言的一個關鍵字,不能再用做
變量名和函數(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。【解析】getchar函數(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)設計、編碼、調(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語言選擇題訓練及答案】相關文章:
計算機二級《C語言》選擇題訓練題及答案12-18
計算機二級《C語言》選擇題題庫及答案12-12
計算機二級《C語言》選擇題題庫與答案11-03
計算機二級C語言選擇題及答案201610-17
2017計算機二級C語言選擇題及答案01-27
計算機二級考試C語言試題與答案(選擇題)02-06
2016計算機二級C語言選擇題及答案02-07
2017計算機二級C語言復習訓練題及答案12-08