计算机等级考试二级C语言考前模拟密卷及答5.docx

上传人:b****6 文档编号:6681244 上传时间:2023-01-08 格式:DOCX 页数:19 大小:23.35KB
下载 相关 举报
计算机等级考试二级C语言考前模拟密卷及答5.docx_第1页
第1页 / 共19页
计算机等级考试二级C语言考前模拟密卷及答5.docx_第2页
第2页 / 共19页
计算机等级考试二级C语言考前模拟密卷及答5.docx_第3页
第3页 / 共19页
计算机等级考试二级C语言考前模拟密卷及答5.docx_第4页
第4页 / 共19页
计算机等级考试二级C语言考前模拟密卷及答5.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

计算机等级考试二级C语言考前模拟密卷及答5.docx

《计算机等级考试二级C语言考前模拟密卷及答5.docx》由会员分享,可在线阅读,更多相关《计算机等级考试二级C语言考前模拟密卷及答5.docx(19页珍藏版)》请在冰豆网上搜索。

计算机等级考试二级C语言考前模拟密卷及答5.docx

计算机等级考试二级C语言考前模拟密卷及答5

2007计算机等级考试二级C语言考前模拟密卷及答案(5)

一、选择题

(1)假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为

  A)log2n

  B)n2

  C)O(n1.5)

  D)n(n-1)/2

(2)算法分析的目的是

  A)找出数据结构的合理性

  B)找出算法中输入和输出之间的关系

  C)分析算法的易懂性和可靠性

  D)分析算法的效率以求改进

(3)线性表L=(a1,a2,a3,…ai,…an),下列说法正确的是

  A)每个元素都有一个直接前件和直接后件

  B)线性表中至少要有一个元素

  C)表中诸元素的排列顺序必须是由小到大或由大到小

  D)除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件

(4)在单链表中,增加头结点的目的是

  A)方便运算的实现

  B)使单链表至少有一个结点

  C)标识表结点中首结点的位置

  D)说明单链表是线性表的链式存储实现

(5)软件工程的出现是由于

  A)程序设计方法学的影响

  B)软件产业化的需要

  C)软件危机的出现

  D)计算机的发展

(6)软件开发离不开系统环境资源的支持,其中必要的测试数据属于

  A)硬件资源

  B)通信资源

  C)支持软件

  D)辅助资源

(7)在数据流图(DFD)中,带有名字的箭头表示

  A)模块之间的调用关系

  B)程序的组成成分

  C)控制程序的执行顺序

  D)数据的流向

(8)分布式数据库系统不具有的特点是

  A)数据分布性和逻辑整体性

  B)位置透明性和复制透明性

  C)分布性

  D)数据冗余

(9)关系表中的每一横行称为一个

  A)元组

  B)字段

  C)属性

  D)码

(10)下列数据模型中,具有坚实理论基础的是

  A)层次模型

  B)网状模型

  C)关系模型

  D)以上3个都是

(11)以下叙述不正确的是

  A)一个C源程序可由一个或多个函数组成

  B)一个C源程序必须包含一个main函数

  C)C程序的基本组成单位是函数

  D)在C程序中,注释说明只能位于一条语句的后面

(12)在C语言中,int,char和short三种类型数据在内存中所占用的字节数

  A)由用户自己定义

  B)均为2个字节

  C)是任意的

  D)由所用机器的机器字长决定

(13)以下叙述正确的是

  A)在C程序中,每行中只能写一条语句

  B)若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数

  C)在C程序中,无论是整数还是实数,都能被准确无误地表示

  D)在C程序中,%是只能用于整数运算的运算符

(14)C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符

  A)必须为字母

  B)必须为下划线

  C)必须为字母或下划线

  D)可以是字母,数字和下划线中任一字符

(15)已知各变量的类型说明如下:

  intk,a,b;

  unsignedlongw=5;

  doublex=1.42;

  则以下不符合C语言语法的表达式是

  A)x%(-3)

  B)w+=-2

  C)k=(a=2,b=3,a+b)

  D)a+=a-=(b=4)*(a=3)

(16)x,y,z被定义为int型变量,若从键盘给x,y,z输入数据,正确的输入语句是

  A)INPUTx、y、z;

  B)scanf("%d%d%d",&x,&y,&z);

  C)scanf("%d%d%d",x,y,z);

  D)read("%d%d%d",&x,&y,&z);

