- 相關(guān)推薦
C語言備考計算機(jī)二級之選擇題及答案2017
題目不能做過就忘,一定要善于總結(jié)經(jīng)驗,發(fā)現(xiàn)規(guī)則。下面是小編整理的C語言備考計算機(jī)二級之選擇題及答案,歡迎練習(xí)!
1.常采用的兩種存儲結(jié)構(gòu)是( )。
A.順序存儲結(jié)構(gòu)和鏈?zhǔn)酱鎯Y(jié)構(gòu)
B.散列方法和索引方式
C.鏈表存儲結(jié)構(gòu)和數(shù)組
D.線性存儲結(jié)構(gòu)和非線性存儲結(jié)構(gòu)
2.結(jié)構(gòu)化程序設(shè)計主要強(qiáng)調(diào)的是( )。
A.程序的規(guī)模
B.程序的效率
C.程序設(shè)計語言的先進(jìn)性
D.程序的易讀性
3.在面向?qū)ο蠓椒ㄖ校? )描述的是具有相似屬性與操作的一組對象。
A.屬性
B.事件
C.方法
D.類
4.有下列二叉樹.對此二叉樹前序遍歷的結(jié)果為( )。
A.ACFXDBEYZ
B.ABEFXYZCD
C.ABCDEFXY7
D.ABDYECFXZ
5.C語青的基本單位是( )。
A.函數(shù)
B.過程
C.子程序
D.子函數(shù)
6.算法分析的目的是( )。
A.找出數(shù)據(jù)結(jié)構(gòu)的合理性
B.找出算法中輸入和輸出之間的關(guān)系
C.分析算法的易懂性和可靠性
D.分析算法的效率以求改進(jìn)
7.用鏈表表示線性表的優(yōu)點是( )。
A.便于隨機(jī)存取
B.花費的存儲空間較順序存儲少
C.便于捅入和刪除操作
D.數(shù)據(jù)元素的物理順序與邏輯順序相同
8.能正確表示“當(dāng)x的取值在[1,10]和[100,110]范圍內(nèi)為真,否則為假”的表達(dá)式是( )。
A.(x>=1)&&(x<=10)&&(x>=100)&&(X< =110)
B.(x>=1)||(x<2 10="" x="">=100)||(x<=1l0)
C.(x>=1)&&(x<=10)||(x>=100)&&(x<= 110)
D.(x>=1)||(x<=10)&&(x>=100)||(x<=l 10)
9.以下有4組用戶標(biāo)識符,其中合法的一組是( )。
A.FOr
-sub
Case
B.4d
DO
Size
C.f2_G3
IF
abc
D.WORD
void
define
10.語句:“printf("%d",(a=)&&(b=-2));”的輸出結(jié)果是( )。
A.無輸出
B.結(jié)果是不確定
C.-1
D.1
11.當(dāng)c的值不為0時,在下列選項中不能正確將c的值賦給變量a、b的是( )。
A.c=b=a;
B.(a=c)||(b=c);
C.(a=c)&&(b=c);
D.a=c=b;
12.以下程序的輸出結(jié)果是( )。
main( )
{ int a=3:
printf("%d\n",(a+a-=a*a));
}
A.-6
B.12
C.0
D.-12
13.以下能正確定義一維數(shù)組的選項是( )。
A.int a[5]=(0,1,2,3,4,5);
B.char a[]={0,1,2,3,4,5);
C.char a={’A ’,’B’,’C’};
D.int a[5]="0123";
14.有以下程序段:
int x=3;
do
{printf("%d",x-=2);)
while(!(--x));
其輸出結(jié)果是( )。
A.1
B.3 0
C.1 -2
D.死循環(huán)
15.下列程序的輸出結(jié)果是( )。
void fun(int*X,int y)
{ printf("%d%d",*x,*y);*x=3;*y=1;}
main( )
{ int x=1,y=2;
fun(&y,&x);
printf("%d%d",x,y);
}
A.2 1 4 3
B.1 2 1 2
C.1 2 3 4
D.2 1 1 2
16.對兩個數(shù)組a和b進(jìn)行下列初始化:
char m[]1="l234567":
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中都存放字符串
17.假定所有變量均已正確說明,下列程序段運行后x 的值是( )。
a=b=c=0;x=12;
if(!a)x--;
else x=5:
if(c)x=3:
else x=4:
A.11
B.4
C.12
D.3
18.有以下程序:
main( )
{char a=’a’,b;
printf("%c,",++a);
printf("%c\n",b=a++):
)
程序運行后的輸出結(jié)果是( )。
A.b,b
B.b,c
C.a,b
D.a,c
19.在下列給出的表達(dá)式中,與while(E)中的(E)不等價的表達(dá)式是( )。
A.(!E==0)
B.(E>0||E<0)
C.(E==0)D.(E!=0)
20.有下列程序:
main( )
{char s[]="abcde";
s+=2:
printf("%d\n",s[0]);
}
執(zhí)行后的結(jié)果是( )。
A.輸出字符a的ASCII碼
B.輸出字符c的ASCII碼
C.輸出字符c
D.程序出錯
21.下列選項中非法的字符常量是( )。
A.’\t’
B.’\039’
C.’,’
D.’\n ’
22.以下程序的輸出結(jié)果是( )。
main( )
{ char ch[3][4]={"123","456","78"),*p[3];int i;
for(i=0;i<3;i++)p[i]=ch[i];
for(i=0;i<3;i++)printf("%s",p[i]);}
A.123456780
B.123 456 780
C.12345678
D.147
23.以下程序的輸出結(jié)果是( )。
main( )
{ char w[][10]={"ABCD","EFGH","IJKL","
MNOP"),K;
for(k=1;k<3;k++)printf("%s\n",w[k]);
A.ABCD
FGH
KL
B.ABCD
EFG
U
C.EFG
JK
O
D.EFGH
UKL
24.以下程序的輸出結(jié)果是( )。
union myun
{ struct
{int x,y,z;)u;
int k:
}a;
main( )
{ a.u.x=4;a.u.y=5;a.u.z=6;
a.k=0;
printf(%d\n",a.u.x);
}
A.4
B.5
C.6
D.0
25.若有以下定義和語句:“double r=99,*p=&r;*P =r;”,則以下正確的敘述是( )。
A.兩個*p含義相同,都說明給指針變量p賦值
B.在“double r=99,*p=&r;”中,把r的地址賦值給了P所指的存儲單元
c.語句“*p=r;”把變量r的值賦給指針變量P
D.語句“*p=r;”取變量r的值放回r中
26.以下程序的輸出結(jié)果是( )。
main( )
{int x=0.5;char z=’a’;
printf("%d\n",(x&1)&&(z<’2’));}
A.0
B.1
C.2
D.3
27.若希望下列的程序運行后輸出25,程序空白處的正確選項是( )。
main( )
{int id=50,a[]=(7,4,10,5,8};
for( )
j+=a[i];
printf("%d",j-40);
}
A.i=1;i<4;++i
B.i=l;i<3;++i
C.i=4;i>2;i--
D.i=2;i<4;++i
28.若二維數(shù)組a有m列,則在a[i][j]前的元素個數(shù)為( )。
A.i*m+j-1
B.i*m+j
C.J*m+i
D.i*m+j+1
29.下列程序的輸出結(jié)果是( )。
#include
int fun(int a)
{int b=0;
static int c=4:
a=c++:b++;
return(a):
main( )
{int a=2,i,c;
for(i=0:i<2;i++)
c=f(a+1):
printf("%d\n",c);
}
A.4
B.7
C.6
D.5
30.定義結(jié)構(gòu)體數(shù)組:
struct stu
{int num;
char nameE20];
}X[5]={1,"LI",2,"ZHAO",3,"WANG",4," ZHANG",5,"LIU");
for(i=1;i<5;i++)
printf("%d%c",x[i].num,x[i].name[2]);
以上程序段的輸出結(jié)果為( )。
A.2A3N4A5U
B.112A3H4I
C.1A2N3A4U
D.2H3A4H5I
31.設(shè)int x=7,則~x的值是( )。
A.-8
B.7
C.-1
D.1
32.有以下程序:
void fun(char*a,char*b)
{a=b; (*a)++; }
main( )
{char c1=’A ’,c2=’a’,*p1,*p2;
p1=&c1;p2=*c2;fun(p1,p2);
printf("%C%c\n",c1,c2);
}
程序運行后的輸出結(jié)果是( )。
A.Ab
B.aa
C.Aa
D.Bb
33.有以下程序:
int fun(int n)
{if(n==l)return l;
else return(n+fun(n一1)):
}
main( )
{int x;
scanf("%d",&x);x=fun(x);printf("%d\n",
x):
}
執(zhí)行程序時,給變量X輸入10,程序的輸出結(jié)果是( )。
A.55
B.54
C.65
D.45
34.有以下程序:
void f(int x,int y)
{int t;
if(x }
main( )
{int a=4,b=3,c=5;
f(a,b);f(a,c);f(b,c);
printf("%d,%d,%d\n",a,b,c);
}
執(zhí)行后輸出結(jié)果是( )。
A.3,4,5
B.5,3,4
C.5,4,3
D.4,3,5
35.以下程序的輸出結(jié)果是( )。
main( )
{char*s="12134211";
int v[4]=(0,0,0,0),k,i;
for(k=0;s[k];k++)
{switch(s[k])
{case’1’:i=0;
case’2’:i=1;
case’3’:i=2;
case’4’:i=3;}
}
v[i]++:
}
for(k=0;k<4;k++)printf("%d",v[k]);
A.4 2 1 1
B.0 0 0 8
C.4 6 7 8
D.8 8 8 8
36.有以下程序:
main( )
{int x=102,y=012;
printf("%2d,%2d\n",x,y);
}
執(zhí)行后輸出結(jié)果是( )。
A.10,01
B.02,12
C.102,10
D.02,10
37.有以下程序:
main( )
{int x=0,y=5,z=3;
while(z-->0&&++x<5)y=y-l;
printf("%d,%d,%d\n",x,y,z);
}
程序執(zhí)行后的輸出結(jié)果是( )。
A.3,2,0
B.3。2. 1
C.4,3,-1
D.5,2.-5
38.有以下程序:
main( )
{int i,n=0:
for(i=2;i<5;i++)
{do
{if(i%3) continue:
n++:
}while(!i);
n++:
}
printf("n=%d\n",n);
}
程序執(zhí)行后輸出結(jié)果是( )。
A.n=5
B.n=2
C.n=3
D.n=4
39.下面程序的功能是輸出以下形式的金字塔圖案:main( )
{int i,j; *
for(i=l;i<-4;i++)***
{for(j=1;j<=4-i;j++)printf("");
*****
for(j=1;j<=____;j++)printf("
*"); *******
printf("\n");
}
}
在下劃線處應(yīng)填入的是( )。
A.i
B.2*i一1
C.n=2*i+1
D.i+2
40.函數(shù)ftell(fp)的作用是( )。
A.得到fp所指向文件的當(dāng)前讀寫位置
B.初始化流式文件的位置指針
c.移動流式文件的位置指針
D.以上答案均正確
選擇題答案與解析
1.A。【解析】線性表的存儲通常要用兩種存儲結(jié)構(gòu):順序存儲結(jié)構(gòu)和鏈?zhǔn)酱鎯Y(jié)構(gòu)。
2.D。【解析】程序不光是編寫完就結(jié)束了,為了測試和維護(hù)程序,往往還有其他人閱讀和跟蹤程序,因此程序設(shè)計的風(fēng)格應(yīng)該強(qiáng)調(diào)簡單和清晰,即程序的易讀性,“清晰第一,效率第二”。
3.D。【解析】類(class)描述的是具有相似屬性與操作的一組對象,具體對象是類的實例。
4.D。【解析】所謂二叉樹的前序遍歷是指先訪問根結(jié)點,訪問左子樹,最后訪問右子樹,本題中序為DYBEAFCZX,后序為YDEBFZXCA。
5.A!窘馕觥緾語言是函數(shù)式的語言。它的基本組成單位是函數(shù),在c語言中任何程序都是由一個或者多個函數(shù)組成的。
6.D!窘馕觥克惴ǚ治鍪侵笇σ粋算法的運行時間和占用空間做定量的分析,計算相應(yīng)的數(shù)量級,并用時間復(fù)雜度和空間復(fù)雜度表示。分析算法的目的就是要降低算法的時間復(fù)雜度和空間復(fù)雜度,提高算法的執(zhí)行效率。
7.C!窘馕觥繑(shù)據(jù)的存儲結(jié)構(gòu)有順序存儲結(jié)構(gòu)和鏈?zhǔn)酱鎯Y(jié)構(gòu)兩種。不同存儲結(jié)構(gòu)的數(shù)據(jù)處理效率不同。由于鏈表采用鏈?zhǔn)酱鎯Y(jié)構(gòu),元素的物理順序并不連續(xù),對于插入和刪除無需移動元素,很方便,當(dāng)查找元素時就需要逐.個元素查找,因此查找的時間相對更長。
8.C。【解析】本題考查邏輯與(&&)和邏輯或(||)運算符的使用。x值在[1,10]之間,C語言中可以寫成x值在[100,11O]之間,C語言表達(dá)式應(yīng)寫成“(x>=100)&&(x> =110)”;[1,1O]和[100,110]滿足任意條件就可以,所以是邏輯或的關(guān)系,因此只要將前兩個表達(dá)式用邏輯或運算符連接起來即可,所以最后的表達(dá)式:(x>=1)&&(x<=10) &&(x<=110)。
9.C。【解析】在C語言中,標(biāo)識符是由字母、數(shù)字和下劃線組成,其中開頭必須是字母或下劃線,排除選項A和B。C語言中還規(guī)定標(biāo)識符不能為C語言的關(guān)鍵字,而選項D中的void為關(guān)鍵字。
10.D!窘馕觥恳驗樵谶壿嫳磉_(dá)式中,兩邊的賦值表達(dá)式都成立,即值為1,故選擇D選項。
11.C。【解析】選項A是先將a的值賦給變量b,再將變量b的值賦給變量c,不合題意;B選項中由于c的值不為0,在將c的值賦給變量a后,表達(dá)式a=c的值為1,不再對表達(dá)式b=c計算;對于c選項,表達(dá)式a=c的值為1,再求表達(dá)式b=c的值為1,然后進(jìn)行邏輯與運算;D選項將b的值賦給c后再賦給e,故選擇C選項。
12.D!窘馕觥勘绢}可以寫成:a+a+(a-(a*a)),所以*的優(yōu)先級最高,其次是-=的,+的優(yōu)先級最低,因此先求a-=a*a=9,表達(dá)式變?yōu)閍+a+-=9,a即a=a-9= -6,再次變?yōu)閍+(-6)=-12,故選擇D選項。
13.B!窘馕觥繑(shù)組1標(biāo)從0開始,A選項中所賦值的個數(shù)超過了數(shù)組的長度;C選項中定義a為字符型變量,而不是數(shù)組,賦值錯誤;D選項中,整型數(shù)組不能賦字符串。
14.C!窘馕觥勘绢}考查do-while循環(huán),先執(zhí)行d0輸出的x的值為1,接著執(zhí)行 while語句,此時--x的值為0,x也為0,而非0為1,循環(huán)成立,接著執(zhí)行do輸出X值為- 2,執(zhí)行--x后,表達(dá)式為-2,而!(--x)為0,退出循環(huán)。
15.C!窘馕觥慨(dāng)執(zhí)行fun函數(shù)時,因為參數(shù)傳遞時是地址傳遞,因此形參值的改變會影響實參中的數(shù),在執(zhí)行fun 函數(shù)時先輸出1 2,接著把*X賦3,*y賦4,此時帶回主函數(shù)中,輸出的值為3 4。
16.C!窘馕觥吭趍數(shù)組中賦值的是字符串,其長度為7,末尾有結(jié)束符’\0 ’,故字節(jié)數(shù)為8,而n數(shù)組中賦的是字符,其長度為7,故C選項正確。
17.B。【解析】本題考查if…else語句。if條件為真則執(zhí)行后面的表達(dá)式,如果if為假則執(zhí)行else語句。
18.A!窘馕觥++a與a++的區(qū)別是前者先自加再運算,后者是先運算后自加。
19.B。【解析】在while(E)中,表達(dá)式E可以是C語言中任意合法的條件表達(dá)式,但不能為空,由它來控制循環(huán)體是否執(zhí)行。在選項8中表達(dá)式E>0||E<0是一個邏輯表達(dá)式。
20.D。【解析】因為字符數(shù)組s[]中的數(shù)組名s表示的是一個地址常量。所以語句“s+=2;”不能將指針在當(dāng)前位置的基礎(chǔ)上再向后移動兩位。因而程序編譯時出錯。
21.B!窘馕觥克街票矸,’\t’表示的是橫向跳若干格;選項B中,’\039’錯誤,’\039 ’是八進(jìn)制形式表的字符,最大數(shù)為7,但其中出現(xiàn)’ 9’,’,’是字符逗號;選項D中,’\n ’表示的是換行。
22.B!窘馕觥康谝粋for循環(huán)的作用是讓p指向每行的首地址,第二個for循環(huán)的作用是把它指向的'字符串輸出,故選擇B選項。
23.D。【解析】當(dāng)k=1時,循環(huán)成立,輸出w[l]的數(shù)組即EFGH,接著執(zhí)行k++后k為2;當(dāng)k=2時,循環(huán)成立,輸出w[2]的數(shù)組即IJKL,接著執(zhí)行k++后,k為3;當(dāng)k= 3時,循環(huán)不成立,退出。
24.D。【解析】因為a是結(jié)構(gòu)體變量,最后一次輸入的值為結(jié)構(gòu)體中的值,即a中的任何一個值都為0。
25.B!窘馕觥吭诙x*p=&r時,是表示r的地址賦給了p所指的存儲單元,因此選項B正確。
26.B!窘馕觥(x&1)&&(z<’ 2 ’)=(0.5&1)&&(’a’ <’z’)=1&&1=1,故選擇B選項。
27.D。【解析】要想使程序輸出25,則j-40=25,j=65,而j初值是50,所以填入for循環(huán)的語句,使引用的數(shù)組元素累加65-50=15即可,D選項中,i下標(biāo)從0開始,i=2指向第3個數(shù)50+a[2]=50+10=60,繼續(xù)循環(huán)60+a[3]= 60+5=65,此時i=4跳出,循環(huán)結(jié)束。
28.B。【解析】二維數(shù)組的元素可以看成是按矩陣形式存放的,數(shù)組第一維的下標(biāo)是i,說明它前面還有i行,有i* m個元素,數(shù)組第二維的下標(biāo)是j,說明它前面還有j列,有j 個元素,所以共有i*m+j個元素。
29.D!窘馕觥縮tatic變量是局部度量,函數(shù)無法修改,所以當(dāng)i=1時,第2次進(jìn)入f函數(shù)時c=5,所以最終main( ) 函數(shù)中C的值為5。
30.A。【解析】本題主要考查結(jié)構(gòu)體數(shù)組的使用。x [i].num為結(jié)構(gòu)體x[i]中的hum成員,x[i].num[2]是結(jié)構(gòu)體x[i]中name成員的第3個元素。程序執(zhí)行循環(huán)過程時:第1次循環(huán),i=1,輸出x[i].num,x[1].name[2]的值;第2次循環(huán),i=2,輸出x[2].num,x[2].name[2]的值,即3N;第3 次循環(huán),i=3,輸出X[3].hum,x[3].name[2]的值,即4A;第4 次循環(huán),i=4,輸出x[4].num,x[4].name[2]的值,即5U。
31.A!窘馕觥勘绢}主要考查按位求反運算和C語言正負(fù)數(shù)的表示,“O”代表正數(shù),“1”代表負(fù)數(shù);x=7的二進(jìn)制為00111,第一個0代表正數(shù),~x為11000,第一個l代表負(fù)數(shù),值為8。
32.A。【解析】函數(shù)fun的作用是將指針a指向指針b 的內(nèi)容,然后將該內(nèi)容加1。執(zhí)行語句“fun(p1,p2);”后,pl 和p2指向的地址并未改變,只是將p2指向的存儲單元的值增加l。所以,答案是A。
33.A!窘馕觥亢瘮(shù)int fun(int n)的功能是求1+2+…+n的值并返回。所以執(zhí)行程序時,給變量x輸入10后,執(zhí)行語句“x=fun(x);”,X的值將變?yōu)?到10中10個整數(shù)的累加和,即55。
34.D!窘馕觥縜、b、C都是按值傳遞給函數(shù)f,函數(shù)f不能改變它們的值。所以,a、b、t的值仍然是4、3、5。
35.B!窘馕觥勘绢}考查switch,case語句,當(dāng)k=0時,循環(huán)體成立,執(zhí)行switch后表達(dá)式的值為’1’,執(zhí)行case’1 ’,i的值為0,因為沒有break語句,繼續(xù)執(zhí)行其后的語句,到最后一個語句時i的值為3,此時v[i] ++,v[3]=1,接著執(zhí)行k++ 后,k的值為1,當(dāng)k=1時,循環(huán)成立。執(zhí)行switch后的表達(dá)式的值為’2 ’,執(zhí)行case’2’,i的值為1,因為沒有break語句,繼續(xù)執(zhí)行其后的語句,到最后一小語句時,i的值為3,此時v[i] ++,v[3]=2,接著執(zhí)行k++后,k的值為2,依次下去,case
’4 ’也會執(zhí)行,最后i的值一定為3,到v[3]=8時循環(huán)結(jié)束,而v[0]~v[2]的值一直沒有變化,故選擇8選項。
36.C。【解析】x的值為寸進(jìn)制數(shù)102,而Y的值為八進(jìn)制數(shù)012,根據(jù)題意將y用十進(jìn)制表示為10%md,rn為指定輸出數(shù)據(jù)的寬度,若位數(shù)小于m則左端補(bǔ)以空格,若位數(shù)大于m則按實際輸出。所以答案是C。
37.B!窘馕觥縲hile語句執(zhí)行如下:
當(dāng)z=3,x=0時,表達(dá)式Z-->0 &&++x<5為真,z的值變?yōu)?,x的值變?yōu)?,執(zhí)行語句“y=y-1;”,y的值變?yōu)?;
當(dāng)z=2,x=1時,表達(dá)式z-->O&&++x<5為真,z的值變?yōu)?,x的值變?yōu)?,執(zhí)行語句“y=y-1;”,y的值變?yōu)?;
當(dāng)z=1,x=2時,表達(dá)式z-->0&&++x<5為真,z的值變?yōu)?,X的值變?yōu)?,執(zhí)行語句“y=y-1;”,y的值變?yōu)?;
當(dāng)z=0,x=3時,表達(dá)式z-->0為假,表達(dá)式(Z-->O&&++x<5)為假,z的值為-1,不進(jìn)行++x<5的判斷,不執(zhí)行語句y=y-1;;
所以x的值為3,y的值為2,z的值為-1。答案為B。
38.D。【解析]continue語句的作用是結(jié)束本次循環(huán),即跳過本次循環(huán)體中余下尚未執(zhí)行的語句,接著再一次進(jìn)行循環(huán)的條件判定。
39.B!窘馕觥繉τ诘趇行,程序先輸出4-i個空格,然后輸出2×i-1個"*",所以答案是B。
40.A!窘馕觥课恢弥羔槷(dāng)前值函數(shù)ftell( )的基本調(diào)用格式為ftell(fp)。
ftell函數(shù)的功能:得到fp所指向文件的當(dāng)前讀寫位置,即位置指針的當(dāng)前值,如果函數(shù)的返回值為-1L,表示出錯。
【C語言備考計算機(jī)二級之選擇題及答案】相關(guān)文章:
2017計算機(jī)二級C語言備考習(xí)題及答案08-02
計算機(jī)二級備考習(xí)題及答案(C語言)201708-20
計算機(jī)二級C語言備考習(xí)題及答案201710-09
2017最新計算機(jī)二級《C語言》選擇題及答案10-27
2016計算機(jī)二級《C語言》非選擇題練習(xí)及答案06-23