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