(17)设x、y均为整型变量,且x=10y=3,则以下语句的输出结果是

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

  A)10,3

  B)9,3

  C)9,2

  D)10,2

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

  main()

  {inta=4,b=5,c=0,d;

  d=!

a&&!

b||!

c;

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

  A)1

  B)0

  C)非0的数

  D)-1

(19)执行下列程序时输入:

123<空格>456<空格>789<回车>输出结果是

  main()

  {chars[100];intc,i;

  scanf("%c",&c);scanf("%d",&i);scanf("%s",s);

  printf("%c,%d,%s\n",c,i,s);}

  A)123,456,789

  B)1,456,789

  C)1,23,456,789

  D)1,23,456

(20)下面有关for循环的正确描述是

  A)for循环只能用于循环次数已经确定的情况

  B)for循环是先执行循环体语句,后判断表达式

  C)在for循环中,不能用break语句跳出循环体

  D)for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来

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

  main()

  {inti,j,x=0;

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

  {x++;

  for(j=0;j<3;j++)

  {if(j%2)continue;

  x++;

  }

  x++;

  }

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

  }

  A)x=4

  B)x=8

  C)x=6

  D)x=12

(22)设有以下程序段

  intx=0,s=0;

  while(!

x!

=0)s+=++x;

  printf("%d",s);

  则

  A)运行程序段后输出0

  B)运行程序段后输出1

  C)程序段中的控制表达式是非法的

  D)程序段执行无限次

(23)对下Ⅰ,Ⅱ两个语句描述正确的是

  Ⅰ.while

(1)Ⅱ.for(;;)

  A)都是无限循环

  B)Ⅰ是无限循环,Ⅱ错误

  C)Ⅰ循环一次,Ⅱ错误

  D)以上答案都错

(24)若有以下定义,则能使值为3的表达式是

  intk=7,x=12;

  A)x%=(k%=5)

  B)x%=(k-k%5)

  C)x%=k-k%5

  D)(x%=k)-(k%=5)

(25)设有:

  inta=1,b=2,c=3,d=4,m=2,n=2;

  执行(m=a>b)&&(n=c>d)后n的值是

  A)1

  B)2

  C)3

  D)4

(26)以下描述中正确的是

  A)由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句

  B)do-while循环由do开始,用while结束,在while(表达式)后面不能写分号

  C)在do-while循环体中,是先执行一次循环,再进行判断

  D)do-while循环中,根据情况可以省略while

(27)以下函数返回a所指数组中最小的值所在的下标值

  fun(int*a,intn)

  {inti,j=0,p;

  p=j;

  for(i=j;i  if(a[i]  return(p);}

  在下划线处应填入的是

  A)i=p

  B)a[p]=a[i]

  C)p=j

  D)p=I

(28)以下叙述正确的是

  A)函数可以嵌套定义但不能嵌套调用

  B)函数既可以嵌套调用也可以嵌套定义

  C)函数既不可以嵌套定义也不可以嵌套调用

  D)函数可以嵌套调用但不可以嵌套定义

(29)若有说明语句

  chara[]="Itismine";

  char*p="Itismine";

  则以下不正确的叙述是

  A)a+1表示的是字符t的地址

  B)p指向另外的字符串时,字符串的长度不受限制

  C)p变量中存放的地址值可以改变

  D)a中只能存放10个字符

(30)以下程序的运行结果是

  sub(intx,inty,int*z)

  {*z=y-x;}

  main()

  {inta,b,c;

  sub(10,5,&a);

  sub(7,a,&b);

  sub(a,b,&c);

  printf("M,M,M\n",a,b,c);}

  A)5,2,3

  B)-5,-12,-7

  C)-5,-12,-17

  D)5,-2,-7

(31)若二维数组a有m列,则计算任一元素a[i][j]在数组中相对位置的公式为(假设a[0][0]位于数组的第一个位置上)

  A)i*m+j

  B)j*m+i

  C)i*m+j-1

  D)i*m+j+1

(32)下列说法正确的是

  inti,x;

  for(i=0,x=0;i<=9&&x!

=876;i++)scanf("%d",x);

  A)最多的执行10次

  B)最多执行9次

  C)是无限循环

  D)循环体一次也不执行

(33)若有下面的程序片段:

  int[12]={0},*p[3],**pp,i;

  for(i=0;i<3;i)

  p[i]=&a[i*4];

  pp=p;

  则对数组元素的错误引用是

  A)pp[0][1]

  B)a[10]

  C)p[3][1]

  D)*(*(p+2)+2)

