2009年3月全国计算机等级考试二级C笔试真题及参考答案

 

 

1 )下列叙述中正确的是

 

A 栈是先进先出(FIFO)的线性表

B 队列是先进先出(FIFO)的线性表

C 循环队列是非线性结构

D 有序线性表既可以采用顺序存储结构,也可以采用链式存储结构

2)支持子程序调用的数据结构是                           

A             B             C 队列       D)二叉树

3)某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是

 A10            B8              C6           D4

4)下列排序方法中,最坏情况下比较次数最少的是

 A)冒泡排序   B)简单选择排序   C)直接插入排序   D)堆排序

5)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是

 A)编译软件   B)操作系统  C)教务管理系统  D)汇编程序

6)下面叙述中错误的是

A)软件测试的目的是发现错误并改正错误

B)对被调试的程序进行“错误定位”是程序调试的必要步骤

C)程序调试通常也称为Debug

D)软件测试应严格执行测试计划,排除测试的随意性

7)耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是

 A)提高耦合性降低内聚性有利于提高模块的独立性

B)降低耦合性提高内聚性有利于提高模块的独立性

C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度

D)内聚性是指模块间互相连接的紧密程度

8)数据库应用系统中的核心问题是

A)数据库设计      B)数据库系统设计

C)数据库维护       D 数据库管理员培训

9)有两个关系RS如下:

R            S

A B C        A B

a 3 2         a 3

b 0 1         b 0

c 2 1         c 2

 由关系R通过运算得到关系S,则所使用的运算为

A 选择        B)投影        C 插入        D)连接

10)将E-R图转换为关系模式时,实体和联系都可以表示为

A 属性        B)键          C 关系         D

11)以下选项中合法的标识符是

 A 1-1        B11       C-11        D1--

12)若函数中有定义语句:int k;,则

 A)系统将自动给k赋初值0    B)这时k中值无定义

 C)系统将自动给k赋初值-1    D)这时k中无任何值

13)以下选项中,能用作数据常量的是

      Ao115   B 0118  C1.5e1.5    D 115L

14)设有定义:int x=2; ,以下表达式中,值不为6的是

A x*=x+1     B x++,2*x    Cx*=1+x    D2*x,x+=2

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

A123.141593   B12   3.141593   C123.141593    D123.141593

16)若有定义语句:double x,y,*px,*py,执行了px=&x, py=&y;之后,正确的输入语句是

    Ascanf(“%f%f,x,y;                   B scanf(“%f%f,&x,&y;

    C scanf(“%lf%le,px,py;               D scanf(“%lf%lf,x,y;

17)以下是if语句的基本形式:

if (表达式) 语句,其中表达式

A)必须是逻辑表达式                    B)必须是关系表达式

C)必须是逻辑表达式或关系表达式        D)可以是任意合法的表达式

18)有以下程序

#include

main()

{int x;

scanf(“%d,&x;

ifx<=3; else

ifx!=10  printf(“%d\n,x;

}

程序运行时,输入的值在哪个范围才会有输出结果

A)不等于10的整数         B)大于3且不等于10的整数

C 大于3或等于10的整数  D)小于3的整数

19)有以下程序

#include

Main()

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

ifa= =1 &&b++= =2

ifb!=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;

}

程序运行后的输出结果是

A1,2,3                 B1,3,2          C1,3,3              D3,2,1

20)以下程序中的变量已正确定义

fori=0;i<4;i++,i++

fork=1;k<3;k++;printf(“*”);

程序段的输出结果是

A********         B****         C**          D*

21)有以下程序

#include

main()

{char  *s=(“ABC;

do

{printf(“%d,*s%10;s++;

}while*s;

}

注意,字母AASCII码值为65。程序运行后的输出结果是

A5670             B656667            C567             DABC

22)设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是

An=0;while((ch=getchar())!=\n’)n++;   B n=0;whilegetchar()!=\n’)n++;

Cforn=0; getchar()!=\n;n++;           Dn=0;forch=getchar();ch!=\n;n++;

23)有以下程序

#include

main()

