古詩詞大全網 - 成語故事 - 2009年上半年全國計算機等級考試二級C語言筆試試題及答案

2009年上半年全國計算機等級考試二級C語言筆試試題及答案

壹、選擇題(每題2分,***計70分)

1.(1)下列敘述中正確的是

A)棧是先進先出的線性表

B)隊列是"先進後出"的線性表

C)循環隊列是非線性結構

D)有序線性表即可以采用順序存儲結構,也可以采用鏈式存儲結構

2.

(2)支持子程序調用的數據結構是

A)棧

B)樹

C)隊列

D)二叉樹

3.

(3)某二叉樹有5個讀為2的結點,則該二叉樹中的葉子結點數是

A)10

B)8

C)6

D)4

4.

(4)下列排序方法中,最壞情況下比較次數最少的是

A)冒泡排序

B)簡單選擇排序

C)直接插入排序

D)堆排序

(5)軟件按功能可以分為:應用軟件、系統軟件和支撐軟件(或工具軟件)。下列

屬於應用軟件的是

A)編譯程序

B)操作系統

C)教務管理系統

D)匯編程序

6.

(6)下面敘述中錯誤的是

A)軟件測試的目的是發現錯誤並改正錯誤

B)對被調試程序進行"錯誤定位"是程序調試的必要步驟

C)程序調試也成為Debug

D)軟件測試應嚴格執行測試計劃,排除測試的隨意性

7.

(7)耦合性和內聚性是對模塊獨立性度量的兩個標準。下列敘述中正確的是

A)提高耦合性降低內聚性有利於提高模塊的獨立性

B)降低耦合性提高內聚性有利於提高模塊的獨立性

C)耦合性是指壹個模塊內部各個元素間彼此結合的緊密程度

D)內聚性是指模塊間互相連接的緊密程度

8.

(8)數據庫應用系統中的核心問題是

A)數據庫設計

B)數據庫系統設計

C)數據庫維護

D)數據庫管理員培訓

9.

(9)有兩個關系R,S如下:

由關系R通過運算得到關系S,則所使用的運算為

A)選擇

B)投影

C)插入

D)連接

10.

(10)將E-R圖轉換為關系模式時,實體和聯系都可以表示為

A)屬性

B)鍵

C)關系

D)域

11.(11)壹下選項中合法的標識符是

A)1_1

B)1-1

C)_11

D)1_ _

12.

(12)若函數中有定義語句:int k;,則

A)系統將自動給k賦初值0

B)這是k中的值無定義

C)系統將自動給k賦初值-1

D)這時k中無任何值

13.

(13)壹下選項中,能用作數據常量的是

A)o115

B)0118

C)1.5e1.5

D)115L

14.

(14)設有定義:int x=2;,壹下表達式中,值不為6的是

A)x*=x+1

B)X++,2*x

C)x*=(1+x)

D)2*x,x+=2

15.

(15)程序段:int x=12; double y=3.141593;printf("%d%8.6f",x,y);的輸出結果是

A)123.141593

B)12 3.141593

C)12,3.141593

D)123.1415930

16.

(16)若有定義語句:double x,y,*px,*py;執行了px=&x;py=&y;之後,正確的輸入語句是

A)scanf("%f%f",x,y);

B)scanf("%f%f" &x,&y);

C)scanf("%lf%le",px,py);

D)scanf("%lf%lf",x,y);

17.

(17)壹下是if語句的基本形式:

if(表達式) 語句

其中"表達式"

A)必須是邏輯表達式

B)必須是關系表達式

C)必須是邏輯表達式或關系表達式

D)可以是任意合法的表達式

18.

(18)有以下程序

#include <stdio.h>

main()

{ int x;

scanf("%d",&x);

if(x<=3) ; else

if(x!=10) printf("%d\n",x);

}

程序運行時,輸入的值在哪個範圍才會有輸出結果

A)不等於10的整數

B)大於3且不等於10的整數

C)大於3或等於10的整數

D)小於3的整數

19.

(19)有以下程序

#include <stdio.h>

main()