(34)若有说明:

inta[3][4]={0};则下面正确的叙述是

  A)只有元素a[0][0]可得到初值0

  B)此说明语句不正确

  C)数组a中各元素都可得到初值,但其值不一定为0

  D)数组a中每个元素均可得到初值0

(35)对下面程序描述正确的一项是(每行程序前面的数字表示行号)

  1  main()

  2  {

  3  floata[3]={0.0};

  4  inti;

  5  for(i=0;i<3;i++)scanf("%d",&a[i]);

  6  for(i=1;i<3;i++)a[0]=a[0]+a[i];

  7  printf("%f\n",a[0]);

  8  }

  A)没有错误

  B)第3行有错误

  C)第5行有错误

  D)第7行有错误

(36)以下不正确的说法是

  C语言规定:

  A)实参可以是常量,变量或表达式

  B)形参可以是常量,变量或表达式

  C)实参可以为任何类型

  D)形参应与其对应的实参类型一致

(37)已有如下数组定义和f函数调用语句,则在f函数的说明中,对形参数组array的正确定义方式为

  inta[3][4];

  f(a);

  A)f(array[3][4])

  B)f(intarray[3][])

  C)f(intarray[][4])

  D)f(intarray[][])

(38)下面程序的输出结果为

  main()

  {inta,b;b=(a=3*5,a*4,a*5);

  printf("%d",b);}

  A)60

  B)75

  C)65

  D)无确定值

(39)在位运算中,操作数右移一位,其结果相当于

  A)操作数乘以2

  B)操作数除以2

  C)操作数乘以4

  D)操作数除以4

(40)有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b。

则不能把结点b连接到结点a之后的语句是

  structnode

  {chardata;

  structnode*next;

  }a,b,*p=&a,*q=&b;

  A)a.next=q;

  B)p.next=&b;

  C)p->next=&b;

  D)(*p).next=q;

(41)下面程序的输出结果是

  structst

  {intx;

  int*y;

  }*p;

  intdt[4]={10,20,30,40};

  structstaa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]};

  main()

  {p=aa;

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

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

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

  A)10

   20

   20

  

  B)50

    60

    21

  

  C)51

    60

    21

  

  D)60

    70

    31

(42)下面程序的输出结果是

  #include

  #include

  main()

  {char*p1="abc",*p2="ABC",str[50]="xyz";

  strcpy(str+2,strcat(p1,p2));

  printf("%s\n",str);}

  A)xyzabcABC

  B)zabcABC

  C)xyabcABC

  D)yzabcABC

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

  longfun(intn)

  {longs;

  if(n==1||n==2)s=2;

  elses=n-fun(n-1);

  returns;}

  main()

  {printf("%ld\n",fun(3));}

  A)1

  B)2

  C)3

  D)4

(44)以下所列的各函数首部中,正确的是

  A)voidplay(var:

Integer,varb:

Integer)

  B)voidplay(inta,b)

  C)voidplay(inta,intb)

  D)Subplay(aasinteger,basinteger)

(45)不合法的main函数命令行参数表示形式是

   A)main(inta,char*c[])

  B)main(intarc,char**arv)

  C)main(intargc,char*argv)

  D)main(intargv,char*argc[])

(46)有如下程序

  main()

  {charch[2][5]={"6937","8254"},*p[2];

  inti,j,s=0;

  for(i=0;i<2;i++)p[i]=ch[i];

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

  for(j=0;p[i][j]>′\0′;j+=2)

  s=10*s+p[i][j]-′0′;

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

  该程序的输出结果是

  A)69825

  B)63825

  C)6385

  D)693825

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

  unionmyun

  {struct

  {intx,y,z;}u;

  intk;}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

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

  main()

  {charx=040;

  printf("%o\n",x<<1);}

  A)100

  B)80

  C)64

  D)32

(49)C语言中,系统的标准输入文件是指

  A)键盘

  B)显示器

  C)软盘

  D)硬盘

(50)下面的程序执行后,文件test中的内容是

  #include

  voidfun(char*fname,char*st)

  {FILE*myf;inti;

  myf=fopen(fname,"w");

  for(i=0;i  fclose(myf);}

  main()

  {fun("test","newworld");fun("test","hello,");}

  A)hello,

  B)newworldhello,

  C)newworld

  D)hello,rld

二、填空题

(1)在算法正确的前提下,评价一个算法的两个标准是【1】。

