等级考试

全国计算机等级考试二级C语言-笔试第一套

时间:2024-08-15 06:43:36 等级考试 我要投稿
  • 相关推荐

全国计算机等级考试二级C语言-笔试第一套

考试频道小编收集整理计算机等级考试资料,免费提供给大家交流参考。 
 一、选择题

全国计算机等级考试二级C语言-笔试第一套

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

  (1)软件生命周期中花费费用最多的阶段是

  A)详细设计 B)软件编码 C)软件测试 D)软件维护

  (2)为了提高测试的效率,应该

  A)随机选取测试数据 B)取一切可能的输入数据作为测试数据 C)在完成编码以后制定软件的测试计划 D)集中对付那些错误群集的程序

  (3)以下不是面向对象思想中的主要特征的是

  A)多态 B)继承 C)封装 D)垃圾回收

  (4)下列叙述中,不符合良好程序设计风格要求的是

  A)程序的效率第一,清晰第二 B)程序的可读性好 C)程序中要有必要的注释 D)输入数据前要有提示信息

  (5)软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指

  A)模块间的关系 B)系统结构部件转换成软件的过程描述 C)软件层次结构 D)软件开发过程

  (6)数据处理的最小单位是

  A)数据 B)数据元素 C)数据项 D)数据结构

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

  A)log2n B)n2 C)O(n1..5) D)n(n-1)/2

  (8)在深度为5的满二叉树中,叶子结点的个数为

  A)32 B)31 C)16 D)15

  (9)数据库系统的核心是

  A)数据库 B)数据库管理系统 C)模拟模型 D)软件工程

  (10)一个关系中属性个数为1时,称此关系为

  A)对应关系 B)单一关系 C)一元关系 D)二元关系

  (11)下面各选项中,均是C语言合法标识符的选项组是

  A)33 we auto B)_23 me _3ew C)_43 3e_ else D)ER -DF 32

  (12)可在C程序中用作用户标识符的一组标识符是

  A)and B)Date C)Hi D)case

  _2007 y-m-d Dr.Tom Bigl

  (13)以下对C语言函数的有关描述中,正确的是

  A)在C语言中调用函数时,只能把实参的值传给形参,形参的值不能传送给实参

  B)C函数既可以嵌套定义又可以递归调用

  C)函数必须有返回值,否则不能使用函数

  D)函数必须有返回值,返回值类型不定

  (14)若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是

  A)函数的实参和其对应的形参共占同一存储单元 B)形参只是形式上的存在,不占用具体存储单元

  C)同名的实参和形参占同一存储单元 D)函数的形参和实参分别占用不同的存储单元

  (15)现有定义int a;double b;float c;char k;,则表达式a/b+c-k值的类型为:

  A)int B)double C)float D)char

  (16)以下关于long、int和short类型数据占用内存大小的叙述中正确的是

  A)均占4个字节 B)根据数据的大小来决定所占内存的字节数

  C)由用户自己定义 D)由C语言编译系统决定

  (17)有以下程序段

  int j;float y;char name[50];

  scanf("%2d%f%s",&j,&y,name);

  当执行上述程序段,从键盘上输入55566 7777abc后,y的值为

  A)55566.0 B)566.0 C)7777.0 D)566777.0

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

  i=0;

  do printf("%d,",i);while(i++);

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

  其输出结果是

  A)0,0 B)0,1 C)1,1 D)程序进入无限循环

  (19)下列程序的运行结果是

  #include "stdio.h"

  main()

  { int x=-9,y=5,z=8;

  if(x

  if(y<0)z=0;

  else z+=1;

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

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

  (20)若程序执行时的输入数据是"2473",则下述程序的输出结果是

  #include

  void main()

  { int cs;

  while((cs=getchar())!=; '\n')

  {switch(cs-'2')

  { case 0

  case 1: putchar(cs+4);

  case 2: putchar(cs+4);

  break;

  case 3: putchar(cs+3); default: putchar(cs+2); } } }

  A)668977

  B)668966

  C)6677877

  D)6688766

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

  main()

  { int a,i;a=0;

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

  { switch(i)

  { case 0:

  case 3:a+=2;

  case 1:

  case 2:a+=3;

  default:a+=5; }

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

  A)31 B)13 C)10 D)20

  (22)现有如下程序段

  #include "stdio.h"

  main()

  { int k[30]={12,324,45,6,768,98,21,34,453,456};

  int count=0,i=0;

  while(k[i])

  { if(k[i]%2==0||k[i]%5==0)count++;

  i++; }

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

  则程序段的输出结果为

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

  (23)若有以下程序

  #include

  int a[]={2,4,6,8};

  main()

  { int i;

  int *p=a;

  for(i=0;i<4;i++)a[i]=*p;

  printf("%d\n",a[2]);}

  上面程序的输出结果是

  A)6 B)8 C)4 D)2

  (24)有以下程序

  #include

  main()

  { int i,j,m=55;

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

  for(j=3;j<=i;j++)m=m%j;

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

  }

  程序的运行结果是

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

  (25)已知字符′A′的ASCII码值是65,字符变量cl的值是′A′,c2 的值是′D′。执行语句printf("%d,%d",c1,c2-2);后,输出结果是

  A)A,B B)A,68 C)65,66 D)65,68

  (26)下列程序是用来判断数组中特定元素的位置所在的。

  #include

  #include

  int fun(int *s, int t, int *k)

  { int i;

  *k=0;

  for(i=0;i

  if(s[*k]

  return s[*k]; }

  main()

  { int a[10]={ 876,675,896,101,301,401,980,431,451,777},k;

  fun(a, 10, &k);

  printf("%d, %d\n",k,a[k]);}

  如果输入如下整数:876 675 896 101 301 401 980 431 451 777

  则输出结果为

  A)7,431 B)6 C)980 D)6,980

  (27)下面程序的文件名为t.exe,在DOS下输入的命令行参数为:t to meet me<回车>

  则程序输出的结果是

  #include "stdio.h"

  main(argc,argv)

  int argc;char *argv[];

  { int i;

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

  A)3 B)4 C)2 D)以上答案都不正确

  (28)有如下程序

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

  int *p=&a[3],b;b=p[5];

  则b的值是

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

  (29)以下叙述中错误的是

  A)改变函数形参的值,不会改变对应实参的值 B)函数可以返回地址值

  C)可以给指针变量赋一个整数作为地址值 D)当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL

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

  #include

  main()

  { int a[]={1,2,3,4,5,6,7,8,9,0},*p;

  p=a;

  printf("%d\n",*p+9);}

  A)0 B)1 C)10 D)9

  (31)有下面程序段

  #include "stdio.h"

  #include "string.h"

  main()

  { char a[3][20]={{"china"},{"isa"},{"bigcountry!"}};

  char k[100]={0},*p=k;

  int i;

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

  { p=strcat(p,a[i]);}

  i=strlen(p);

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

  则程序段的输出结果是

  A)18 B)19 C)20 D)21

  (32)若有定义: char *st= "how are you "; ,下列程序段中正确的是

  A)char a[11], *p; strcpy(p=a+1,&st[4]); B)char a[11]; strcpy(++a, st);

  C)char a[11]; strcpy(a, st); D)char a[], *p; strcpy(p=&a[1],st+2);

  (33)有以下程序

  #include

  int fun(char s[])

  { int n=0;

  while(*s<=′9′&&*s>=′0′) {n=10*n+*s-′0′;s++;}

  return(n);

  }

  main()

  { char s[10]={′6′,′1′,′*′,′4′,′*′,′9′,′*′,′0′,′*′};

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

  }

  程序的运行结果是

  A)9 B)61490 C)61 D)5

  (34)设有定义:char p[]={′1′,′2′,′3′},*q=p;,以下不能计算出一个char型数据所占字节数的表达式是

  A)sizeof(p) B)sizeof(char) C)sizeof(*q) D)sizeof(p[0])

  (35)有以下函数

  int aaa(char *s)

  { char *t=s;

  while(*t++);

  t--;

  return(t-s);

  }

  以下关于aaa函数的功能的叙述正确的是

  A)求字符串s的长度 B)比较两个串的大小 C)将串s复制到串t D)求字符串s所占字节数

  (36)当用户要求输入的字符串中含有空格时,应使用的输入函数是

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

  (37)下列选项中错误的说明语句是

  A)char a[]={′t′,′o′,′y′,′o′,′u′,′\0′}; B)char a[]={"toyou\0"};

  C)char a[]="toyou\0"; D)char a[]=′toyou\0′;

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

  int f()

  { static int i=0;

  int s=1;

  s+=i; i++;

  return s; }

  main()

  { int i,a=0;

  for(i=0;i<5;i++)a+=f();

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

  A)20 B)24 C)25 D)15

  (39)下列程序的输出结果是

  #include "stdio.h"

  #define M(x,y) x%y

  main()

  { int a,m=12,n=100;

  a=M(n,m);

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

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

  (40)假定当前盘符下有两个如下文本文件:

  文件名 a1.txt a2.txt

  内容 123# 321#

  则下面程序段执行后的结果为

  #include "stdio.h"

  void fc(FILE *p)

  { char c;

  while((c=fgetc(p))!=′#′)putchar(c);}

  main()

  { FILE *fp;

  fp=fopen("a1.txt","r");

  fc(fp);

  fclose(fp);

  fp=fopen("a2.txt","r");

  fc(fp);

  fclose(fp);

  putchar('\n');}

  A)123321 B)123 C)321 D)以上答案都不正确

  二、填空题

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

  (1)软件定义时期主要包括 【1】 和需求分析两个阶段。

  (2)软件维护活动包括以下几类:改正性维护、适应性维护、 【2】 维护和预防性维护。

  (3)数据的逻辑结构有线性结构和 【3】 两大类。

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

  (5)在ER图中,矩形表示? 【5】 。

  (6)阅读下面程序,则执行后的输出结果是 【6】 。

  #include "stdio.h"

  main()

  { int x,y,z;

  x=1;y=2;z=3;

  if(x>y)if(x>z)printf("%d",x);

  else printf("%d",y);

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

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

  main()

  { int y=9;

  for(; y>0; y--)

  if (y%3==0)

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

  (8)有以下程序段,且变量已正确定义和赋值

  for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k+1));

  printf("s=%f\n\n",s);

  请填空,使下面程序段的功能与之完全相同

  s=1.0;k=1;

  while(? 【8】 ?){s=s+1.0/(k*(k+1));? 【9】 ?;}

  printf("s=%f\n\n",s);

  (9)设有以下定义和语句,则*(*(p+2)+1)的值为 【10】 。

  int a[3][2]={10, 20, 30, 40, 50, 60}, (*p)[2];

  p=a;

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

  #include

  main()

  { int i;

  for(i=′a′;i<′f′;i++,i++)printf("%c",i-′a′+′A′);

  printf("\n");

  }

  (11)以下程序中函数f的功能是在数组x的n个数(假定n个数互不相同)中找出最大最小数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。请填空。

  #include

  void f(int x[],int n)

  { int p0,p1,i,j,t,m;

  i=j=x[0]; p0=p1=0;

  for(m=0;m

  { if(x[m]>i) {i=x[m];p0=m;}

  else if(x[m]

  }

  t=x[p0];x[p0]=x[n-1];x[n-1]=t;

  t=x[p1];x[p1]=? 【12】 ; 【13】 =t;

  }

  main()

  { int a[10],u;

  for(u=0;u<10;u++) scanf("%d",&a[u]);

  f(a,10);

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

  printf("\n");

  }

  (12)mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。

  int mystrlen(char *str)

  { int I;

  for(I=0; 【14】 != '\n';I++);

  return(I); }

  (13)阅读下列程序,则程序的输出结果为 【15】 。

  #include "stdio.h"

  struct ty

  { int data;

  char c; };

  main()

  { struct ty a={30,′x′};

  fun(a);

  printf("%d%c",a.data,a.c); }

  fun(struct ty b)

  { b.data=20;

  b.c=′y′; }一、选择题  1)D 【解析】 软件生命周期分为软件定义、软件开发及软件运行维护3个阶段。本题中,详细设计、软件编码和软件测试都属于软件开发阶段;维护是软件生命周期的最后一个阶段,也是持续时间最长,花费代价最大的一个阶段,软件工程学的一个目的就是提高软件的可维护性,降低维护的代价。

  (2)D 【解析】 测试的目的是发现软件中的错误。经验表明,程序中存在错误的概率与该程序中已发现的错误成正比。这一现象说明,为了提高测试效率,测试人员应该集中对待那些错误群集的程序。

  (3)D 【解析】 面向对象思想中的三个主要特征是:封装性、继承性和多态性。

  (4)A 【解析】 当今主导的程序设计风格是"清晰第一,效率第二"的观点。结构化程序设计思想提出之前,在程序设计中曾强调程序的效率,而在实际应用中,人们更注重程序的可理解性。

  (5)B 【解析】 软件设计包括软件结构设计、数据设计、接口设计和过程设计。其中,结构设计是定义软件系统各主要部件之间的关系;数据设计是将分析时创建的模型转化为数据结构的定义;接口设计是描述软件内部、软件和操作系统之间及软件与人之间如何通信;过程设计则是把系统结构部件转换成软件的过程性描述。

  (6)C 【解析】 数据处理的最小单位是数据项;由若干数据项组成数据元素;数据是指能够被计算机识别、存储和加工处理的信息载体;数据结构是指数据之间的相互关系和数据运算。

  (7)D 【解析】 假设线性表的长度为n,则在最坏情况下,冒泡排序要经过n/2遍的从前往后的扫描和n/2遍的从后往前的扫描,需要的比较次数为n(n-1)/2。

  (8)C 【解析】 满二叉树是指除最后一层外,每一层上的所有结点都有两个叶子结点。在满二叉树中,层上的结点数都达到最大值,即在满二叉树的第k层上有2k-1个结点,且深度为m的满二叉树有2m-1个结点。

  (9)B 【解析】 数据库管理系统(Database Management System,简称DBMS)是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等,数据库管理系统是数据库系统的核心。

  (10)C 【解析】 在关系模型数据库中,基本结构是二维表,这种二维表称为关系。关系的列称为属性,一个具有N个属性的关系称为N元关系。

  (11)B 【解析】 合法的标识符是由字母、数字和下划线组成,并且第一个字符必须为字母或下划线,用户定义的标识符不能与关键字相同。选项A),数字不能为第一个字母,auto为关键字;选项C)中,也是数字不能为第一个字母,else为关键字;选项D)中负号不合法。

  (12)A 【解析】 在C语言中,合法标识符的命名规则是:标识符可以由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线。C语言的标识符可以分为关键字、预定义标识符和用户标识符。选项B)和C)中的横线以及点都不合法,选项D)中的case为C语言关键字。

  (13)A 【解析】 C语言中的函数可以进行递归调用,但是不能在函数中定义函数,函数不用有返回值,若有返回值,则返回值类型必确定。

  (14)D 【解析】 在内存中,实参单元与形参单元是不同的单元。在C语言中,仅在调用函数时,给形参分配存储单元,并将实参对应的值传递给形参,调用结束后,形参单元被释放,实参单元仍保留并维持原值。

  (15)B 【解析】 双目运算中两边运算量类型转换规律:

  运算数1运算数2转换结果类型

  短整型 长整型 短整型->长整型

  整型 长整型 整型->长整型

  字符型 整型 字符型->整型

  有符号整型 无符号整型 有符号整型->无符号整型

  整型 浮点型 整型->浮点型

  在a/b的时候,a、b的类型不一致,根据类型转换规则,把整型转换成double类型,之后的加、减类似。转化规则为char,short->int->unsigned->long->double←float。

  (16)D 【解析】 在ANSI标准中,long、int和short分别占用4、2和2个字节。但实际上对于某些C编译系统,int和short都占用4个字节,所以说各种类型数据占用内存大小是由选择何种C编译系统决定的。

  (17)B 【解析】 本题考查通过scanf函数输入数据时的格式控制问题。变量j的格式控制为"%2d",即只接收输入数据的前两位,从第三位开始直到空格之间的输入都会被保存到变量y中,因为y为浮点型数据,所以输出结果为选项B)。

  (18)B 【解析】 对于do…while循环,程序先执行一次循环体,再判断循环是否继续。本题先输出一次i的值"0,",再接着判断表达式i++的值,其值为0,所以循环结束。此时变量i的值经过自加已经变为1,程序再次输出i的值"1"。

  (19)D 【解析】 if…else语句的执行过程如下,首先计算if后面一对圆括号内表达式的值,若表达式的值为非0,执行if子句,然后跳过else子句,去执行if语句后的下一条语句;若表达式的值为0,跳过if子句,去执行else子句,接着去执行if语句后的下一条语句。C语言的语法规定,else子句总是与前面最近的不带else的if匹配,与书写格式无关,本题目的后一个if-else相当于嵌套在第一个if子句里,相当于x=0时,z=z+1。

  (20)A 【解析】 本题主要考查switch语句的使用方法。switch语句的执行过程为:进入switch结构后,对条件表达式进行运算,然后从上至下去找与条件表达式值相匹配的case,以此作为入口,执行switch结构中后面的各语句,直到遇到break语句,则跳出switch语句,如果各case都不匹配时,则执行default后面的语句。

  (21)A 【解析】 本题考查用于多分支选择的switch语句, 其一般形式为:

  switch(表达式)

  {

  case常量表达式1: 语句1;

  case常量表达式2: 语句2;

  …

  case常量表达式n: 语句n;

  default : 语句n+1;

  }

  其语义是:计算表达式的值,并逐个与其后的常量表达式值进行比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有 case后的语句;如表达式的值与所有case后的常量表达式均不相等时,则执行default后的语句。

  (22)D 【解析】 在C语言中,定义一维数组的语句一般形式如下:

  类型名 数组名[常量表达式];

  一维数组的引用形式为:数组名[下标表达式]。count表示能被2整除或被5整除的个数,i则计算有多少个数组元素。

  (23)D 【解析】 在C语言中,数组元素下标是从0开始的;指针变量p指向数组的首地址。for循环语句中,指针变量p始终指向数组的首地址,因而执行循环赋值语句后数组各元素的值均变为2。

  (24)B 【解析】 本题考查循环语句的嵌套以及条件的判断问题。在程序中,内层循环判断条件为"?j<=i?",而j的初值为3,故当i的值为1和2时,内层循环体都不会被执行。只有当i和j都等于3时才会执行一次。m的值为55对3取模,计算结果为1。

  (25)C 【解析】 在C语言中,字符型数据在内存中的存储形式是ASCII码值。当需要以整型格式输出字符时,输出的也是ASCII码值。字符'A'和'D'的ASCII码值分别为65和68。

  (26)D 【解析】 本题中直接使用指针变量k,但在使用时要注意对k的指针运算。此外,一开始应知道*k的值为数组中的某一下标值,即*k=0,本函数的功能是找出数组中的最大元素的位置及最大元素的值。

  (27)B 【解析】 argc中存入的是命令行中字符串的个数。argv是一个指向字符型的指针数组的指针。

  (28)C 【解析】 p=&a[3]将指针指向数组a的第4个元素,p[5]指向数组a的第9个元素,而a[8]=9,所以b=9。

  29)C 【解析】 函数形参和实参分别占用不同的内存单元,改变形参的值不会影响对应实参的值,选项A)正确。指针类型的函数可以返回地址值,选项B)正确。在文件stdio.h中,NULL被定义为void 型的指针,选项D)也正确。指针变量的值只能是存储单元地址,而不能是一个整数,选项C)错误。

  (30)C 【解析】 此题考查了指针引用一维数组元素的方法。*p+9因为运算符"*"的优先级高于"+",所以输出结果为p指向的元素1,然后加9,值为10。

  (31)B 【解析】 字符串连接函数strcat的调用形式如下:strcat(s1,s2)。此函数将s2所指字符串的内容连接到s1所指的字符串后面,并自动覆盖s1串末尾的尾标,函数返回s1的地址值。

  (32)A 【解析】 本题综合考查字符数组的赋值和strcpy函数的用法。C语言不允许用赋值表达式对字符数组赋值,如下面的语句就是非法的:str1=?"China",?如果想把"China"这5个字符放到数组str1中,除了逐个输入外,还能使用strcpy函数,该函数的功能是将一个字符串复制到一字符数组中。例如:strcpy(str1,"China")或strcpy(str1,str2);注意,不能企图用以下语句来实行赋值(将str2的值传给str1):str1=str2;不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。

  strcpy函数的结构是:strcpy(字符数组1,字符串2)

  其中,需要注意的是,字符数组1的长度不应小于字符串2的长度,"字符数组1"必须写成数组名形式,如(str1),"字符串2"可以是字符数组名,也可以是字符串常量,不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。

  (33)C 【解析】 在fun函数中,while循环的功能是:逐个取字符数组s的字符判断其是否是数字。若是则将其作为个位数字保存到变量n中,n的原数据的各个数位将相应左移一个10进制位。当指针s指向数组的第3位时,循环条件不成立,循环结束,返回n 的值,输出n的值为61。

  (34)A 【解析】 在本题中,p和q同为指向字符类型数据的指针。*q 和p[0]同为字符型数据。选项B)、C)和D)都符合题目的要求;选项A)计算得出的是指针类型数据所占的内存字节数。

  (35)A 【解析】 循环开始前,指针t和s都指向字符串的起始位置,然后通过while循环判断t指向的位置是否为空,同时让t向右移动一位。while循环结束时,t自减1,此时t指向的位置是字符串的结束标志'\0'处,故t-s的值是字符串的长度,并不包括结束标志。

  (36)C 【解析】 本题综合考查了输入函数的使用。scanf函数会将空格视为分隔符,getchar函数只能输入单个字符,getc函数是文件操作函数,显然都不符合题意。通过gets函数输入字符串时,输入的空格被认为是字符串的一个字符。

  (37)D 【解析】 通过赋初值的方式给一维数组赋字符串,可以用给一般数组赋初值的相同方式给一维字符数组赋字符串,也可以在赋值时直接赋字符串常量。选项B)和C)后面的'\0'是多余的,在C语言中,系统会自动在字符串的结尾处加上一个字符'\0'作为串的结束标记。

  (38)D 【解析】 函数的静态局部变量在编译时就赋初值,即只赋初值一次,在程序运行时它已有初值,以后每次调用函数时不再重新赋值,而只是保留上次函数调用结束时的值。

  (39)C 【解析】 带参数的宏定义命令行形式如下: #define 宏名(形参表) 替换文本

  在编译的时候编译预处理程序用"替换文本"来替换宏,即M(n,m)被替换为n%m,之后计算,将计算的结果赋给a。注意,宏替换是在编译时由预处理程序完成的,宏替换不占用运行的时间,而函数调用是在程序运行时进行的,在函数的调用过程中需要占用一系列的处理时间。

  (40)A 【解析】 本题的功能是顺序的读两个文本文件,依次输出。当打开文件时出现错误,fopen函数将返回NULL。

  二、填空题

  (1)【1】 可行性研究 【解析】 软件生命周期一般包括可行性研究与需求分析、设计、实现、测试、交付使用以及维护等,还可以将软件生命周期分为三个阶段:①软件定义阶段:可行性研究和需求分析;②软件开发阶段:设计、实现和测试;③软件运行维护阶段:交付使用和维护。

  (2)【2】 完善性 【解析】 软件维护活动包括以下几类:改正性维护、适应性维护、完善性维护和预防性维护。改正性维护是指在软件交付使用后,为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,应当进行的诊断和改正错误的过程;适应性维护是指为了使软件适应变化,而去修改软件的过程;完善性维护是指为了满足用户对软件提出的新功能与性能要求,需要修改或再次开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性;预防性维护是为了提高软件的可维护性、可靠性等,为以后的进一步改进软件打下良好基础。

  (3)【3】 非线性结构 【解析】 数据的逻辑结构有线性结构和非线性结构两大类。

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

  (5)【5】 实体 【解析】 在E-R图中用矩形表示实体;椭圆形表示属性;菱形表示联系。

  (6)【6】 3 【解析】 C语言的语法规定:else子句总是与前面最近的不带else的if相结合。因为x不大于y,所以执行printf("%d\n",z);语句。

  (7)【7】 852 【解析】 循环前,变量y的值为9,其中,循环语句在y大于0情况下循环,每次循环后y的值都减1。循环体是当y能被3整除时输出表达式--y,输出的是减1后的y值。这样,第一次循环因y为9,能被3整除,输出8,y也变成8。又经两次循环,y的值变为6,又让y减1变成5,并输出5;又经两次循环,y的值变成3,让y减1变成2,输出2;再经两次循环后,y的值变成0,结束循环,所以程序输出852。

  (8)【8】 k<=n 【9】 k++ 【解析】 本题要求将一个for循环改成while循环。首先要保证循环条件相同,在for循环中,每次执行循环之后,循环控制变量k都会加1,而while循环则没有,故需在循环体中增加改变k数值的语句"k++;"?。

  9)【10】 60 【解析】 本题中,代码定义3行2列的二维数组a,定义指向两个元素的一维数组指针p,并让p指向两维数组a的首行,则代码*(*(p+2)+1)中的p+2指向两维数组a的第三行a[2],*(p+2)指向a[2][0],?*(p+2)?+1指向a[2][1],*(*(p+2)+1)是引用a[2][1],其值是60

  (10)【11】 ACE 【解析】 在本题中,for循环体每执行完一次,变量i的值自加两次。i的初值为'a',执行一次循环后变为'c',之后再变成'e',当其变为'g'时,循环条件若不满足,循环终止,故本题共输出3个字符。表达式"i-'a'+?'A'?"即表示输出i对应的大写字母,结果为ACE。

  (11)【12】 x[0] 【13】 x[0] 【解析】 函数f( )通过for循环逐个比较数组x中的元素,循环结束后,p0和p1分别表示最大值和最小值在数组中的下标位置,然后按照题意将最大值x[p0]和数组的最后一个元素x[n-1]交换位置,再将最小值x[p1]和第一个元素(x[0]) 进行交换,所以空白处应该填入x[0]。

  (12)【14】 *(str+I)或str[I] 【解析】 str是指针变量,它指向字符型数据,在循环过程中,可以用 *(str+I)来访问字符串中的第I个元素,判断是否为结束标志,如果不是,I=I+1,继续取下一个元素进行判断,直到 *(str+I)的值为'\0'为止,也可以用下标的方式引用字符,如*(str+I)相当于str[I]。

  (13)【15】 30x 【解析】 本题的参数传递属于值传递,所以被调用函数内不能改变调用函数中的数据。

 

 

 

 

 

【全国计算机等级考试二级C语言-笔试第一套】相关文章:

全国计算机等级考试二级C语言笔试第二套10-19

全国计算机等级考试二级C语言06-27

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

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

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

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

全国计算机等级考试二级C笔试试卷(含参考答案)08-04

2007年3月全国计算机等级考试二级C语言笔试真题参考答案08-21

计算机等级考试二级C++笔试选择题06-27

全国计算机等级考试二级visualBasic笔试试卷08-07