试题

3月全国计算机等级考试二级C语言笔试真题

时间:2025-05-02 23:48:35 嘉璇 试题 我要投稿
  • 相关推荐

3月全国计算机等级考试二级C语言笔试真题

  在社会的各个领域,我们最熟悉的就是考试真题了,考试真题可以帮助主办方了解考生某方面的知识或技能状况。还在为找参考考试真题而苦恼吗?下面是小编为大家收集的3月全国计算机等级考试二级C语言笔试真题,欢迎大家分享。

3月全国计算机等级考试二级C语言笔试真题

  3月全国计算机等级考试二级C语言笔试真题 1

  一、选择题((1)—(10)每小题2分,(11)—(50)每题1分,共60分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。

  (1)下列叙述中正确的是(B)

  A)算法的效率只与问题的规模有关,而与数据的存储结构无关

  B)算法的时间复杂度是指执行算法所需要的计算工作量

  C)数据的逻辑结构与存储结构是一一对应的

  D)算法的时间复杂度与空间复杂度一定相关

  (2)在结构化程序设计中,模块划分的原则是(D)

  A)各模块应包括尽量多的功能

  B)各模块的规模应尽量大

  C)各模块之间的联系应尽量紧密

  D)模块内具有高内聚度、模块间具有低耦合度

  (3)下列叙述中正确的是(A)

  A)软件测试的主要目的是发现程序中的错误

  B)软件测试的主要目的是确定程序中错误的位置

  C)为了提高软件测试的效率,最好由程序编制者自己来完成软件测试的工作

  D)软件测试是证明软件没有错误

  (4)下面选项中不属于面向对象程序设计特征的是(C)

  A)继承性

  B)多态性

  C)类比性

  D)封装性

  (5)下列对队列的叙述正确的是(D)

  A)队列属于非线性表

  B)队列按“先进后出”原则组织数据

  C)队列在队尾删除数据

  D)队列按“先进先出”原则组织数据

  (6)对下列二叉树

  A

  B C

  D E F X

  Y Z

  进行前序遍历的结果为(C)

  A) DYBEAFCZX

  B) YDEBFZXCA

  C) ABDYECFXZ

  D) ABCDEFXYZ

  (7) 某二叉树中有n个度为2的结点,则该二叉树中的叶子结点数为(A)

  A) n+1

  B) n-1

  C) 2n

  D) n/2

  (8) 在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是(B)

  A) 并

  B)交

  C)投影

  D)笛卡儿乘积

  (9)在E-R图中,用来表示实体之间联系的图形是(C)

  A) 矩形

  B)椭圆形

  C)菱形

  D)平行四边形

  (10)下列叙述中错误的是(A)

  A) 在数据库系统中,数据的物理结构必须与逻辑结构一致

  B) 数据库技术的根本目标是要解决数据的共享问题

  C) 数据库设计是指在已有数据库管理系统的基础上建立数据库

  D)数据库系统需要操作系统的支持

  (11)算法中,对需要执行的每一步操作,必须给出清楚、严格的规定,这属于算法的(C)

  A)正当性

  B)可行性

  C)确定性

  D)有穷性

  (12)下列叙述中错误的是(D)

  A)计算机不能直接执行用C语言编写的源程序

  B)C程序经C编译程序编译后,生成后缀为.obj的文件是一个二进制文件

  C)后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件

  D)后缀为.obj和.exe的二进制文件都可以直接运行

  (13)按照C语言规定的用户标识符命名规则,不能出现在标识符中的是(B)

  A)大写字母

  B)连接符

  C)数字字符

  D)下划线

  (14)以下叙述中错误的是(C)

  A)C语言是一种结构化程序设计语言

  B)结构化程序有顺序、分支、循环三种基本结构组成

  C)使用三种基本结构构成的程序只能解决简单问题

  D)结构化程序设计提倡模块化的设计方法

  (15)对于一个正常运行的C程序,以下叙述中正确的是(A)

  A)程序的执行总是从main函数开始,在main函数结束

  B)程序的执行总是从程序的第一个函数开始,在main函数结束

  C)程序的执行总是从main函数开始,在程序的最后一个函数中结束

  D)程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束

  (16)设变量均已正确定义,若要通过scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);语句为变量a1和a2赋数值10和20,为变量c1和c2赋字符X和Y。以下所示的输入形式中正确的是(注:□代表空格字符)(D)

  A)10□X□20□Y〈回车〉

  B)10□X20□Y〈回车〉

  C)10□X〈回车〉

  D)10X〈回车〉

  20□Y〈回车〉 20Y〈回车〉

  (17)若有代数式(其中e仅代表自然对数的底数,不是变量),则以下能够正确表示该代数式的C语言表达式是(C)

  A)sqrt(abs(n^x+e^x))

  B) sqrt(fabs(pow(n,x)+pow(x,e)))

  C)sqrt(fabs(pow(n,x)+exp(x)))

  D) sqrt(fabs(pow(x,n)+exp(x)))

  (18)设有定义:int k=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是(A)

  A)k++

  B)k+=1

  C)++k

  D)k+1

  (19)有以下程序,其中%u表示按无符号整数输出(B)

  main()

  {unsigned int x=0xFFFF; /* x的初值为十六进制数 */

  printf(“%u\n”,x);

  }

  程序运行后的输出结果是

  A)-1

  B)65535

  C)32767

  D)0xFFFF

  (20)设变量x和y均已正确定义并赋值,以下if语句中,在编译时将产生错误信息的是(C)

  A)if(x++);

  B)if(x>y&&y!=0);

  C)if(x>y) x- -

  D)if(y<0) {;}

  else y++;

  (21)以下选项中,当x为大于1的奇数时,值为0的表达式(D)

  A)x%2==1

  B)x/2

  C)x%2!=0

  D)x%2==0

  (22)以下叙述中正确的是(C)

  A)break语句只能用于switch语句体中

  B)continue语句的作用是:使程序的执行流程跳出包含它的所有循环

  C)break 语句只能用在循环体内和switch语句体内

  D)在循环体内使用break语句和continue语句的作用相同

  (23)有以下程序(A)

  main()

  {int k=5,n=0;

  do

  {switch(k)

  {case1: case3:n+=1; break;

  default;n=0;k--;

  case2: case4:n+=2;k--;break;

  }

  printf(“%d”,n);

  }while(k>0&&n<5);

  }

  程序运行后的输出结果是

  A)235

  B)0235

  C)02356

  D)2356

  (24)有以下程序

  mian()

  {int i,j;

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

  {for(j=i;j<4;j++) printf(“%d*%d=%d “,i,j,i*j);

  printf(“\n”);

  }

  }

  程序运行后的输出结果是(B)

  A) 1*1=1 1*2=2 1*3=3 B) 1*1=1 1*2=2 1*3=3

  2*1=2 2*2=4 2*2=4 2*3=6

  3*1=3 3*3=9

  C) 1*1=1 D) 1*1=1

  1*2=2 2*2=4 2*1=2 2*2=4

  1*3=3 2*3=6 3*3=9 3*1=3 3*2=6 3*3=9

  (25)以下合法的字符型常量是(A)

  A)”\x13”

  B)”\018”

  C)”65”

  D)”\n”

  (26)在C语言中,函数返回值的类型最终取决于(A)

  A)函数定义时在函数首部所说明的函数类型

  B)return语句中表达式值的类型

  C)调用函数时主函数所传递的实参类型

  D)函数定义时形参的类型

  (27)已知大写字母A的ASCII码是65,小写字母aASCII码是97,以下不能将变量c中大写字母转换为对应小写字母的语句是(D)

  A)c=(c-A)&+’a’

  B)c=c+32

  C)c=c-‘A’+’a’

  D)c=(‘A’+c)&-‘a’

  (28)有以下函数

  int fun(char *s)

  {char *t=s;

  while(*t++);

  return(t-s);

  }

  该函数的功能是(B)

  A)比较两个字符的大小

  B)计算s所指字符串占用内存字节的个数

  C)计算s所指字符串的长度

  D)将s所指字符串复制到字符串t中

  (29)设已有定义:float x;则以下对指针变量p进行定义且赋初值的语句中正确的是(D)

  A)float *p=1024;

  B)int *p=(float x);

  C)float p=&x;

  D)float *P=&x;

  (30)有以下程序

  #include

  main()

  {int n,*p=NULL;

  *p=&n;

  printf(“Input n:”); scanf(“%d”,&p); printf(“output n:”); printf(“%d\n”,p);

  }

  该程序试图通过指针p为变量n读入数据并输出,但程序有多处错误,以下语句正确的是(A)

  A)int n,*p=NULL;

  B)*p=&n;

  C)scanf(“%d”,&p)

  D)printf(“%d\n”,p);

  (31)以下程序中函数f的功能是:当flag为1时,进行有由小到大排序;当flag为0时,进行由大到小排序。

  void f(int b[],int n,int flag)

  {int i,j,t;

  for(i=0;i

  for (j=i+1;j

  if(flag?b[i]>b[j]:b[i]

  }

  main()

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

  f(&a[2],5,0); f(a,5,1);

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

  }

  程序运行后的输出结果是(B)

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

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

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

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

  (32)有以下程序

  void f(int b[])

  {int i;

  for(i=2;i<6;i++) b[i]*=2;

  }

  main()

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

  f(a);

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

  }

  程序运行后的输出结果是(B)

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

  B)1,2,6,8,10,12,7,8,9,10

  C)1,2,3,4,10,12,14,16,9,10,

  D)1,2,6,8,10,12,14,16,9,10,

  (33)有以下程序

  typedef struct{int b,p;}A;

  void f(A c) /*注意:c是结构变量名 */

  {int j;

  c.b+=1; c.p+=2;

  }

  main()

  {int i;

  A a={1,2};

  f(a);

  printf(“%d,%d\n”,a.b,a.p);

  }

  程序运行后的.输出结果是(D)

  A)2,3

  B)2,4

  C)1,4

  D)1,2

  (34)有以下程序

  main()

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

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

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

  for(k=j+1;k<4;k++)

  if(a[j][i]>a[k][i]){t=a[j][i];a[j][i]=a[k][i];a[k][i]=t;}/*按列排序*/

  for(i=0;i<4;i++)printf(“%d,”,a[i][j]);

  }

  程序运行后的输出结果是(A)

  A)1,6,5,7,

  B)8,7,3,1,

  C)4,7,5,2,

  D)1,6,2,1,

  (35) 有以下程序

  main()

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

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

  for(k=i+i;k<4;k++) if(a[i][i]

  for(i=0;i<4;i++)printf(“%d,”,a[0][i]);

  }

  程序运行后的输出结果是(B)

  A)6,2,1,1,

  B)6,4,3,2,

  C)1,1,2,6,

  D)2,3,4,6,

  (36) 有以下程序

  void f(int *q)

  {int i=0;

  for( ; i<5;i++)(*q)++;

  }

  main()

  {int a[5]={1,2,3,4,5},i;

  f(a);

  for(i=0;i<5;i++)printf(“%d,”,a[i]);

  }

  程序运行后的输出结果是(B)

  A)2,2,3,4,5,

  B)6,2,3,4,5,

  C)1,2,3,4,5,

  D) 2,3,4,5,6,

  (37) 有以下程序

  #include

  main()

  {char p[20]={‘a’,’b’,’c’,’d’},q[]=”abc”, r[]=”abcde”;

  strcpy(p+strlen(q),r); strcat(p,q);

  printf(“%d%d\n”,sizeof(p),strlen(p));

  }

  程序运行后的输出结果是(C)

  A)20 9

  B)9 9

  C)20 11

  D)11 11

  (38) 有以下程序

  #include

  main()

  {char p[20]={‘a’,’b’,’c’,’d’},q[]=”abc”, r[]=”abcde”

  strcat(p,r); Strcpy(p+strlen(q),q);

  Printf(“%d \n”,sizeof(p));

  }

  程序运行后的输出结果是(B)

  A)9

  B)6

  C)11

  D)7

  (39) 有以下程序

  #include

  main()

  void f(char p[][10], int n ) /* 字符串从小到大排序 */

  { char t[10]; int i,j;

  for(i=0;i

  for(j=i+1;j

  if(strcmp(p[i],p[j])>0) {strcpy(t,p[i]); strcpy(p[i],p[j]); strcpy(p[i],t); }

  }

  main()

  {char p[5][10]={“abc”,”aabdfg”,”abbd”,”dcdbe”,”cd”};

  f(p,5);

  printf(“%d\n”,strlen(p[0]));

  }

  程序运行后的输出结果是(C)

  A) 2

  B) 4

  C) 6

  D) 3

  (40) 有以下程序

  void f(int n, int *r)

  {int r1=0;

  if(n%3==0) r1=n/3;

  else if(n%5==0) r1=n/5;

  else f(--n,&r1);

  *r=r1;

  }

  main()

  {int m=7,r;

  f(m,&r); printf(“%d\n,r”);

  }

  程序运行后的输出结果是(A)

  A) 2

  B) 1

  C)3

  D) 0

  (41)有以下程序

  main(int argc,char *argv[])

  {int n=0,i;

  for(i=1;i n=n*10+*argv[i]-‘0’;

  printf(“%d\n”,n);

  }

  编译连接后生成可执行文件tt.exe,若运行时输入以下命令行

  tt 12 345 678

  程序运行后的输出结果是(D)

  A) 12

  B) 12345

  C)12345678

  D) 136

  (42) 有以下程序

  int a=4;

  int f(int n)

  {int t=0; static int a=5;

  if(n%2) {int a=6; t+=a++;}

  else {int a=7 ;t+=a++;}

  return t+a++;

  }

  main()

  {int s=a,i=0;

  for(;i〈2;i++) s+=f(i);

  printf (“%d\n”,s);

  }

  程序运行后的输出结果是(B)

  A)24

  B)28

  C)32

  D)36

  (43) 有一个名为init.txt的文件,内容如下:

  #define HDY(A,B) A/B

  # define PRINT(Y) Printf(“y=%d\n.,Y)

  有以下程序

  #include “init.txt”

  main()

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

  K=HDY(a+c,b+d);

  PRINT(K);

  }

  下面针对该程序的叙述正确的是(D)

  A)编译有错

  B)运行出错

  C)运行结果为 y=0

  D) 运行结果为 y=6

  (44) 有以下程序

  main()

  {char ch[]=“uvwxyz”,*pc;

  Pc=ch; printf(“%c\n”,*(pc+5));

  }

  程序运行后的输出结果是(A)

  A)z

  B)0

  C)元素ch[5]的地址

  D)字符y的地址

  (45) 有以下程序

  struct S {int n; int a[20];};

  void f(struct S *P)

  {int i,j,t;

  for(i=0;in-1;i++)

  for(j=i+1;jn;j++)

  if(p->a[i]>p->a[j]) { t=p->a[i]; p->a[i]=p->a[j]; p->a[j]=t; }

  }

  main()

  {int i; struct S s={10,{2,3,1,6,8,7,5,4,10,9}};

  f(&s);

  for(i=0;i printf(“%d”,s.a[i]);

  }

  程序运行后的输出结果是(A)

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

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

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

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

  (46) 有以下程序

  struct S{ int n; int a[20]; };

  void f(int *a,int n)

  {int i;

  for(i=0;i a[i]+=i;

  }

  main()

  {int i; struct S s={10,{2,3,1,6,8,7,5,4,10,9}};

  f(s.a, s.n);

  for(i=0;i printf(“%d”,s.a[i]);

  }

  程序运行后的输出结果是(A)

  A)2,4,3,9,12,12,11,11,18,9,

  B)3,4,2,7,9,8,6,5,11,10,

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

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

  (47) 有以下程序段

  typedef struct node { int data; struct node *next; } *NODE;

  NODE p;

  以下叙述正确的是(C)

  A)p是指向struct node结构变量的指针的指针

  B)NODE p;语句出错

  C)p是指向struct node结构变量的指针

  D)p是struct node结构变量

  (48)有以下程序

  main()

  {unsigned char a=2,b=4,c=5,d;

  d=a|b; d&=c; printf(“%d\n”,d); }

  程序运行后的输出结果是(B)

  A)3

  B)4

  C)5

  D)6

  (49)有以下程序

  #include

  main()

  {FILE *fp; int k,n,a[6]={1,2,3,4,5,6};

  fp=fopen(“d2.dat”,”w”);

  fprintf(fp,”%d%d\n”,a[0],a[1],a[2]); fprintf(fp, “%d%d%d \n”,a[3],a[4],a[5]);

  fclose(fp);

  fp=fopen(“d2.dat”,”r”);

  fscanf(fp, “%d%d”,&k,&n); printf(“%d%d\n”,k,n);

  fclose(fp);

  }

  程序运行后的输出结果是(D)

  A)1 2

  B)1 4

  C)123 4

  D) 123 456

  (50)有以下程序

  #include

  main ()

  {FILE *fp; int i,a[6]={1,2,3,4,5,6k};

  fp=fopen(“d3.dat”,”w+b”);

  fwrite(a,sizeof(int),6,fp);

  fseek(fp,sizeof(int)*3,SEEK_SET);/*该语句使读文件的位置指针从文件头向后移动3个int型数据*/

  fread(a,sizeof(int),3,fp); fclose(fp);

  for(i=0;i<6;i++) printf(“%d,”,a[i]);

  }

  程序运行后的输出结果是(A)

  A)4,5,6,4,5,6,

  B)1,2,3,4,5,6,

  C)4,5,6,1,2,3,

  D)6,5,4,3,2,1,

  二.填空题(每空2分,共40分)请将每一个空的正确答案写在答题卡[1]至[20]序号的横线上,答在试卷上不得分。注意:以命令关键字填空的必须写完整.

  (1) 在深度为7的满二叉树中,度为2的结点个数为___63____。

  (2) 软件测试分为白箱(盒)测试和黑箱(盒)测试,等价类划分法属于__黑箱(或黑盒) 测试。

  (3) 在数据库系统中,实现各种数据管理功能的核心软件称为 __数据库管理系统__。

  (4) 软件生命周期可分为多个阶段,一般分为定义阶段、开发阶段和维护阶段。编码和测试属于 开发_____阶段。

  (5)在结构化分析使用的数据流图(DFD)中,利用数据字典 对其中的图形元素进行确切解释。

  (6)执行以下程序后的输出结果是 a=14 。

  main()

  {int a=10;

  a=(3*5,a+4); printf(“a=%d\n”,a);

  }

  (7) 当执行以下程序时,输入1234567890<回车>,则其中while循环体将执行 0 次。

  #include

  main()

  {char ch;

  While((ch=get))==’0’) printf(“#”);

  }

  (8)   (8)以下程序的运行结果是 m=4 k=4 i=5 k=5 。

  int k=0;

  void fun(int m)

  { m+=k; k+=m; printf(“m=%d\n k=%d ”,m,k++);}

  main()

  { int i=4;

  fun(i++); printf(“i=%d k=%d\n”,i,k);

  }

  (9)   (9)以下程序的运行结果是 #& 。

  main()

  {int a=2,b=7,c=5;

  switch(a>0)

  {case 1:switch(b<0)

  {case 1:switch(“@”); break;

  Case 2: printf(“!”); break;

  }

  case 0: switch(c==5)

  { case 0: printf(“*”); break;

  case 1: printf(“#”); break;

  case 2: printf(“$”); break;

  }

  default : printf(“&”);

  }

  printf(“\n”);

  }

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

  # include

  main()

  { printf(“%d\n”,strlen(“IBM\n012\1\\”));

  }

  (11)已定义char ch=”$”;int i=1,j;执行j=!ch&&i++以后,i的值为1

  (12)以下程序的输出结果是 5 4

  # include

  main()

  { char a[]={‘\1’,’\2’,’\3’,’\4’,’\0’};

  printf(“%d %d\n”,sizeof(a),srelen(a));

  }

  (13)设有定义语句:int a[][3]={{0},{1},{2}};,则数组元素a[1][2]的值为 0

  (14)以下程序的功能是:求出数组x中各相邻两个元素的和依次存放到a数组中,然后输出。请填空。

  main()

  {int x[10],a[9],I;

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

  scanf(“%d”,&x[i]);

  for( i=1 ;i<10;i++)

  a[i-1]=x[i]+ x[i-1] ;

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

  printf(“%d”,a[i]);

  printf(“\n”);

  (15) 以下程序的功能是:利用指针指向三个整型变量,并通过指针运算找出三个数中的最大值,输出到屏幕上,请填空:

  main()

  {int x,y,z,max,*px,*py,*pz,*pmax;

  scanf(“%d%d%d”,&x,&y,&z);

  px=&x;

  py=&y;

  pz=&z;

  pmax=&max;

  *pmax=*px(或*pmax=x) ;

  if(*pmax<*py)*pmax=*py;

  if(*pmax<*pz)*pmax=*pz;

  printf(“max=%d\n”,max);

  }

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

  int fun(int*x,int n)

  {if(n==0)

  return x[0];

  else return x[0]+fun(x+1,n-1);

  }

  main()

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

  printf(“%d\n”,fun(a,3));

  }

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

  # include

  main()

  {char *s1,*s2,m;

  s1=s2=(char*)malloc(sizeof(char));

  *s1=15;

  *s2=20;

  m=*s1+*s2;

  printf(“%d\n”,m);

  }

  (18)设有说明

  struct DATE{int year;int month; int day;};

  请写出一条定义语句,该语句定义d为上述结构体变量,并同时为其成员year、month、day 依次赋初值2006、10、1: struct DATA d={2006,10,1};

  (19) 设有定义:FILE *fw;,请将以下打开文件的语句补充完整,以便可以向文本文件readme.txt的最后续写内容。

  fw=fopen(“readme.txt”, "a" )

  3月全国计算机等级考试二级C语言笔试真题 2

  (1)算法的时间复杂度是指_______。

  A)执行算法程序所需要的时间

  B)算法程序的长度

  C)算法执行过程中所需要的基本运算次数

  D)算法程序中的指令条数

  答案:C

  评析:所谓算法的时间复杂度,是指执行算法所需要的计算工作量。

  (2)下列叙述中正确的是________。

  A)线性表是线性结构B)栈与队列是非线性结构

  C)线性链表是非线性结构D)二叉树是线性结构

  答案:A

  评析:一般将数据结构分为两大类型:线性结构与非线性结构。线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。

  (3)下面关于完全二叉树的`叙述中,错误的是_________。

  A)除了最后一层外,每一层上的结点数均达到最大值

  B)可能缺少若干个左右叶子结点

  C)完全二叉树一般不是满二叉树

  D)具有结点的完全二叉树的深度为[log2n]+1

  答案:B

  评析:满二叉树指除最后一层外每一层上所有结点都有两个子结点的二叉树。完全二叉树指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干子结点(叶子结点)的二叉树。

  3月全国计算机等级考试二级C语言笔试真题 3

  (1)下述关于数据库系统的叙述中正确的是________。

  A)数据库系统减少了数据冗余

  B)数据库系统避免了一切冗余

  C)数据库系统中数据的一致性是指数据类型的一致

  D)数据库系统比文件系统能管理更多的数据

  答案:A

  评析:由数据的共享自身又可极大地减少数据冗余性,不仅减少了不必要的存储空间,更为重要的是可以避免数据的不一致性。所谓数据的一致性是指在系统中同一数据的'不同出现应保持相同的值。

  (2)关系表中的每一横行称为一个________。

  A)元组B)字段C)属性D)码

  答案:A

  评析:在关系数据库中,关系模型采用二维表来表示,简称“表”。二维表是由表框架及表元组组成。在表框架中,按行可以存放数据,每行数据称为元组。

  (3)数据库设计包括两个方面的设计内容,它们是________。

  A)概念设计和逻辑设计B)模式设计和内模式设计

  C)内模式设计和物理设计D)结构特性设计和行为特性设计

  答案:A

  评析:数据库设计可分为概念设计与逻辑设计。概念设计的目的是分析数据间内在语义关联,在此基础上建立一个数据的抽象模型。逻辑设计的主要工作是将ER图转换为指定的RDBMS中的关系模型。

  (4)请读程序:

  #include

  main

  {

  int a;float b,c;

  scanf(“%2d%3P%4f’,&a,&b,&C);

  printf(” a=%d,b=%ec。%f ”,a,b,C);

  }

  若运行时从键盘上输入9876543210l,则上面程序的输出结果是________。

  A)a=98,b=765,c=432 1

  B)a=1 0,b=432,c=8765

  C)a=98,b=765.000000,c=432 1.000000

  D)a=98,b=765.0,c=432 1.0

  答案:C

  评析:scanf把用户从键盘录入的数字的第1、2位存入整型变量a;把第3、4、5位存入单精度实型变量b,把第6、7、8、9位存入单精度实型变量c,用户录入的第10位被scanf遗弃。这时变量a、b、c的值分别为:98、765.000000、4321.000000。

  (5)一个良好的算法由下面的基本结构组成,但不包括__________。

  A)顺序结构B)选择结构C)循环结构D)跳转结构

  答案:D

  评析:1966年,Bohra和Jacopini提出了以下三种基本结构,用这三种基本结构作为表示一个良好算法的基本单元:1、顺序结构;2、选择结构;3、循环结构。

  (6)请选出以下程序的输出结果________。

  #include

  sub(x,y,z)

  int x,y,星符号z:

  {星符号z变化,所以此次函数被调用后,a的值为y-x=-5,同理可知,在sub(7,a,&b)后,b的值发生变化,其值为-5-7=-12,在sub(a,b,&C)后,c的值发生变化,其值为-12-(-5)=-7。

  (7)下面程序在屏幕上的输出是________。

  main

  {

  printf(”ab c”);

  }

  A)ab c B)a c C)abc D)ab c

  答案:B

  评析:c语言中允许使用一种特殊形式的字符常量,、就是以一个“”开头的字符序列,这样的字符称为“转义字符”。常用的转义字符有: ,换行;,水平制表;,退格;,回车。

  (8)若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是_______。

  A)pb=&x; B)pb=x; C)星符号pb=星符号、/)还包括自增自减运算符(++、–),在c语言解析表达式时,它总是进行贪婪咀嚼,这样,该表达式就被解析为i++ ++ +i,显然该表达式不合c语言语法。

  (10)若要用下面的程序片段使指针变量p指向一个存储整型变量的动态存储单元

  int星符号int) D)(int星符号)

  答案:D

  评析:不论p是指向什么类型的指针变量,都可以通过强制类型转换的方法使之类型一致,强制类型转换的格式为(数据类型+)。

  (11)下面程序输出的结果是__________。

  main

  {

  int i=5,J=9,x;

  x=(I==j?i:(j=7));

  printf(” %d,%d”,I,J);

  }

  A)5,7 B)5,5 C)语法错误D)7,5

  答案:A

  评析:条件表达式的一般形式为:表达式I?表达式2:表达式3;先求解表达式1,若为真则求解表达式2;若表达式l的值为假,则求解表达式3。本题中先判断i==j,不等,执行j=7;然后执行x=7。故本题为A。

【3月全国计算机等级考试二级C语言笔试真题】相关文章:

全国计算机等级考试二级C++笔试真题10-11

计算机等级考试二级C语言笔试选择真题10-06

计算机等级考试二级C语言真题09-26

2006年9月全国计算机等级考试二级C语言笔试真题10-08

3月全国计算机等级考试二级C++笔试真题10-11

计算机二级考试C语言笔试填空真题09-10

计算机二级C语言笔试真题10-12

2009年9月计算机等级考试二级C语言笔试真题05-13

全国计算机等级考试二级C语言笔试试题06-29