{ int a1,a2;char c1,c2;

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

printf(“%d,%c,%d,%c,&1,c1,a2,c2;

}

若想通过键盘输入,使得a1的值为12,a2的是为34c1的值为字符a,c2的值为字符b,程序输出结果是:12,a,34,b,则正确的输入格式是(以下  代表空格,代表回车)

A12a34b              B12   a    34   b

C12,a,34,b            D12    a34    b

24)有以下程序

#include

int fint x,int y

{return()y-x*x;}

main()

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

d=ffa,b,fa,c));

printf(“%d\n,d;

}

程序运行后的输出结果是

A10    B9     C8      D7

25)有以下程序

#include

void funchar  *s

{while*s

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

s++;

  }

}

main()

{ char  a[]={“good”};

 funa;printf(“\n”);

}

注意:字母aASCII码值为97,程序运行后的输出结果是

Ad      Bgo    Cgod   Dgood

26)有以下程序

#include

void fun int *a,int *b

{int *c;

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

}

main()

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

 funp,q;printf(“%d,%d,,*p,*q;

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

}

程序运行后的输出结果是

A3,5,5,3   B3,5,3,5   C5,3,3,5   D5,3,5,3

27)有以下程序

#include

void fint *p,int *q ;

main()

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

  fr,&n;printf(“%d,%d,m,n;

}

void fint *p,int *q

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

程序运行后输出的结果是

A1,3    B2,3   C1,4   D1,2

28)以下函数按每行8个输出数组中的数据

void fun int *w,int n

{ int i;

  fori=0;i

  {________

   printf(“%d,w;

   }

  printf(“\n”);

}

下划线处应填入的语句是

Aifi/8==0print(“\n”);    B ifi/8==0continue;

C ifi%8==0print(“\n”);   D ifi%8==0continue;

29)若有以下定义

      int x[10],*pt=x;

则对x数组元素的正确应用是

A*&x[10]    B*x+3    C*pt+10     Dpt+3  

30)设有定义:char s[81];int i=10;,以下不能将一行(不超过80个字符)带有空格的字符串真确读入的语句或语句组是

A getss   

Bwhile((s[i++]=getchar())!=\n;s=\0;

Cscanf(“%s,s;

Ddo{scanf(“%c,&s;}whiles[i++]!=\n”);s=\0;

31)有以下程序

#include

main()

{ char *a[ ]={“abcd”,”ef”,”gh”,”ijk”};int I;

    for i=0;i<4;i++  printf(“%c,*a;

}

程序运行后输出的结果是

Aaegi     Bdfhk    Cabcd    Dabcdefghijk

32)以下选项中正确的语句组是

Achar s[];s=BOOK!;       B char *s;s={BOOK!};

Cchar s[10];s=BOOK!;    D char *s;s=BOOK!;

33)有以下程序

#include

int fun{int x,int y}

{ ifx==y returnx;

  else return((x+y/2

}

main()

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

  printf(“%d\n,fun2*a,funb,c)))

}

程序运行后的输出结果是

A3    B6     C8      D12

34)设函数中有整型变量n,为保证其在未赋值的情况下初值为0,应选择的存储类别是

Aauto     B register     Cstatic     Dautoregister

35)有以下程序

#include

int b=2;

int funint *k

{ b=*k+b;returnb;}

main()

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

  fori=2;i<4;i++ {b=fun&a+b;printf(“%d,b;}

  printf(“\n”);

}

程序运行后输出的结果是

A10  12     B8   10     C10   28     D10   16

36)有以下程序

#include

#define PT 3.5;

#define Sx PT*x*x;

main()

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

程序运行后输出的结果是

A14.0     B31.5    C7.5   D)程序有错无输出结果

37)有以下程序

#include

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;

}

程序的运行结果是

A1,2     B2,3      C3,4    D4,1

38)设有宏定义:#include  IsDIVk,n ((k%n==1?1:0且变量m已正确定义并赋值,则宏调用:IsDIVm,5&& IsDIVm,7)为真时所要表达的是

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

B)判断m是否能被57整除

C)判断m5或者7整除是否余1

D)判断m57整除是否余1