(2)将代数式Z=x2+y2a+b转换成程序设计中的表达式为【2】。

(3)软件危机出现于60年代末,为了解决软件危机,人们提出了【3】的原理来设计软件,这就是软件工程诞生的基础。

(4)【4】是数据库设计的核心。

(5)在关系模型中,把数据看成一个二维表,每一个二维表称为一个【5】。

(6)以下程序段的输出结果是【6】。

intx=17,y=26;

printf("%d",y/=(x%=6));

(7)关系表达式x

(8)若有如下定义,double a[100];则a数组元素的下标上限是【8】。

(9)下面程序的输出结果【9】。

main()

{enumteam{y1=4,y2,y3};

printf("%d",y3);}

(11)若有以下程序段:

intc1=1,c2=2,c3;

c3=1.0/c2*c1;

则执行后,c3中的值是【11】。

(12)若有以下定义:

chara;intb;

floatc;doubled;

则表达式a*b+d-c值的类型为【12】。

(13)设有代码“staticinta[3][4]={{1},{2},{3}};”,则a[1][1]和a[2][1]的值为【13】。

(14)以下函数用来在w数组中插入x。

n所指向的存储单元中存放w数组中字符个数。

数组w中的字符已按从小到大的顺序排列,插入后数组w中的字符仍有序。

请填空。

voidfun(char*w,charx,int*n)

{ inti,p;

p=0;

w[*n]=x;

while(x>w[p])p++;

for(i=*n;i>p;i--)w[i]=【14】;

w[p]=x;

++*n;}

(15)设inta,b=10;执行a=b<<2+1;后a的值是【15】。

(16)以下程序的输出结果是【16】。

main()

{intx=100,a=10,b=20,ok1=5,ok2=0;

if(aelseif(ok2)x=10;

elsex=-1;

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

(17)以下程序的输出结果是【17】。

main()

{inty=9;

for(;y>0;y--)

if(y%3==0)

{printf("%d",--y);continue;}

}

(18)以下函数的功能是【18】。

floatav(a,n)

floata[];

intn;

{inti;floats;

for(i=0,s=0;ireturns/n;}

(19)以下程序的输出结果是【19】。

#define PR(ar)printf("%d,",ar)

main()

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

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

switch(j)

{case1:

case2:

PR(*p++);break;

case3:

PR(*(--p));

}

printf("\n");

}

(20)以下程序的功能是:

处理由学号和成绩组成的学生记录,N名学生的数据已在主函数中放入结构体数组s中,它的功能是:

把分数最高的学生数据放在h所指的数组中注意:

分数高的学生可能不只一个,函数返回分数最高学生的人数。

请填空。

#include

#define N 16

typedef struct

{charnum[10];

int s;

}STREC;

int fun(STREC*a,STREC*b)

{inti,j=0,max=a[0].s;

for(i=0;iif(maxfor(i=0;iif(【20】)b[j++]=a[i];

returnj;

}

main()

{STREC s[N]={{"GA005",85},{"GA003",76},{"GA002",69},{"GA004",85},

{"GA001",91},{"GA007",72},{"GA008",64},{"GA006",87},

 {"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},

{"GA011",66},{"GA017",64},{"GA018",64},{"GA016",72}

};

STRECh[N];

inti,n;FILE*out;

n=fun(s,h);

printf("The%dhighestscore:

\n",n);

for(i=0;iprintf("%sM\n",h[i].num,h[i].s);

printf("\n");

out=fopen("out15.dat","w");

fprintf(out,"%d\n",n);

for(i=0;ifprintf(out,"M\n",h[i].s);

fclose(out);

}

计算机等级考试二级C语言考前模拟密卷答案(5)

一、选择题

01-05  D  D  D  A  C

              

06-10  D  D  D  A  C

              

11-15  D  D  D  C  A

              

16-20  B  D  A  D  D

              

21-25  B  B  A  D  B

              

26-30  C  D  D  D  B

              

31-35  A  A  C  D  C

              

36-40  B  C  B  B  B

              

41-45  C  C  A  C  C

              

46-50  C  D  A  A  A

              

二、填空题

1、时间复杂度和空间复杂度

2、SQR(x^2+y^2)

3、软件工程学

4、数据模型

5、关系

6、5

7、(x

8、99

9、6

11、0

12、double或双精度

13、0  0

14、w[i-1]

15、80

16、-1

17、852

18、求出数组元素

19、9,9,11,

20、max==a[i]

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 军事政治

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1