2008年9月全国计算机等级考试二级C笔试试卷

2008年9月全国计算机等级考试二级C笔试试卷

一、 选择题

1、一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后在依次出栈,则元素出栈的顺序是  B

A)12345ABCDE    B)EDCBA54321

C)ABCDE12345    D)54321EDCBA

2、下列叙述正确的是  D

A)循环队列有队头和队尾两个指针,因此,循环队列是非线形结构

B)在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况

C)在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况

D循环队列中元素的个数是由队头指针和队尾指针共同决定

3在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是 C

A)O(n)  B)O(n2)  C)O(log2n)  D)O(log2n)            

4、下列叙述中正确的是 A

A顺序结构存储的存储一定是连续的链式存储结构的存储空间不一定是连续的

B)顺序存储结构只针对线性结构,链式存储结构只针对非线性结构

C)顺序存储结构能存储有序表,链式存储结构不能存储有序表

D)链式存储结构比顺序存储结构节省存储空间

5、数据流图中带有箭头的线段表示的是 D

A) 控制流 B)事件驱动  C)模块调用   D)数据流

6、在软件开发中,需求分析阶段可以使用的工具是

A)N―S图 B)DFD  C)PAD图   D)程序流程图

7、在面向对象的方法中,不属于�对象�基本特点的是

A) 一致性  B)分类性 C)多态性   D)标识唯一性

8、一间宿舍可住多个学生,则实体宿舍和学生之间的联系是        B

A)一对一 B)一对多  C)多对一D)多对多

9、在数据管理技术发展的三个阶段中,数据共享最好的是

A)人工管理阶段   B)文件系统阶段

C)数据库系统阶段  D)三个阶段相同

10、有三个关系R、S和T如下:

      R                   S                  T

A B

m 1

n 2

B C

1 3

3 5

A B C

m 1 3



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

A)笛卡尔积 B)交    C)并D)自然连接

11、以下叙述中正确的是 C

A)C程序的基本组成单位是语句    B)C程序中的每一行只能写一条语句

C简单C语句必须以分号结束     D)C语句必须在一行内写完

12计算机能直接执行的程序是 D

A)源程序  B)目标程序   C)汇编程序   D)可执行程序

13、以下选项中不能作为C语言合法常量的是 A

A)′cd′ B) 0.1c+6   C)�\a�   D)′\011′

14、以下选项中正确的定义语句是C

A)double   a;b;   B) double   a=b=7    

C)doublea=7,b=7;   D)double,a,b;

15、以下不能正确表示代数式2ab/cd 的C语言表达式是  D

A)2*a*b/c/d      B)a*b/c/d*2    

C)a/c/d*b*2       D)2*a*b/c*d

16C源程序中不能表示的数制是         A

A二进制   B)八进制   C)十进制   D)十六进制

17若有表达式(w)?(-x):(++y),则其中与w等价的表达式是     D

A)w==1   B)w==0    C)w!=1    D)w!=0

18、执行以下程序段后,w的值为C

int   w=′A′,x=14,y=15;

     W=((x||y)&&(w<′a′));

A) -1     B) NULL C)1    D) 0

19、若变量已正确定义为int 型,要通过语句scanf(�%d,%d,%d�,&a,&b,&c);给a赋值1、给b赋值2、给c赋值3,以下输入形式中错误的是(u代表一个空格符) B

A)uuu1,2,3<回车>      B)1u2u3<回车>    

C)1,uuu2,uuu3<回车>  D)1,2,3<回车>

20、有以下程序段 B

int   a,b,c;

a=10;b=50;c=30;

if(a>b)a=b,b=c,c=a;

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

程序的输出结果是

A) a=10 b=50 c=10   B) a=10 b=50 c=30

C)a=10 b=30 c=10     D)a=50 b=30 c=50

21、若有以下定义语句:int m[]={5,4,3,2,1},i=4;,则下面对m数组元素的引用中错误的是   C

A)m[-i]    B)m[2*2]   C)m[m[0]]   D)m[m[i]]

22、下面的函数调用语句中func函数的实参个数是

func(f2(v1,v2),(v3,v4,v5),(v6,max(v7,v8)));

A)  3   B) 4    C)5       D) 8

23、若有定义语句:doublex[5]={1.0,2.0,3.0,4.0,5.0},*p=x;则错误引用x数组元素的是

A) *p     B) x[5]    C)*(p+1)   D) *x

24、若有定义语句:char s[10]=�1234567\0\0�;,则strlen(s)的值是

A) 7  B) 8    C)9     D) 10

