計算機二級C語言選擇題及答案2016
1.常采用的兩種存儲結構是( )。
A.順序存儲結構和鏈式存儲結構
B.散列方法和索引方式
C.鏈表存儲結構和數組
D.線性存儲結構和非線性存儲結構
2.結構化程序設計主要強調的是( )。
A.程序的規模
B.程序的效率
C.程序設計語言的先進性
D.程序的易讀性
3.在面向對象方法中,( )描述的是具有相似屬性與操作的一組對象。
A.屬性
B.事件
C.方法
D.類
4.有下列二叉樹.對此二叉樹前序遍歷的結果為( )。
A.ACFXDBEYZ
B.ABEFXYZCD
C.ABCDEFXY7
D.ABDYECFXZ
5.C語青的基本單位是( )。
A.函數
B.過程
C.子程序
D.子函數
6.算法分析的目的是( )。
A.找出數據結構的合理性
B.找出算法中輸入和輸出之間的關系
C.分析算法的易懂性和可靠性
D.分析算法的效率以求改進
7.用鏈表表示線性表的優點是( )。
A.便于隨機存取
B.花費的存儲空間較順序存儲少
C.便于捅入和刪除操作
D.數據元素的物理順序與邏輯順序相同
8.能正確表示“當x的取值在[1,10]和[100,110]范圍內為真,否則為假”的表達式是( )。
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組用戶標識符,其中合法的一組是( )。
A.FOr
-sub
Case
B.4d
DO
Size
C.f2_G3
IF
abc
D.WORD
void
define
10.語句:“printf("%d",(a=)&&(b=-2));”的輸出結果是( )。
A.無輸出
B.結果是不確定
C.-1
D.1
11.當c的值不為0時,在下列選項中不能正確將c的值賦給變量a、b的是( )。
A.c=b=a;
B.(a=c)||(b=c);
C.(a=c)&&(b=c);
D.a=c=b;
12.以下程序的輸出結果是( )。
main( )
{ int a=3:
printf("%d\n",(a+a-=a*a));
}
A.-6
B.12
C.0
D.-12
13.以下能正確定義一維數組的選項是( )。
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));
其輸出結果是( )。
A.1
B.3 0
C.1 -2
D.死循環
15.下列程序的輸出結果是( )。
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.對兩個數組a和b進行下列初始化:
char m[]1="l234567":
char n[]={’1’,’2 ’,’3’,’4 ’,’5’,’6’,’7’);
則下列敘述正確的是( )。
A.數組m與數組n完全相同
B.數組m與數組n長度相同
C.數組m比數組n長1
D.數組m與數組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++):
)
程序運行后的輸出結果是( )。
A.b,b
B.b,c
C.a,b
D.a,c
19.在下列給出的表達式中,與while(E)中的(E)不等價的表達式是( )。
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]);
}
執行后的結果是( )。
A.輸出字符a的ASCII碼
B.輸出字符c的ASCII碼
C.輸出字符c
D.程序出錯
21.下列選項中非法的字符常量是( )。
A.’\t’
B.’\039’
C.’,’
D.’\n ’
22.以下程序的輸出結果是( )。
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.以下程序的輸出結果是( )。
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.以下程序的輸出結果是( )。
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.以下程序的輸出結果是( )。
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.若二維數組a有m列,則在a[i][j]前的元素個數為( )。
A.i*m+j-1
B.i*m+j
C.J*m+i
D.i*m+j+1
29.下列程序的輸出結果是( )。
#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.定義結構體數組:
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]);
以上程序段的輸出結果為( )。
A.2A3N4A5U
B.112A3H4I
C.1A2N3A4U
D.2H3A4H5I
31.設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);
}
程序運行后的輸出結果是( )。
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):
}
執行程序時,給變量X輸入10,程序的輸出結果是( )。
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);
}
執行后輸出結果是( )。
A.3,4,5
B.5,3,4
C.5,4,3
D.4,3,5
35.以下程序的輸出結果是( )。
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);
}
執行后輸出結果是( )。
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);
}
程序執行后的輸出結果是( )。
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);
}
程序執行后輸出結果是( )。
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");
}
}
在下劃線處應填入的是( )。
A.i
B.2*i一1
C.n=2*i+1
D.i+2
40.函數ftell(fp)的作用是( )。
A.得到fp所指向文件的當前讀寫位置
B.初始化流式文件的位置指針
c.移動流式文件的位置指針
D.以上答案均正確
【參考答案及解析】
1.A。【解析】線性表的存儲通常要用兩種存儲結構:順序存儲結構和鏈式存儲結構。
2.D。【解析】程序不光是編寫完就結束了,為了測試和維護程序,往往還有其他人閱讀和跟蹤程序,因此程序設計的風格應該強調簡單和清晰,即程序的易讀性,“清晰第一,效率第二”。
3.D。【解析】類(class)描述的是具有相似屬性與操作的一組對象,具體對象是類的實例。
4.D。【解析】所謂二叉樹的前序遍歷是指先訪問根結點,訪問左子樹,最后訪問右子樹,本題中序為DYBEAFCZX,后序為YDEBFZXCA。
5.A。【解析】C語言是函數式的語言。它的基本組成單位是函數,在c語言中任何程序都是由一個或者多個函數組成的。
6.D。【解析】算法分析是指對一個算法的運行時間和占用空間做定量的分析,計算相應的數量級,并用時間復雜度和空間復雜度表示。分析算法的目的就是要降低算法的時間復雜度和空間復雜度,提高算法的執行效率。
7.C。【解析】數據的存儲結構有順序存儲結構和鏈式存儲結構兩種。不同存儲結構的數據處理效率不同。由于鏈表采用鏈式存儲結構,元素的物理順序并不連續,對于插入和刪除無需移動元素,很方便,當查找元素時就需要逐.個元素查找,因此查找的時間相對更長。
8.C。【解析】本題考查邏輯與(&&)和邏輯或(||)運算符的使用。x值在[1,10]之間,C語言中可以寫成x值在[100,11O]之間,C語言表達式應寫成“(x>=100)&&(x> =110)”;[1,1O]和[100,110]滿足任意條件就可以,所以是邏輯或的關系,因此只要將前兩個表達式用邏輯或運算符連接起來即可,所以最后的表達式:(x>=1)&&(x<=10) &&(x<=110)。
9.C。【解析】在C語言中,標識符是由字母、數字和下劃線組成,其中開頭必須是字母或下劃線,排除選項A和B。C語言中還規定標識符不能為C語言的關鍵字,而選項D中的void為關鍵字。
10.D。【解析】因為在邏輯表達式中,兩邊的賦值表達式都成立,即值為1,故選擇D選項。
11.C。【解析】選項A是先將a的值賦給變量b,再將變量b的值賦給變量c,不合題意;B選項中由于c的值不為0,在將c的值賦給變量a后,表達式a=c的值為1,不再對表達式b=c計算;對于c選項,表達式a=c的值為1,再求表達式b=c的值為1,然后進行邏輯與運算;D選項將b的值賦給c后再賦給e,故選擇C選項。
12.D。【解析】本題可以寫成:a+a+(a-(a*a)),所以*的優先級最高,其次是-=的,+的優先級最低,因此先求a-=a*a=9,表達式變為a+a+-=9,a即a=a-9= -6,再次變為a+(-6)=-12,故選擇D選項。
13.B。【解析】數組1標從0開始,A選項中所賦值的個數超過了數組的長度;C選項中定義a為字符型變量,而不是數組,賦值錯誤;D選項中,整型數組不能賦字符串。
14.C。【解析】本題考查do-while循環,先執行d0輸出的x的值為1,接著執行 while語句,此時--x的值為0,x也為0,而非0為1,循環成立,接著執行do輸出X值為- 2,執行--x后,表達式為-2,而!(--x)為0,退出循環。
15.C。【解析】當執行fun函數時,因為參數傳遞時是地址傳遞,因此形參值的改變會影響實參中的數,在執行fun 函數時先輸出1 2,接著把*X賦3,*y賦4,此時帶回主函數中,輸出的值為3 4。
16.C。【解析】在m數組中賦值的是字符串,其長度為7,末尾有結束符’\0 ’,故字節數為8,而n數組中賦的是字符,其長度為7,故C選項正確。
17.B。【解析】本題考查if…else語句。if條件為真則執行后面的表達式,如果if為假則執行else語句。
18.A。【解析】++a與a++的區別是前者先自加再運算,后者是先運算后自加。
19.B。【解析】在while(E)中,表達式E可以是C語言中任意合法的條件表達式,但不能為空,由它來控制循環體是否執行。在選項8中表達式E>0||E<0是一個邏輯表達式。
20.D。【解析】因為字符數組s[]中的數組名s表示的是一個地址常量。所以語句“s+=2;”不能將指針在當前位置的基礎上再向后移動兩位。因而程序編譯時出錯。
【計算機二級C語言選擇題及答案】相關文章:
計算機二級《C語言》選擇題題庫及答案11-16
計算機二級《C語言》選擇題題庫與答案07-27
2017計算機二級C語言選擇題及答案01-27
2016計算機二級C語言選擇題及答案02-07
計算機二級《C語言》選擇題訓練題及答案04-27
計算機二級考試C語言試題與答案(選擇題)07-06
2017計算機二級C語言選擇題訓練及答案02-24