{ int a=1,b=2,c=3,d=0;

if (a==1 && b++==2)

if (b!=2||c--!=3)

printf("%d,%d,%d\n",a,b,c);

else printf("%d,%d,%d\n",a,b,c);

else printf("%d,%d,%d\n",a,b,c);

}

程序運行後輸出結果是

A)1,2,3

B)1,3,2

C)1,3,3

D)3,2,1

20.

(20)壹下程序段中的變量已正確定義

for(i=0;i<4;i++,j++)

for(k=1;k<3;k++); printf("*");

程序段的輸出結果是

A)********

B)****

C)**

D)*

21.(21)有以下程序

#include <stdio.h>

main()

{ char *s={"ABC"};

do

{ printf("%d",*s%10);s++;

}

while (*s);

}

註意:字母A的ASCII碼值為65。程序運行後的輸出結果是

A)5670

B)656667

C)567

D)ABC

22.

(22)設變量已正確定義,以下不能統計出壹行中輸入字符個數(不包含回車符)的程序段是

A)n=0;while((ch=getchar())!=~\n~)n++;

B)n=0;while(getchar()!=~\n~)n++;

C)for(n=0;getchar()!=~\n~;n++);

D)n=0;for(ch=getchar();ch!=~\n~;n++);

23.

(23)有以下程序

#include <stdio.h>

main()

{ int a1,a2; char c1,c2;

scanf("%d%c%d%c",&a1,&c1,&a2,&c2);

printf("%d,%c,%d,%c",a1,c1,a2,c2);

}

若通過鍵盤輸入,使得a1的值為12,a2的值為34,c1的值為字符a,c2的值為字符b,

程序輸出結果是:12,a,34,b 則正確的輸入格式是(以下_代表空格,<CR>代表回車)

A)12a34b<CR>

B)12_a_34_b<CR>

C)12,a,34,b<CR>

D)12_a34_b<CR>

24.

(24)有以下程序

#include <stdio.h>

int f(int x,int y)

{ return ((y-x)*x);}

main()

{ int a=3,b=4,c=5,d;

d=f(f(a,b),f(a,c));

printf("%d\n",d);

}

程序運行後的輸出結果是

A)10

B)9

C)8

D)7

25.

(25)有以下程序

#include <stdio.h>

void fun(char *s)

{ while(*s)

{ if (*s%2==0) printf("%c",*s);

s++;

}

}

main()

{ char a[]={"good"};

fun(a); printf("\n");

}

註意:字母a的ASCII碼值為97,程序運行後的輸出結果是

A)d

B)go

C)god

D)good

26.

(26)有以下程序

#include <stdio.h>

void fun(int *a,int *b)

{ int *c;

c=a;a=b;b=c;

}

main()

{ int x=3,y=5,*p=&x,*q=&y;

fun(p,q); printf("%d,%d,",*p,*q);

fun(&x,&y);printf("%d,%d\n",*p,*q);

}

程序運行後輸出的結果是

A)3,5,5,3

B)3,5,3,5

C)5,3,3,5

D)5,3,5,3

27.

(27)有以下程序

#include <stdio.h>

void f(int *p,int *q);

main()

{ int m=1,n=2,*r=&m;

f(r,&n); printf("%d,%d",m,n);

}

void f(int *p,int *q)

{p=p+1;*q=*q+1;}

程序運行後的輸出結果是

A)1,3

B)2,3

C)1,4

D)1,2

28.

(28)以下函數按每行8個輸出數組中的數據

#include <stdio.h>

void fun(int *w,int n)

{ int i;

for(i=0;i<n;i++)

{ ____________

printf("%d ",w[i]);

}

printf("\n");

}

下劃線出應填入的語句是

A)if(i/8==0) printf("\n");

B)if(i/8==0) continue;

C)if(i%8==0) printf("\n");

D)if(i%8==0) continue;

29.

(29)若有以下定義

int x[10],*pt=x;

則對數組元素的正確引用是

A)*&x[10]

B)*(x+3)

C)*(pt+10)

D)pt+3