39)有以下程序

#include

main()

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

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

  }

程序运行后的输出结果是

A21     B11     C6       D1

40)有以下程序

#include

main()

{ FILE *f;

  f=fopen(“filea.txt,w”);

  fprintff,abc”);

  fclosef;

}

若文本文件filea.txt中原有内容为:hello,则运行以上程序后,文件filea.txt中的内容为

A helloabc        Babclo       Cabc      Dabchello

 

二、填空题(每空2分,共30分)

    请将每一个空的正确答案写在答题卡【1】至【15】序号的横线上,答在试卷上不得分。

1)假设一个长度为50的数组(数组元素的下标从049)作为栈的存储空间,栈底指针bottom指向栈底元素,栈顶指针top指向栈顶元素,如果bottom=49top=30(数组下标),则栈中具有 1 个元素。

2)软件测试可分为白盒测试和黑盒测试。基本路径测试属于  2 测试。

3)符合结构化原则的三种基本控制结构是:选择结构、循环结构和  3

4)数据库系统的核心是  4

5)在E-R图中,图形包括矩形框、菱形框、椭圆框。其中表示实体联系的是  5 】框。

6)表达式(int)((double)(5/2+2.5)的值是【6

7)若变量xy已定义为int类型且x的值为99y的值为9,请将输出语句printf(【7】,x/y;补充完整,使其输出的计算结果形式为:x/y=11

(8)有以下程序

#include

main( )

{    char c1,c2;

     scanf(“&c”,&c1);

     while(c1<65||c1>90)       scanf(“&c”,&c1);

     c2=c1+32;

     printf(“&c, &c\n”,c1,c2);

}

程序运行输入65回车后,能否输出结果、结束运行(请回答能或不能)【8

 

9)以下程序运行后的输出结果是【9

#include

main( )

{int k=1s=0

do{

if{((k&2)!=0continue

s+=kk++

}whilek10);

printf(“s=&d/n,s;

}

 

(10)下列程序运行时,若输入labced12df<回车> 输出结果为【10

 #include

main( )

{char  a =0,ch;

while((ch=getchar())!=’\n’)

{if(a&2!=0&&(ch>’a’&&ch<=’z’)) ch=ch-‘a’+’A’;

a++;putchar(ch);

}

printf(“\n”);

}

(11)有以下程序,程序执行后,输出结果是【11

#include

void fun (int *a)

{a[0=a[1];]}

main()

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

for(i=2;i>=0;i--) fun{&a};

for(i=0;i<10;i++) printf(“&d”,a);

printf(“\n”);

}

(12)请将以下程序中的函数声明语句补充完整

#include

int12

main( )

{int x,y,(*p)();

p=max;

printf(“&d\n”,&x,&y);

}

Int max(int a,int b)

{return (a>b/a:b);}

(13)以下程序用来判断指定文件是否能正常打开,请填空

#include

main( )

{FILE *fp;

if (((fp=fopen(test.txt,r))==13))

printf(“未能打开文件!\n”);

else

printf(“文件打开成功!\n);

(14)下列程序的运行结果为【14

#include

#include

struct A

{int a;char b[10];double  c;};

void  f (struct  A   *t);

main()

{struct A a=(1001,”ZhangDa”,1098,0);

f(&a);printf(“&d,&s,&6,if\n”,a.a,a.b,a.c);

}

void f(struct  A  *t)

{strcpy(t->b,”ChangRong”);   }

(15)以下程序把三个NODETYPE型的变量链接成一个简单的链表,并在while循环中输出链表结点数据域中的数据,请填空

#include

struct node

{int data; struct node *next;};

typedef struct node NODETYPE;

main()

{NODETYPE a,b,c,*h,*p;

a. data=10;b.data=20;c.data=30;h=&a;

b. next=&b;b.next=&c;c.next=’\0’;

p=h;

while(p){printf(&d,p->data);15】;}

}

 

 

20094NCRE二级C参考答案

选择题:

1~10 DACDC    ABABC

11~20CBDDA    CDBCB

你可能感兴趣的:(计算机等级考试)