等级考试

全国计算机等级考试二级C语言试题二

时间:2023-03-29 23:50:28 等级考试 我要投稿
  • 相关推荐

全国计算机等级考试二级C语言试题二

考试频道小编综合整理了全国计算机等级考试二级C语言试题。
  一、选择题

全国计算机等级考试二级C语言试题二

  在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。

  (1)软件是指 A)程序 B)程序和文档 C)算法加数据结构 D)程序、数据与相关文档的完整集合

  (2)检查软件产品是否符合需求定义的过程称为

  A)确认测试 B)集成测试 C)验证测试 D)验收测试

  (3)以下不属于对象的基本特点的是

  A)分类性 B)多态性 C)继承性 D)封装性

  (4)在设计程序时,应采纳的原则之一是

  A)不限制goto语句的使用 B)减少或取消注解行 C)程序越短越好 D)程序结构应有助于读者理解

  (5)下列叙述中正确的是

  A)程序执行的效率与数据的存储结构密切相关 B)程序执行的效率只取决于程序的控制结构

  C)程序执行的效率只取决于所处理的数据量 D)以上三种说法都不对 (6)数据结构中,与所使用的计算机无关的是数据的

  A)存储结构 B)物理结构 C)逻辑结构 D)物理和存储结构

  (7)线性表的顺序存储结构和线性表的链式存储结构分别是

  A)顺序存取的存储结构、顺序存取的存储结构 B)随机存取的存储结构、顺序存取的存储结构

  C)随机存取的存储结构、随机存取的存储结构 D)任意存取的存储结构、任意存取的存储结构

  (8)树是结点的集合,它的根结点数目是

  A)有且只有1 B)1或多于1 C)0或1 D)至少2

  (9)下列有关数据库的描述,正确的是

  A)数据库是一个DBF文件 B)数据库是一个关系 C)数据库是一个结构化的数据集合 D)数据库是一组文件

  (10)数据库、数据库系统和数据库管理系统之间的关系是

  A)数据库包括数据库系统和数据库管理系统 B)数据库系统包括数据库和数据库管理系统 C)数据库管理系统包括数据库和数据库系统 D)三者没有明显的包含关系

  (11)以下4个选项中,不能看作一条语句的是

  A); B)a=5,b=2.5,c=3.6; C)if(a<5); D)if(b!=5)x=2;y=6;

  (12)下面四个选项中,均是不合法的用户标识符的选项是

  A)A P_0 do B)float la0_A C)b-a goto int D)_123 temp int

  (13)以下选项中不属于字符常量的是

  A)′C′ B)′′C′′ C)′\xCC′ D) ′\072′

  (14)设变量已正确定义并赋值,以下正确的表达式是

  A)x=y*5=x+z B)int(15.8%5) C)x=y+z+5,++y D)x=25%5.0

  (15)若变量已正确定义并赋值,以下符合C语言语法的表达式是

  A)a:=b+1 B)a=b=c+2 C)int 18.5%3 D)a=a+7=c+b

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

  int k=0;

  void fun(int m)

  {m+=k;k+=m;printf("m=%d k=%d ",m,k++);}

  main()

  {int i=4;

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

  }

  A)m=4 k=5 i=5 k=5 B)m=4 k=4 i=5 k=5 C)m=4 k=4 i=4 k=5 D)m=4 k=5 i=4 k=5

  (17)已有定义:char c;,程序前面已在命令行中包含ctype.h文件,不能用于判断c中的字符是否为大写字母的表达式是

  A)isupper(c) B)′A′<=c<=′Z′ C)′A′<=c&&c<=′Z′ D)c<=(′z′-32)&&(′a′-32)<=c

  (18)设有:

  int a=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

  (19)若变量已正确定义,有以下程序段

  int a=3,b=5,c=7;

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

  if(c!=a) c=b;

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

  其输出结果是

  A)程序段有语法错 B)3,5,3 C)3,5,5 D)3,5,7

  (20)若有定义:float x=1.5;int a=1,b=3,c=2;,则正确的switch语句是

  A)switch(x)

  {case 1.0:printf("*\n");

  case 2.0:printf("**\n");}

  B)switch((int)x);

  {case 1:printf("*\n");

  case 2:printf("**\n");}

  C)switch(a+b)

  {case 1:printf("*\n");

  case 2+1:printf("**\n");}

  D)switch(a+b)

  {case1:printf(**\n);}

  casec:printf(**\n);}

  (21)有以下程序

  #include

  main0

  { int y=9;

  for( ; y>0;y--)

  if(y%3==0) printf("%d",--y);

  }

  程序的运行结果是

  A)741 B)963 C)852 D)875421

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

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

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

  C)在do-while循环体中,是先执行一次循环,再进行判断 D)do-while循环中,根据情况可以省略while

  (23)有以下程序

  #include

  main()

  { int a[ ]={1,2,3,4},y,?*p=&a[3];

  --p; y=?*p;printf("y=%d\n",y);

  }

  程序的运行结果是

  A)y=0 B)y=1 C)y=2 D)y=3

  (24)以下数组定义中错误的是

  A)int x[][3]={0}; B)int x[2][3]={{l,2},{3,4},{5,6}}; C)int x[][3]={{l,2,3},{4,5,6}}; D)int x[2][3]={l,2,3,4,5,6};

  (25)下面说明不正确的是

  A)char a[10]="china"; B)char a[10],*p=a;p="china" C)char *a;a="china" D)char a[10],*p;p=a="china"

  (26)若有定义:int a[2][3];,以下选项中对a数组元素正确引用的是

  A)a[2][!1] B)a[2][3] C)a[0][3] D)a[1>2][!1]

  (27)若要求从键盘读入含有空格字符的字符串,应使用函数

  A)getc() B)gets() C)getchar() D)scanf()

  (28)阅读下列程序段,则程序的输出结果为

  #include "stdio.h"

  #define M(X,Y)(X)*(Y)

  #define N(X,Y)(X)/(Y)

  main()

  { int a=5,b=6,c=8,k;

  k=N(M(a,b),c);

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

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

  (29)在16位IBM-PC机上使用C语言,若有如下定义

  struct data

  { int i;

  char ch;

  double f;

  } b;

  则结构变量b占用内存的字节数是

  A)1 B)2 C)7 D)11

  (30)有以下程序 #include

  main()

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

  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)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,

  (31)有以下程序

  #include

  main()

  { int s[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;

  for(i=0;i<12;i++) c[s[i]]++;

  for(i=1;i<5;i++) printf("%d",c[i]);

  printf("\n");

  }

  程序的运行结果是

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

  (32)有以下程序

  #include

  void fun(int *a,int n)/*fun函数的功能是将a所指数组元素从大到小排序*/

  { int t,i,j;

  for(i=0;i

  for(j=i+1;j

  if(a[i]

  }

  main()

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

  fun(c+4,6);

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

  printf("\n");

  }

  程序的运行结果是

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

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

  #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

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

  fun(int *a, int n)

  { int i,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

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

  #include

  void abc(char*str)

  { int a,b;

  for(a=b=0;str[a]!='\0';a++)

  if(str[a]!='c')

  str[b++]=str[a];

  str[b]='\0';}

  void main()

  { char str[]="abcdef";

  abc(str);

  printf("str[]=%s",str); }

  A)str[]=abdef B)str[]=abcdef C)str[]=a D)str[]=ab

  (36)有以下程序

  #include

  #include

  typedef struct{ char name[9]; char sex; float score[2]; }STU;

  void f(STU a)

  { STU b={"Zhao",′m′,85?0,90?0}; int i;

  strcpy(a.name,b.name);

  a.sex=b.sex;

  for(i=0;i<2;i++) a.score[i]=b.score[i];

  }

  main()

  { STU c={"Qian",′f′,95.0,92.0};

  f(c);

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

  }

  程序的运行结果是

  A)Qian,f,95,92 B)Qian,m,85,90 C)Zhao,f,95,92 D)Zhao,m,85,90

  (37)有以下程序

  #include

  main()

  { FILE ?*fp; int a[10]={1,2,3},i,n;

  fp=fopen("d1.dat","w");

  for(i=0;i<3;i++) fprintf(fp,"%d",a[i]);

  fprintf(fp,"\n");

  fclose(fp);

  fp=fopen("d1.dat","r");

  fscanf(fp,"%d",&n);

  fclose(fp);

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

  }

  程序的运行结果是

  A)12300 B)123 C)1 D)321

  (38)已知 int a=1,b=3则a^b的值为

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

  (39)阅读下列程序,则运行结果为
 