30.

(30)設有定義:char s[81];int i=0;,以下不能將壹行(不超過80個字符)帶有空格

的字符串正確讀入的語句或語句組是

A)gets(s);

B)while((s[i++]=getchar())!=~\n~);s[i]=~\0~;

C)scanf("%s",s);

D)do{scanf("%c",&s[i]);}while(s[i++]!=~\n~);s[i]=~\0~;

31.

(31)有以下程序

#include <stdio.h>

main()

{ char *a[]={"abcd","ef","gh","ijk"};int i;

for(i=0;i<4;i++) printf("%c",*a[i]);

}

程序運行後的輸出結果是

A)aegi

B)dfhk

C)dfhk

D)abcdefghijk

32.

(32)以下選項中正確的語句組是

A)char s[];s="BOOK!";

B)char *s;s={"BOOK!"};

C)char s[10];s="BOOK!";

D)char *s;s="BOOK!";

33.

(33)有以下程序

#include <stdio.h>

int fun(int x,int y)

{ if(x==y) return (x);

else return((x+y)/2);

}

main()

{ int a=4,b=5,c=6;

printf("%d\n",fun(2*a,fun(b,c)));

}

程序運行後的輸出結果是

A)3

B)6

C)8

D)12

34.

(34)設函數中有整型變量n,為保證其在未賦初值的情況下初值為0,應該選擇的存儲類別是

A)auto

B)register

C)static

D)auto 或register

35.

(35)有以下程序

#include <stdio.h>

int b=2;

int fun(int *k)

{ b=*k+b;return (b);}

main()

{ int a[10]={1,2,3,4,5,6,7,8},i;

for(i=2;i<4;i++) {b=fun(&a[i])+b; printf("%d ",b);}

printf("\n");

}

程序運行後的輸出結果是

A)10 12

B)8 10

C)10 28

D)10 16

36.

(36)有以下程序

#include <stdio.h>

#define PT 3.5 ;

#define S(x) PT*x*x ;

main()

{ int a=1,b=2 ; printf("%4.1f\n",S(a+b));}

程序運行後的輸出結果是

A)14.0

B)31.5

C)7.5

D)程序有錯無輸出結果

37.

(37) 有以下程序

#include <stdio.h>

struct ord

{ int x,y; } dt[2]={1,2,3,4};

main()

{ struct ord *p=dt;

printf("%d,",++p->x); printf("%d\n",++p->y);

}

程序的運行結果是

A)1,2

B)2,3

C)3,4

D)4,1

38.

(38)設有宏定義:#define IsDIV(k,n) ((k%n==1)?1:0)且變量m已正確定義並賦值,

則宏調用:IsDIV(m,5)&&IsDIV(m,7)為真時所要表達的是

A)判斷m是否能被5或者7整除

B)判斷m是否能被5和7整除

C)判斷m被5或者7整除是否余1

D)判斷m被5和7整除是否都余1

39.

(39)有以下程序

#include <stdio.h>

main()

{ int a=5,b=1,t;

t=(a<<2)|b; printf("%d\n",t);

}

程序運行後的輸出結果是

A)21

B)11

C)6

D)1

40.

(40)有以下程序

#include <stdio.h>

main()

{ FILE *f;

f=fopen("filea.txt","w");

fprintf(f,"abc");

fclose(f);

}

若文本文件filea.txt中原有內容為:hello,則運行以上程序後,文件filea.txt的內容為

A)helloabc

B)abclo

C)abc

D)abchello

2009年3月二級C語言程序設答案

選擇題:

1-10: DACDC ABABC

11-20:CBDDA CDBCB

21-30:CDABA BACBC

31-40:ADBCC CBDAC

填空題:

(1)19

(2)白盒

(3)順序結構

(4)數據庫管理系統(DBMS)

(5)菱形

(6)4

(7)"x/y=%d"

(8)能

(9)s=0

(10)1AbCeDf2dF

(11)7777654321

(12)max(int a,int b)

(13)NULL

(14)1001,ChangRong,1098.0

(15)p=p—>next