25、以下叙述中错误的是

A)用户自定义的函数中可以没有return语句

B)用户自定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值

C)用户自定义的函数中若没有return语句,则应当定义函数为void类型

D)函数的return语句中可以没有表达式

26、以下关于宏的叙述中正确的是

A)宏名必须用大写字母表示

B)宏定义必须位于源程序中所有语句之前

C)宏替换没有数据类型限制

D)宏调用比函数调用耗费时间

27、有以下程序

#include    <stdio.h>

main()

{  int i,j;

  for (i=3;i>=1;i--)

    {for(j=1;j<=2;j++)  printf(�%d�,i+j);

      pintf(�\n�);

}

}

程序运行的结果是

A)      2 3 4           B) 4 3 2       C)23       D) 4 5

3 4 5             5 4 3         3 4          3 4    

                                4 5          2 3

28、有以下程序

#include   <stdio.h>

main()

{ int x=1,y=2,z=3;

if(x>y)

if(y>z) printf(�%d�,++z);

else    printf(�%d�,++y);

printf(�%d\n�,x++);

}

程序运行的结果是

A) 331     B)41      C)2    D)1

29、有以下程序

#include<stdio.h>

main()

{ int i=5;

do

{ if(i%3==1)

if(i%5==2)

{  printf(�%d�,i); break;}

i++;

}   while(i!=0);

printf(�\n�);

}程序运行的结果是

A) *7   B)*3*5      C)*5    D)*2*6

30、有以下程序

#include  <stdio.h>

int  fun(int   a,int    b)

{  if(b==0) return a;

else      return(fun(-a,-b));

}

main()

{printf(�%d\n�,fun(4,2));}

程序运行的结果是

A) 1     B) 2      C) 3       D)4

31、有以下程序

#include   <stdio.h>

#include   <stdio.h>

{   int *p;

p=(int*)malloc(sizeof(int));

*p=n;    return  *p;

}

main()

{  int  a;

a=fun(10);     printf(�%d\n�,a+fun(10));

}

程序运行的结果是

A)0       B) 10      C)20      D)出错

32、有以下程序

#include  (stdio.h)

void   fun(int a,  int b)

{  int  t;

t=a;   a=b;   b=t;

}

main()

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

for(i=0;i<10;i+=2)  fun(c[i],c[i+1]);

for(i=0;i<10;i++)   printf(�%d,�,c[i]);

printf(�\n�);

}程序运行的结果是

A)1,2,3,4,5,6,7,8,9,0         B)2,1,4,3,6,5,8,7,0,9

C)0,9,8,7,6,5,4,3,2,1          D)0,1,2,3,4,5,6,7,8,9

33、有以下程序

#include  <stdio.h>

struct  st

{int  x,y;} data[2]={1,10,2,20};

main()

{struct  st   *p=data;

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

}程序运行的结果是

A) 10,1        B)20,1     C)10,2      D)20,2

34、有以下程序

#include  <stdio.h>

void fun(int  a[],int n)

{  int  i,t;

for(i=1;i<n/2;i++)   {t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}

}

main()

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

fun(k,5);

for(i=2;i<8;i++)printf(�%d�,k[i]);

printf(�\n�);

}

程序运行的结果是

A) 345678    B)876543    C)1098765     D)321678

35、有以下程序

#include  <stdio.h>

#define   N   4

void   fun(int  a[][N],int   b[])

{  int  i;

for(i=0;i<N;i++)   b[i]=a[i][i];

}

main()

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

fun(x,y);

for(i=0;i<N;i++)   printf(�%d,�,y[i]);

printf(�\n�);

}程序运行的结果是

A)1,2,3,4,   B)1,0,7,0,    C)1,4,5,9,     D)3,4,8,10,

36、有以下程序

#include  <stdio.h>

int   fun(int  (*s)[4],int n,int k)

{   int m,i;

m=s[0][k];

for(i=1;i<n;i++)   if(s[i][k]>m)m=s[i][k];

return  m;

}

main()

{inta[4][4]={{1,2,3,4},{11,12,13,14},{21,22,23,24},{31,32,33,34}};

printf(�%d\n�,fun(a,4,0));

}程序运行的结果是

A) 4     B) 34      C) 31     D)32

37、有以下程序

#include  <stdio.h>

main()

{  struct STU{  char name[9]; char sex;  doublescore[2];};

struct STU  a={�Zhao�,′m′,85.0,90.0},b={�Qian�,′f′,95.0,92.0};

b=a;

printf(�%s,%c,%2.0f,%2.0f\n�,b.name,b.sex,b.score[0],b.score[1]);

}