考试频道小编综合整理了全国计算机等级考试二级C语言试题

 

  #include "stdio.h"

  fun()

  { static int x=5;

  x++;

  return x;}

  main()

  { int i,x;

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

  x=fun();

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

  A)5 B)6 C)7 D)8

  (40)有以下程序

  #include

  void fun(char *t,char *s)

  { while(*t!=0) t++;

  while((*t++=*s++)!=0);

  }

  main()

  { char ss[10]="acc",aa[10]="bbxxyy";

  fun(ss,aa); printf("%s,%s\n",ss,aa);

  }

  程序的运行结果是

  A)accxyy,bbxxyy B)acc,bbxxyy C)accxxyy,bbxxyy D)accbbxxyy,bbxxyy

  二、填空题

  请将每一个空的正确答案写在答题卡序号的横线上,答在试卷上不给分。

  (1)需求分析的最终结果是产生 【1】 。

  (2)为了便于对照检查,测试用例应由输入数据和预期的 【2】 两部分组成。

  (3)数据结构分为逻辑结构与存储结构,线性链表属于 【3】 。

  (4)某二叉树中度为2的结点有18个,则该二叉树中有 【4】 个叶子结点。

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

  (6)已有定义:char c=′ ′;int a=1,b;(此处c的初值为空格字符),执行b=!c&&a;后b的值为? 【6】 ?。

  (7)设变量已正确定义为整型,则表达式n=i=2,++i,i++的值为 【7】 。

  (8)下面程序的功能是:计算1 10之间的奇数之和与偶数之和,请填空。

  #include

  main()

  { int a,b,c,I;

  a=c=0;

  for(I=0;I<=10;I+=2)

  {a+=I;

  【8】 ;

  c+=b; }

  printf("偶数之和=%d\n",a);

  printf("奇数之和=%d\n",c-11);}

  (9)以下函数rotate的功能是:将a所指N行N列的二维数组中的最后一行放到b所指二维数组的第0列中,把a所指二维数组中的第0行放到b所指二维数组的最后一列中,b所指二维数组中其他数据不变。

  #define N 4

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

  { int I,j;

  for(I=0;I

  { b[I][N-1]= 【9】 ; 【10】 =a[N-1][I]; } }

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

  #include

  void swap(int ?*a, int ?*b)

  { int ?*t;

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

  }

  main()

  { int i=3,j=5,?*p=&i,?*q=&j;

  swap(p,q); printf("%d %d\n",*p,*q);

  }

  (11)下面程序的运行结果是 【12】 。

  #include

  #define SIZE 12

  main()

  { char s[SIZE]; int I;for(I=0;I

  sub(s,7,SIZE-1);

  for(I=0;I

  printf("\n");}

  sub(char*a,int t1,int t2)

  { char ch;

  while (t1

  { ch=*(a+t1);

  *(a+t1)=*(a+t2);

  *(a+t2)=ch;

  t1++;t2--; } }

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

  #include

  main()

  { int a[5]={2,4,6,8,10},?*p;

  p=a; p++;

  printf("%d",?*p);

  }

  (13)设有定义"struct {int a; float b; char c;} abc, *p_abc=&abc;",则对结构体成员a的引用方法可以是abc.a和p_abc 【14】 a。

  (14)以下程序的运行结果是 【15】 。

  #include

  main()

  { FILE *fp; int a[10]={1,2,3,0,0},i;

  fp=fopen("d2.dat","wb");

  fwtite(a,sizeof(int),5,fp);

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

  fclose(fp);

  fp=fopen("d2.dat","rb");

  fread(a,sizeof(int),10,fp);

  fclose(fp);

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

  }

  一、选择题

  (1)D 【解析】 软件是程序、数据与相关文档的集合,相对于计算机硬件而言,软件是逻辑产品而不是物理产品,是计算机的无形部分。

  (2)A 【解析】 确认测试的任务是验证软件的功能和性能,以及其他特性是否满足需求规格说明中确定的各种需求;集成测试的主要目的是发现与接口有关的错误。

  (3)C 【解析】 对象的基本特点:标识惟一性、分类性、多态性、封装性和模块独立性。

  (4)D 【解析】 滥用goto 语句将使程序流程无规律,可读性差,因此A)不选;注解行有利于对程序的理解,不应减少或取消,B)也不选;程序的长短要依照实际情况而论,而不是越短越好,C)也不选。

  (5)A 【解析】 程序执行的效率与很多因素有关,如数据的存储结构、程序所处理的数据量、程序所采用的算法等。顺序存储结构在数据插入和删除操作上的效率比链式存储结构的效率低。

  (6)C 【解析】 数据结构概念一般包括数据的逻辑结构、存储结构及数据上的运算集合等。数据的逻辑结构只抽象地反映数据元素之间的逻辑关系,而不管它在计算机中的存储形式。

  (7)B 【解析】 顺序存储结构中,数据元素存放在一组地址连续的存储单元中,每个数据元素地址可通过公式LOC(ai)=LOC(a1)+(i-1)L计算得到,从而实现了随机存取。对于链式存储结构,要对某结点进行存取,都得从链的头指针指向的结点开始,这是一种顺序存取的存储结构。

  (8)C 【解析】 树是N(N>0)个结点的有限集合,当?N=0?,时称为空树,对于空树没有根结点,即根结点的个数为0,对于非空树有且只有一个根结点,所以树的根结点数目为0或1。

  (9)C 【解析】 数据库(DataBase,简称DB)是数据的集合,它具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,可被各个应用程序所共享。数据库中的数据具有"集成"、"共享"的特点。

  (10)B 【解析】 数据库系统(Database System,简称DBS),包括数据库(Database,简称DB)和数据库管理系统(Database Management System,简称DBMS)。

  (11)D 【解析】 选项D)为两条语句。

  (12)C 【解析】 C语言规定的标识符只能由字母、数字和下划线3种字符组成,第一个字符必须为字母或下划线,并且不能使用C语言中的关键字作为标识符。选项C)中goto和int是关键字,b-a中'-'不是组成标识符的3种字符之一;选项D)中int是关键字,所以,均是不合法用户标识符的选项是C)。

  (13)B 【解析】 在C语言程序中,用单引号把一个字符或反斜线后跟一个特定的字符括起来表示一个字符常量。选项A)、C)和D)为正确的字符常量,而选项B)是用双引号括起来的字符,表示一个字符串常量。

  (14)C 【解析】 求余运算符"%"两边的运算对象必须是整型,而选项B)和D)中 "%"两边的运算对象有浮点整数据,所以选项B)和D)是错误的表达式。在选项A)中赋值表达式的两边出现相同的变量x,也是错误的。选项C)是一个逗号表达式,所以正确答案为C)。

  (15)B 【解析】 选项A)中包含一个不合法的运算符":=";选项C)应改为(int)18.5%3;选项D)可理解为两个表达式:a+7=c+b和a=a+7,其中第一个是错的,因为C语言规定赋值号的左边只能是单个变量,不能是表达式或常量等。因此,正确答案是选项B),它实际上相当于a=(b=c+2),进而可分解为两个表达式:b=c+2和a=b。

  (16)B 【解析】 由于在main()函数中,变量 i=4,所以就调用fun(4),则输出"m=4 k=4"。然后变量k增1等于5,变量i增1等于5,所以main()函数的"printf("i=%d k=%d\n",i,k);"语句输出"i=5 k=5"

  (17)B 【解析】 在本题中,选项B)实际是先计算关系表达式"'A'<=c"的值是0还是1,再比较该值与字符'Z'之间的大小关系,显然不能实现题目所要求的功能,而选项A)、C)、D)都可以。

  (18)B 【解析】 本题考查逻辑与运算的运算规则。其规则是:当运算符前后两个条件表达式都满足时,其最终结果才为真。当发现第一个表达式的值为假,计算机将不再执行后面表达式的运算。

  本题中,由于前一个表达式的值为"假",所以,后面的表达式不再进行运算,因而n的值保持不变,仍为2。

  (19)B 【解析】 两个if语句的判断条件都不满足,程序只执行了c=a这条语句,所以变量c的值等于3,变量b的值没有变化,程序输出的结果为3,5,3。

  (20)C 【解析】 C语言中,switch语句专用于实现多分支结构程序,其特点是各分支清晰而直观。switch后面括号中可以是任何表达式,取其整数部分与各常量表达式进行比较。常量表达式中不能出现变量,且类型必须是整型、字符型或枚举型,各常量表达式各不相同。

  (21)C 【解析】 本题考察变量的自加"++"和自减"--"问题。当y 的值为9、6或3时,if语句的条件成立,执行输出语句,输出表达式--y的值,y的自减要先于输出语句执行,故输出结果为8 5 2。

  (22)C 【解析】 do while语句的一般形式为:do 循环体语句 while(表达式);,其中循环体语句可以是复合型语句,但必须用花括号括起来。while后必须要有分号作为语句的结束,在do-while循环中,不可以省略while。

  (23)D 【解析】 在程序中指针变量p初始指向a[3],执行p减1后,p指向a[2],语句y=*p的作用是把a[2]的值赋给变量y,所以输出为y=3。

  (24)B 【解析】 二维数组的初始化有以下几种形式:①分行进行初始化;②不分行进行初始化;③部分数组元素进行初始化;④省略第一维的定义,不省略第二维的定义。选项B)等号右边分了3行,大于等号左边数组的行数2。

  (25)D 【解析】 C语言中操作一个字符串常量的方法有:①将字符串常量存放在一个字符数组之中;② 用字符指针指向字符串, 然后通过字符指针来访问字符串存储区域。当字符串常量在表达式中出现时, 根据数组的类型转换规则, 将其转换成字符指针。

  本题D)项中错误的关键是对数组初始化时,可以在变量定义时整体赋初值,但不能在赋值语句中整体赋值。

  (26)D 【解析】 C语言中数组下标是从0开始的,所以二维数组a[2][3]的第一维下标取值为0、1;第二维的下标取值为0、1、2,因而选项A)、B)、C)都是错误的,选项D)表示数组元素a[0][0]。

  (27)B 【解析】 scanf()语句用"空格"区别不同的字符串;getc()与getchar()语句不能用于字符串的读入。

  (28)A 【解析】 带参数的宏定义命令行形式如下:#define 宏名(形参表) 替换文本。首先进行M的宏替换,之后再进行N的宏替换,替换后的表达式为 (a)*(b)/(c)。

  (29)D 【解析】 结构体变量所占用内存的字节数是其所有成员所占用内存字节数之和。本题中整型变量i所占用的内存是2字节,字符型变量ch所占用的内存是1字节,双精度型变量f所占用的内存是8字节,三者相加即可。

  (30)A 【解析】 首先利用fwrite函数将数组a中的数据写到文件中,接着fseek函数的功能是读文件的位置,指针从文件头向后移动3个int型数据,这时文件位置指针指向的是文件中的第4个int数据"4",然后 fread函数将文件fp中的后3个数据4,5,6读到数组a中,这样就覆盖了数组中原来的前3项数据。最后数组中的数据就成了{4,5,6,4,5,6}。

  (31)C 【解析】 在for(i=0;i<12;i++) c[s[i]]++中,数组元素s[i]的值作为数组c的下标,当退出循环时,数组c的4个元素的值分别为4、3、3、2。

  (32)D 【解析】 在本题中,主函数在调用fun()函数进行排序时,传递的参数是c+4和6,fun()函数实现的功能是将数组c的第5个元素开始的6个元素依次进行从大到小的顺序排列。排序之后,数组c的内容变为{1,2,3,4,9,8,7,6,5,0}。

  (33)C 【解析】 本题考查的重点是拷贝字符串──使用strcpy()函数,该函数的调用方式是:strcpy(字符数组, 字符串),其中"字符串"可以是字符串常量,也可以是字符数组。函数的功能是:将"字符串"完整地复制到"字符数组"中,字符数组中原有的内容被覆盖。

  使用该函数时注意:①字符数组必须定义得足够大,以便容纳复制过来的字符串。复制时,连同结束标志'\0'一起复制;②不能用赋值运算符"="将一个字符串直接赋值给一个字符数组,只能用strcpy( )函数处理。

  另外,本题还考查连接字符串的strcat()函数,其调用方式是:strcat(字符数组, 字符串)。

  功能是把"字符串"连接到"字符数组"中的字符串尾端,并存储于"字符数组"中。"字符数组"中原来的结束标志,被"字符串"的第一个字符覆盖,而"字符串"在操作中未被修改。

  使用该函数时注意:①由于没有边界检查,编程者要注意保证"字符数组"定义得足够大,以便容纳连接后的目标字符串;否则,会因长度不够而产生问题;②连接前两个字符串都有结束标志'\0',连接后"字符数组"中存储的字符串的结束标志'\0'被舍弃,只在目标串的最后保留一个'\0'。

  (34)D 【解析】 该程序先判断a[i]

  (35)A 【解析】 本题考查了用字符指针引用字符数组中的字符及对字符的操作。函数abc()的for语句执行过程是:从字符指针str所指向的字符数组的第一个元素开始,逐一判断字符是否为'c',若不是就执行一次数组元素的赋值过程,若字符为'c'就不执行。

  (36)A 【解析】 本题考查的是函数调用时的参数传递问题。程序在调用函数f时,传给函数f的参数只是结构变量c在栈中的一个拷贝,函数f的所有操作只是针对这个数据拷贝进行的修改,这些都不会影响变量c的值。

  (37)B 【解析】 在函数中首先把整型数组a[10]中的每个元素写入文件d1.dat中,然后再次打开这个文件,把文件d1.dat中的内容读入到整型变量n中,最后输出变量n的值。

  (38)C 【解析】 ^是按位异或运算,如果对应位不同则结果为1,相同则为0。

  (39)D 【解析】 在整个程序运行期间,静态局部变量在内存的静态存储区中占据着永久的存储单元,即使退出函数以后,下次再进入该函数时,静态局部变量仍使用原来的存储单元,静态局部变量的初值是在编译的时候赋予的,在程序执行期间不再赋予初值。本题由于连续三次调用函数fun(),三次对静态变量x进行操作,x的值应依次为6,7,8。

  (40)D 【解析】 本题中fun函数实现了字符串函数strcat的功能,将字符串aa连接到字符串ss的末尾。调用fun函数时,形参t和s分别指向了字符串ss和aa,然后通过一个while循环使t指向字符串ss的结束符的位置,第二个while循环将字符串aa中的字符(包括结束符'\0')逐个复制到字符串ss的末尾处。

  二、选择题

  (1)【1】 需求规格说明书 【解析】 软件需求规格说明书是需求分析阶段的最后成果,是软件开发中的重要文档之一。需求规格说明书包括正确性、无歧义性、完整性、可验证性、一致性、可理解性、可修改性和可追踪性等。

  (2)【2】 输出结果 【解析】 测试用例(Text Case)是为测试设计的数据。测试用例由测试输入数据和与之对应的预期输出结果两部分组成。

  (3)【3】 存储结构 【解析】 数据的逻辑结构是指反映数据元素之间逻辑关系的数据结构;数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式。在数据的存储结构中,不仅要存放各数据元素的信息,还需要存放各数据元素之间的前后件关系的信息。

  (4)【4】 19 【解析】 在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。

  (5)【5】 数据模型 【解析】 数据模型是对客观事物及联系的数据描述,它反映了实体内部及实体与实体之间的联系。因此,数据模型是数据库设计的核心。

  (6)【6】 1 【解析】 字符空格的ASCII码不为0,所以本题中表达式?!c?的值为0, b=0&&1的结果显然为0。

  (7)【7】 3 【解析】 本题考查的是C语言逗号表达式的相关知识。程序在计算逗号表达式时,从左到右计算由逗号分隔各表达式的值,整个逗号表达式的值等于其中最后一个表达式的值。本题中,首先i被赋值为2,再自加1,最后i++的值计算为3。

  (8)【8】 b=I+1 【解析】 本题考查了for循环语句的执行过程。i+=2是修正表达式,执行一次循环体后i的值就增加2,i的初始值为0,每次加2后的和累加至a,所以a的值就是1 10之间的偶数之和; b的值是1 11之间的奇数和,但在输出b值时,c去掉多加的11,即为1 10之间的奇数之和。

  (9)【9】 a[0][I] 【10】 b[I][0] 【解析】 b[i][N-1]= a[0][i]实现把a所指二维数组中的第0行放到b所指二维数组的最后一列中,?b[I][0]=a[N-1][I] 实现将a所指N行N列的二维数组中的最后一行放到b所指二维数组中的第0列。

  (10)【11】 3 5 【解析】 函数swap(int *a,int *b)的功能是实现*a和?*b?中两个数据的交换,在主函数中调用swap(p,q)后,参形指针变量a和b分别指向i和j,在swap(int *a,int *b)执行完后,指针变量a和b分别指向j和i,而指针变量p,q所指向变量的值没有发生变化,所以输出结果为3 5。

  (11)【12】 a b c d e f g l k j I h 【解析】 本题主要考查了字符变量可参与的运算。因为字符在计算机中是以ASCII码的形式存放的,所以字符变量可看作整型变量来处理,如参与算术运算等,某字符的大写字母的ASCII码值比它对应的小写字母ASCII码值小32。

  (12)【13】 4 【解析】 在主函数中,语句p=a;p++使用指针p指向数组a[1],所以输出结果为4。

  (13)【14】 -> 【解析】 若结构体变量abc有成员a,并有指针p_abc指向结构变量abc,则引用变量abc成员a的标记形式有abc.a和p_abc->a。

  (14)【15】 1,2,3,0,0,1,2,3,0,0, 【解析】 本题考查文件读写函数fread和fwrite的用法。fwrite函数将数组a的前5个元素输出到文件fp中两次,共10个字节,再调用fread函数从文件fp中读取这10个字节的数据到数组a中,此时数组a的内容就变为{1,2,3,0,0,1,2,3,0,0},最后的输出结果为"1,2,3,0,0,1,2,3,0,0,"。

考试频道小编综合整理了全国计算机等级考试二级C语言试题

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

计算机等级考试二级11-10

全国计算机二级《C++》上机试题及答案03-28

全国计算机二级考试《C语言》真题练习及答案09-20

计算机二级C语言考试必看技巧09-24

计算机二级考试《C语言》的考生技巧09-28

2023计算机二级C语言测试题及答案04-26

全国计算机二级考试C++真题03-21

计算机等级考试二级C++笔试选择题04-23

全国计算机二级考试《C++》笔试样卷06-12

2023下半年全国计算机二级C语言考前模拟试题及答案07-10