- 相關推薦
2017計算機二級C語言選擇題備考練習
學業的精深造詣來源于勤奮好學,只有好學者,才能在無邊的知識海洋里獵取到真智才學,只有真正勤奮的人才能克服困難。以下是百分網小編整理的2017計算機二級C語言選擇題備考練習,歡迎學習!
1.棧和隊列的共同特點是( )。
A.都是先進先出
B.都是先進后出
c.只允許在端點處插入和刪除元素
D.沒有共同點
2.數據的存儲結構是指( )。
A.數據所占的存儲空間
B.數據的邏輯結構在計算機中的存放形式
C.數據在計算機中的順序存儲方式
D.存儲在計算機外存中的數據
3.關系數據庫管理系統能實現的專門關系運算包括( )。
A.排序、索引、統計
B.選擇、投影、連接
C.關聯、更新、排序
D.顯示、打印、制表
4.已知二叉樹后序遍歷序列是dabec,中序遍歷序列是debac,它的前序遍歷序列是( )。
A.ached
B.decab
C.deabe
D.cedba
5.在單鏈表中,增加頭結點的目的是( )。
A.方便運算的實現
B.使單鏈表至少有一個結點
c.標識表結點中首結點的位置
D.說明單鏈表是線性的鏈式存儲實現
6.設有二元關系R和三元關系s,下列運算合法的是( )。
A.R∩S
B.R∪S
C.R-S
D.R×S
7.兩個或兩個以上模塊之間聯系的緊密程度稱為( )。
A.耦合性
B.內聚性
c.復雜性
D.數據傳輸特性
8.設a=l,b=2,c=3,d=4,則表達式:“a A.4
B.3
C.2
D.1
9.若有定義:“int a=4,b=5;float x=3.4,y=2.1;”,則下列表達式的值為( )。
(float)(a+b)/2+(int)x%(int)y;
A.5.5
B.55
C.5.500000
D.55.00000
10.下列程序的輸出結果是( )。
main()
{ int a,b,d=25;
a=d/10%9;
b=a&&(一1);
printf("%d,%d\n",a,b);}
A.6,1
B.2,1
C.6,0
D.2,0
11.以下敘述中不正確的是( )。
A.在不同的函數中可以使用相同名字的變量
B.函數中的形式參數是局部變量
C.在一個函數內定義的變量只在本函數范圍內有效
D.在一個函數內的復合語句中定義的變量在本函數范圍內有效
12.以下能正確定義二維數組的是( )。
A.int a[][3];
B.int a[][3]={2*3);
C.int a[][3]={};
D.int a[2][3]一{{1),{2},{3,4}};
13.下列程序的輸出結果是( )。
#include
main()
{ int a=3,b=2,C=1;
if(a if(b<0)c=0;
else c++:
printf("%d\n",c);
}
A.2
B.0
C.1
D.不確定的值
14.要求通過while循環不斷讀入字符,當讀入字母N時結束循環,若變量已正確定義,下列正確的程序段是( )。
A.while((ch—getchar())!=’N’)printf("%c",ch);
B.while(oh=getchar()!=’N’)printf("%C",ch);
C.while(ch=getchar()==’N’)printf("%c",ch);
D.while((ch—getchar())==’N’)printf("%c",ch);
15.下列說法不正確的是( )。
A.調用函數時,實參可以是表達式
B.調用函數時,實參與形參可以共用內存單元
C.調用函數時,將實參的值復制給形參,使實參變量和形參變量在數值上相等
D.調用函數時,實參與形參的類型必須一致
16.下列選項中不是字符常量的是( )。
A.’\v’
B.’\x2a’
C.’a’
D."\0"
17.若已包括頭文件且已有定義char sl [18],s2={"ABCDE")和int i,現要將字符串”ABCDE”賦給sl,下列語句錯誤的是( )。
A.strcpy(s1,s2)
B.strcpy(s1,"ABCDE");
C.sl="ABCDE";
D.for(i=0;i<6;i++)sl[i]=s2[i]
18.在位運算中,操作數每左移兩位,其結果相當于( )。
A.操作數乘以2
B.操作數除以2
c.操作數除以4
D.操作數乘以4
19.以下程序的輸出結果是( )。
main()
{ int a=7,b=8,*P,*q,*r;
p=&a;q=&b;
r=P;P=q;q=r;
printf("%d,%d,%d,%a\n",*P,*q,a,b);
}
A.8,7,8,7
B.7,8,7,8
C.8,7,7,8
D.7,8,8,7
20.有下列程序:
fun(int x,int y)
{ static int m=0,i=2;
i+=++rn;rfl—i+x+y;return m;
}
main()
{ int j=l,m=1,k;
k=fun(j,m);printf("%d,",k);
k=fun(j.m);printf(”%d\n”,k);
}
執行后的輸出結果是( )。
A.5.5
B.5,11
C.11,11
D.11,5
21.下列程序的運行結果為( )。
#include
main()
{struct date
{int year,month,day;
}today;
printf("%d\n",sizeof(struct date));
}
A.8
B.6
C.10
D.12
22.有以下程序:
#include<
struct stu
{ int num;
char name[10]:
int age;}
void fun(struct stu*p)
{printf("%s\n",(*p).name);}
tllain()
{
struct stu students[3]={{9801,"Zhang".20},
{9802,"Wang",19},{9803,"Zhao",1 8}}
fun(students+2);
}
輸出的結果是( )。
A.Zhang
B.Zhao
C.Wang
D.18
23.有以下程序:
viod fun(int a,int b,int C)
{ a=456:b=567;c=678;}
main()
{ int x=10,y=20,Z=30;
fun(x,y,z):
printf("%d,%d,%d\n",x,y,z);
}
輸出的結果是( )。
A.30,20,10
B.10,20,30
C.456,567,678
D.678,567,456
24.有以下結構說明和變量定義,指針p、q、r分別指向鏈表中的3個連續結點。
struct node
{ int data;struct node*next;)*p,*q,*r;
現要將q所指結點從鏈表中刪除,同時要保持鏈表的連續,以下不能按要求完成操作的語句是( )。
A.p->next=q->next;
B.P-next=P->next->next;
C.p->next=r;
D.p=q->next;
25.有定義:“int a=2,b=3,c=4;”,則下列選項中值為0的表達式是( )。
A.(!a==1)&&(!b==O)
B.(a C.a&&b
D.a||(b+b)&&(c-a)
26.設fun()函數的定義形式為
void fun(char ch,float x){…}
則下列對函數fun的調用語句中,正確的是( )。
A.fun("abc",3.0);
B.t=fun(’D’.16.5);
C.fun(’65’,2.8);
D.fun(32,32);
27.有下列程序:
main()
{ char p[]={’a’,’h’,’c’},q[]="a";
printf("%d%d\n".sizeof(P),sizeof(q));
}
程序運行后的輸出結果是( )。
A.4 4
B.3 3
C.3 4
D.4 3
28.有下列程序:
main()
{ int k=5,n=0;
while(k>0)
{switch(k)
{dcfault:break;
case 1:n=n+k;
case 2:
case 3:n+=k;
}
k--;
}
printf("%d\n".n);
}
程序運行后的輸出結果足( )。
A.0
B.4
C.6
D.7
29.有以下程序:
main()
{ int a[]=(2,4,6,8,10},y=0,x,*P;
p=&a[1];
for(x=1;x<3;x++) y+=p[x];
printf("%d\n,y");
}
程序運行后的輸出結果是( )。
A.10
B.11
C.14
D.15
30.有下列程序:
void sort(int a[],int n)
{int i,j,t;
for(i=0;i for(j=i+1;j if(a[i] }
main()
{int aa[10]:{1,2,3,4,5,6,7,8,9,10),i;
sort(aa+2,5);
for(i=0;i<10;i++)printf("%d,",aa[i]);
printf("\n");
}
程序運行后的輸出結果是( )。
A.1,2,3,4,5,6,7,8,9,l0,
B.1,2,7,6,3,4,5,8,9,10,
C.1,2,7,6,5,4,3,8,9,10,
D.1,2,9,8,7,6,5,4,3,10,
31.有以下程序:
#include
int abe(int u,int v);
main()
{ int a=24,b一16,c;
c=abc(a,b);
printf("%d\n",c);
}
int abc(int u,int v)
{ int w;
while(v)
{w=u%v;u=v;v=w;)
return;
}
輸出結果是( )。
A.6
B.7
C.8
D.9
32.下列程序的輸出結果是( )。
int fl(int x,int y){return x>y?x:y;)
int f2(int x,int y){return x>y?y:x;}
main()
{ int a=4,b=3,c=5,d=2,e,f,g;
e=f2(f1(a,b),f1(c,d));
f=f1(f2(a,b),f2(c,d));
g=a+b+c+d-e-f;
printf("%d,%d,%d\n",e,f,g);}
A.4,3,7
B.3,4,7
C.5,2,7
D.2,5,7
33.語句int(*ptr)()的含義是( )。
A.ptr是一個返回值為int的函數
B.ptr是指向int型數據的指針變量
C.ptr是指向函數的指針,該函數返回一個int型數據
D.ptr是一個函數名,該函數的返回值是指向int型數據的指針
34.下述程序的輸出結果是( )。
#include
main()
{ char chE2][5]一{”1234”,”5678”},*p[2];
int i,j,s=0;
for(i=0;i<2;i++)
p[i]=ch[i];
for(i=0;i<2;i++)
{s=p[i][j]一’0’;
printf("%d",s);}
}
A.6357
B.6135
C.1357
D.691357
35.下述程序的輸出結果是( )。
#include
main()
{ int a[2][3]={{1,2,3),{4,5,6}},(*p)[3],i;
p=a ;
for(i=0;i<3;i++)
{ if(i<2)
p[1][i]=p[1][i]一1;
else
p[1][i]=1;)
printf("%d\n",a[0][1]+a[1][1]+a[1][2]);}
A.8
B.7
C.12
D.9
36.若有以下說明,則( )不是對strcpy庫函數正確的調用。
strcpy庫函數用于復制一個字符串:char*strl="abcd",str2[10],*str3="hijklmn",*str4[2],*str5="aaaa";
A.strcpy(str2,strl)
B.strcpy(str3,strl)
C.strcpy(strl,str2)
D.strcpy(str5,strl)
37.執行下述程序后,輸出的結果是( )。
#include
#define S(X)X*X
void main()
{int a=9,k=3,m=2;
a/=S(k+m)/s(k+m);
printf("%d",a);
}
A.1
B.4
C.9
D.0
38.已知有如下結構體:
struct sk
{int a;
float b;
}data,*p;
若有P=&data,則對data的成員a引用正確的是( )。
A.(*p).data.a
B.(*p).a;
C.p->data.a
D.p.data.a
39.下述程序的輸出結果是( )。
#include
void main()
{int b[6]={2,4,6,8,10,12);
int*p=b,**q=&p;
printf("%d,",*(p++));
printf("%d,",**q);
}
A.4,4
B.2,2
C.4,5
D.2,4
40.以下程序的輸出結果是( )。
main()
{ int i,k,a[10],p[3];
k=5;
for(i=0:i<10;i++)a[i]=i;
for(i=0;i<3;i++)p[i]=a[i*(i+1)];
for(i=0;i<3;i++)k+=p[i]*2;
printf("%d\n",k、;
}
A.20
B.21
C.22
D.23
參考答案及解析:
1.C!窘馕觥織J窍薅ㄖ辉诒砦策M行插入或刪除操作的線性表,因此棧是先進后出的線性表,隊列是一種特殊的線性表,它只允許在表的前端(front)進行刪除操作,在表的后端(rear)進行插入操作,隊列具有先進先出(FIFO)的特點。綜上所述可知,棧和隊列只允許在端點處插入和刪除元素。
2.B!窘馕觥繑祿拇鎯Y構,又稱為數據的物理結構,是數據的邏輯結構在計算機中的存放形式。
3.B。【解析】關系數據庫管理系統的專門關系運算包括選擇運算、投影運算和連接運算。
4.D。【解析】二叉樹的遍歷有3種:前序、中序和后序。①前序遍歷訪問根結點,然后按左右順序遍歷子結點;②中序首先遍歷左子樹,然后訪問根結點,最后遍歷右子樹;③后序遍歷首先遍歷左子樹,然后遍歷右子樹,最后訪問根結點。本題根據后序和中序遍歷的結果可以得出二叉樹的結構,然后再對其進行前序遍歷,正確答案選項為D。
5.A。【解析】根據單位鏈表(包含頭結點)的結構,只要掌握了表頭,就能夠訪問整個鏈表,因此增加頭結點的目的是為了便于運算的實現。
6.D!窘馕觥勘绢}給出的兩個關系R與S的表結構是不同的(R是二元關系,S是三元關系),它們不能進行∩、∪、一運算。而兩個不同結構的關系是可以進行笛卡兒積(×)運算的。
7.A。【解析】耦合性用彩表示模塊間互相連接的緊密程度的度量,它取決于各個模塊之間接口的復雜度、調用方式以及哪些信息通過接口。
8.D!窘馕觥吭谌窟\算符中,優先級相同,按從右到左的結合性計算,a 9.C!窘馕觥吭谟嬎(float)(a4-b)/2時,由于通過強制類型轉換將(a+b)轉換成了float型,所以應先將2轉換成float型,再進行計算,得4.500000。在計算(int)x%(int)y時,先將x和y通過強制類型轉換成int型,再進行求余運算,結果為1。又因為4.500000是float型,所以將1和它相加時,先將1換成float型,再計算,得到5.500000。類型轉換的一般規則是:低級類型從高級類型,并進行相應的轉換。數據類型的級別由低到高的排序表示為:char→int→unsigned→log→float→double。
10.B!窘馕觥慨斶壿嬤\算符“&&”兩邊的值是非零時,邏輯表達式的值為真(即為1)。所以b=2&&(-1)= 1,2%9=2,故a=2,故先算a/10=25/10=2。
11.D!窘馕觥吭谝粋函數中的復合語中定義的變量,只能在這個復合語句范圍內有效。
12.B。【解析】選項A中對于二維數組,必須通過賦值的個數來確定其長度,沒有賦值則無法確定,選項C中賦的是空值,也不能確定其行下標,而選項D中定義的兩行三列,而賦值的卻是三行兩列。
13.C!窘馕觥康谝粋if語句,先判斷條件,發現a 14.A!窘馕觥縲hile循環的執行過程如下:①計算while后面圓括號中表達式的值。當值為非0時,執行步驟②;當值為0時,執行步驟④。②執行循環體一次。③轉去執行步驟①。④退出循環。在選項A中,表達式(ch=get- char())!=’N’表示輸入的字符不等于N,如果這個條件表達式成立,則執行循環體,打印輸出輸入的字符。如果這個條件表達式不成立,即輸入的字符等于N,則退出循環。所以選項A為正確答案。
15.B!窘馕觥勘绢}考查函數調用的基本概念。調用函數時,實參的形式可以是具體的數值,也可以是表達式。實參將數值或表達式的值傳遞給形參,因而兩者的類型必須保持一致;形參在運算過程中會發生改變,但不一定會影響到實參值,所以可知兩者不共用內存單元。
16.D!窘馕觥縞語言規定,一個字符常量代表ASCII 碼字符集里的一個字符,在群序中用單引號括起來,以便區分。’\v’表示的是豎向跳格:’kx2a’表示的是兩位十六迸制數;’a’表示的是字符a對應的ASCII碼值。"\0"用雙引號故不正確。
17.C!窘馕觥繑到M名sl是代表sl數組首地址的地址常量,因為“=”左邊不能出現常量,所以s1="ABCDE"的方法是錯誤的。
18.D!窘馕觥孔笠苙位相當于乘以2的n次冪,右移n 位相當于除以2的n次冪。
19.C。【解析】在“r=P;p=q;q=r;”三個語句是表示P 與q交換,經過交換后P指向b的地址,q指向a的地址,因此最后輸出為8,7,7,8,故選擇C選項。
20.B。【解析】變量m和i聲明為局部靜態變量,因此第1次調用fun()函數后,局部靜態變量m和i的值為5和3,第l次調用結束時,它們的值不變,第2次調用時,m和i 的初始值分別為5和3,在執行“i+=m+1”后,i的值為9,因此,最終m的值為11。
21.B!窘馕觥縮truct date中包含year、month、day這3 個整型變量,一個整型變量占2個字節;sizeof是求所占字節數的運算符。
22.B。【解析】從實參傳遞過去的是結構體系數組的第3個元素,所以輸出的name為Zhao。
23.B!窘馕觥勘绢}考查實參與形參調用,從實參傳遞到形參時,只是數值的傳遞,調用函數中值的改變不會影響主函數中的值,因此原樣輸出。
24.D!窘馕觥勘绢}考查鏈表結點的刪除,q一>next中存放的是r所指結點的首地址,將r所指結點的首地址存于p-- next中,則實現刪除q所指點的功能,并保持鏈表連續,P所指點與r所指結點相連。
25.A。【解析】本題考查邏輯與運算“&&”與邏輯或運算“||”。在選項A中,因為!a=0,所以關系表達式!a=1 為0,又因為邏輯與運算符“&&”兩邊的表達式只要一個等于零,則整個表達式為零,所以選項A正確。在選項8中,關系表達式a 26.C。【解析】由題目的已知條件函數fun的定義形式void fun(char ch,float x){…)可知第一個形參為字符型,所以A不符合,第二個形參為精度型,所以D不符合,函數fun 定義為void型(無論返回值型),故其沒有返回值,所以選項B錯誤。選項C的第一個實參的類型為字符型,第二個實參的類型為單精度型,與函數fun的形式參數的類型相符合,所以選項C為正確答案。
27.C!窘馕觥空Z句char p[]={’a’,’b ’,’ c’);定義了一個一維字符數組p[],并用3個字符’a’,’b’ ,’c ’進行了初始化;而語句q[]="abe"表示定義了一個一維字符數組,并用一個字符串常量"abc"進行了初始化。在C語言中,系統在每個字符串常量的最后自動加入一個字符’\0 ’作為字符串的結束符。所以函數sizeof(q)=4,而sizeof(p)=3,因而選項C為正確答案。
28.D!窘馕觥勘绢}主要考查while循環語句和switch case語句的使用方法。其執行步驟為:k=5時,跳出switch 語句,然后k自減1;當k=4時,跳出switch語句,然后k自減1;當k=3時,n=13+k=0+3=3,跳出switch語句,然后k自減1;當k=2時n=n+k=3+2=5,跳出switch語句,然后k自減l;當k=1時,case 1:n=n+k一5+1=6,沒有break繼續執行CaSe 3;n=n+k=6+1=7,跳出switch語句,然后k自減1;當k=0時,退出循環,所以輸出結果為7。
29.C!窘馕觥坑深}目的語句P=&a[1]可知,P指向a 數組中下標為1的元素“4”,又因為P為指針變量,所以P [x]與*(p+x)等價,因而在for循環語句中,第一次循環P [1]指向a數組中下標為2的元素“6”,第二次循環p[2]指向a數組中下標為3的元素“8”,所以y=6+8=14,因而選項C為正確答案。
30.C!窘馕觥勘绢}考查排序的使用由sort()函數的兩層for循環語句可知,其二々能是把數組a口中的元素按照從大到小的順序進行排列。在main()函數中首先定義了一維整型數組aa[10],然后調用sort(aa+2,5)實現從數組aa中下標為2的元素“3”開始.其后連續的5個元素從大到小進行排列,其余元素不變。
31.C!窘馕觥縜bc函數是求u、v的最大公約數,當v= 16時,循環成立,執行其后的語句,即w=u%v,u=v;v=w;w=24%16=8,u=16,v=8,接著返回到while中,當v=8 時,循環成立,執行其后昀語句,即w=u%v;u=v;v=w;w=16%8=0,u=8,v=0,接著再返回到while中,當v=0 時,循環不成立,退出循環。
32.A。【解析】根據函數的定義可知,如果x>Y成立,則函數f1返回x的值,函數f2返回y的值。所以fl(a,b)= 4,n(c,d)=5,f2(a,b)=3;,f2(c,d)=2,故e=f2(4,5)=4,f =f1(3,2)=3,g=4+3斗5+2-4-3=7。
33.C!窘馕觥勘绢}考查的是指向函數的指針。函數指針定義的基本格式為:類型標識符(*指針變量名)()。“類型標識符”為函數返回值的類型。
34.C。【解析】本題先將指針P指向二維數組ch[2] IS],相當于p[0]="1234",p[1]="5678";通過雙重for循環,將P中的字符隔一個輸出一個,通過“s=p[i][j]-’0’;”語句將所要輸出的字符#換成相應的十進制數。
35.B!窘馕觥扛鶕袛啾绢}共進行三次for循環,第一次執行for循環,p[1][0]=p[1][0]-1=3;第2次執行for循環,p[1][1]=p[1][1]-1=4;第3次執行for循環,[1][2] =1,最后輸出的是a[o][1]+a[1][1]+a[1][2]=2+4+ 1=7。
36.C!窘馕觥縮trcpy(sl,s2)函數的功能是將字符串s2 復制到字符串s1中。要保證s1存儲區能容納下s2字符串。
37.D!窘馕觥勘绢}j=要是考查帶參數的宏的定義,過程如下:int a=a/S(k+m)/S(k+m)=a/(k+m*k+m/k+m)=9/(3十2*3十2/3十2*3十2)=0。
38.B!窘馕觥勘绢}主要考查結構指針:P=&data,訪問結構體的成員。它可以通過結構變量訪問,即data,可以用等價的指針形式:(*p).a和P->a來訪問結構體變量中的成員。
39.D。【解析】首先定義了一個指向一維數組b的指針P,一個指向指針P的指針變量q;輸出*(p++)是先輸出* p,即b[O]的值,再將指針P指向數組的下一個元素b[1];輸出**q是輸出指針P所指單元的內容。
40.B。【解析】第一個循環的作用是把從0~9的數賦
給a數組;第二個循環的作用是把a數組中的部分元素放到數組P中,即p[0]=a[0]=0,p[1]=a[2]=2,p[2]=a[6]= 6;第三個循環的作用是把P中的各個元素的兩倍之和放到k中,即k=5+0+4+12=21。
【計算機二級C語言選擇題備考練習】相關文章:
2016年計算機二級C語言選擇題練習08-17
2017計算機二級C++選擇題練習06-26
全國計算機二級考試C語言選擇題練習及答案07-01
2016年計算機二級C語言選擇題專項練習05-15
計算機二級《C語言》選擇題題庫及答案11-16
2017計算機二級C語言備考訓練題08-25
2017計算機二級C語言備考習題及答案08-02