程序运行的结果是

A)Qian,f,95,92     B)Qian,m,85,90    

C)Zhao,f,95,92     D)Zhao,m,85,90





38、假定已建立以下链表结构,且指针p和q已指向如图所示的结点:


则以下选项中可将q所指结点从链表中删除并释放该结点的语句组是

A)(*p).next=(*q).next;  free(p);    

B)p=q->next;  free(q);

C) p=q;free(q);                      

D)p->next=q->next;  free(q);

39、有以下程序

#include  <stdio.h>

main()

{char  a=4;

printf(�%d\n,a=a<<1�);

}

程序的运行结果是

A) 40     B) 16      C) 8     D) 4

40、有以下程序

#include   <stdio.h>

main()

{ FILE    *pf;

char *s1=�China�,*s2=�Beijing�;

pf=fopen(�abc.dat�,�wb+�);

fwrite(s2,7,1,pf);

rewind(pf);

fwrite(s1,5,1,pf);

fclose(pf);

}以下程序执行后abc.dat文件的内容是

A) China           B) Chinang    

C) ChinaBeijing    D)BeijingChina

二、填空题

1、对下列二叉树进行中序遍历的结果是(     ).



2、按照软件测试的一般步骤,集成测试应在()测试之后进行。

3、软件工程三要素包括方法、工具和过程,其中,()支持软件开发的各个环节的控制和管理。

4、数据库设计、()和物理设计。

5、在二维表中,元组的()不能再分成更小的数据项。

6、设变量a和b已正确定义并赋初值。请写出与a-=a+b等价的赋值表达式()。

7、若整型变量a和b中的值分别为7和9,要求按以下格式输出a和b的值:

a=7

b=9

请完成输出语句�printf(�___________________�,a,b);

8、以下程序的输出结果是()

#include  <stdio.h>

main()

{ int  i,j,sum;

for(i=3;i>=1;i--)

{  sum=0;

for(j=1;j<=i;j++)  sum+=i*j;

}

printf(�%d\n�,sum);

}

9、以下程序的输出结果是()

#include  <stdio.h>

main()

{ int  j,a[]={1,3,5,7,9,11,13,15},*p=a+5;

for(j=3;j;j--)

{ switch(j)

{  case 1:

case  2: printf(�%d�,*p++);  break;

case  3: printf(�%d�,*(--p));

}

}

}

10、以下程序的输出结果是()

#include  <stdio.h>

#define  N   5

int  fun(int *s,int a,int n)

{ int j;

*s=a;j=n;

while(a!=s[j])j--;

return  j;

}

main()

{  int s[N+1]; int k;

for(k=1;k<=N;k++)  s[k]=k+1;

printf(�%d\n�,fun(s,4,N));

}

(11)以下程序的输出结果是 _________。

#include<stdio.h>

int  fun(int x)

{ static int t=0;

  return(t+=x);

}

main()

{ int  s,i;

 for(i=1;i<=5;i++)   s=fun(i);

 printf(〃%d\n〃,s);

}

(12)以下程序按下面指定的数据给x数组的下三角置数,并按如下形式输出,请填空。

4

3           7

2   6   9

1   5  8   10

#include<stdio.h>

main()

{  int x[4][4],n=0,i,j;

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

     for(i=3;i>=j; ___________)

 {n++;x[i][j]= ____________;}

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

  { for(j=0;j<=i;j++)   printf(〃%3d〃,x[i][j]);

     print(〃\n〃);

}

}

(13)以下程序的功能是:通过函数func输入字符并统计字符的个数。输入时用字符@作为输入结束标志。请填空。

#include<stdio.h>

long  _______________;   /* 函数说明语句 */

main()

{  long n;

  n=func();  printf(〃n=%ld\n〃,n);

}

long  func()

{  long m;

  for(m=0;getchar()!=′@′;___________________);

  return m;

}



参考答案

一、选择题

1-5   :B D C A D

6-10:    B A B C D

11-15:  C D A C D

16-20:  A D C B A

21-25:  C A B A B

26-30:  C D D A B

31-35:  C A C D B

36-40:  C D D C B

二、填空题(按空填)

1、DBXEAYFZC

2、单元

3、过程

4、逻辑设计

5、分量

6、a=-b

7、a=%d\nb=%d\n

8、1

9、9

    9

    11

10、3

11、15

12、i--

13、n

14、func()

15、m++

本文来自阿里考题网--,原文地址:http://www.alikaoti.cn


你可能感兴趣的:(C语言)