全国二级C全真模拟.docx

上传人:b****2 文档编号:2438581 上传时间:2023-05-03 格式:DOCX 页数:39 大小:31.88KB
下载 相关 举报
全国二级C全真模拟.docx_第1页
第1页 / 共39页
全国二级C全真模拟.docx_第2页
第2页 / 共39页
全国二级C全真模拟.docx_第3页
第3页 / 共39页
全国二级C全真模拟.docx_第4页
第4页 / 共39页
全国二级C全真模拟.docx_第5页
第5页 / 共39页
全国二级C全真模拟.docx_第6页
第6页 / 共39页
全国二级C全真模拟.docx_第7页
第7页 / 共39页
全国二级C全真模拟.docx_第8页
第8页 / 共39页
全国二级C全真模拟.docx_第9页
第9页 / 共39页
全国二级C全真模拟.docx_第10页
第10页 / 共39页
全国二级C全真模拟.docx_第11页
第11页 / 共39页
全国二级C全真模拟.docx_第12页
第12页 / 共39页
全国二级C全真模拟.docx_第13页
第13页 / 共39页
全国二级C全真模拟.docx_第14页
第14页 / 共39页
全国二级C全真模拟.docx_第15页
第15页 / 共39页
全国二级C全真模拟.docx_第16页
第16页 / 共39页
全国二级C全真模拟.docx_第17页
第17页 / 共39页
全国二级C全真模拟.docx_第18页
第18页 / 共39页
全国二级C全真模拟.docx_第19页
第19页 / 共39页
全国二级C全真模拟.docx_第20页
第20页 / 共39页
亲,该文档总共39页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

全国二级C全真模拟.docx

《全国二级C全真模拟.docx》由会员分享,可在线阅读,更多相关《全国二级C全真模拟.docx(39页珍藏版)》请在冰点文库上搜索。

全国二级C全真模拟.docx

全国二级C全真模拟

(1)在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种:

前序遍历、【1】遍历和后序遍历。

  答案:

【1】中序

  评析:

在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种:

前序遍历、中序遍历和后序遍历。

  前序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先访问根结点,然后遍历左子树,最后遍历右子树;并且遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。

  中序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后访问根结点,最后遍历右子树;并且遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。

  后序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历右子树,然后访问根结点,最后遍历左子树;并且遍历左、右子树时,仍然先遍历右子树,然后访问根结点,最后遍历左子树。

  

(2)结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、【2】和限制使用goto语句。

  答案:

【2】模块化

  评析:

结构化程序设计方法的主要原则可以概括为自项向下、逐步求精、模块化和限制使用goto语句。

  自顶向下:

程序设计时,应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。

不要一开始就过多追求众多的细节,先从最上层总目标开始设计,逐步使问题具体化。

  逐步求精:

对复杂问题,应设计一些子目标作过度,逐步细化。

  模块化:

一个复杂问题,肯定是由若干稍简单的问题构成。

模块化是把程序要解决的总目标分解为分目标,再进一步分解为具体的小目标,把每个小目标称为一个模块。

  限制使用goto语句。

  (3)软件测试是保证软件质量的重要手段,而软件测试的主要和重要的测试方法是通过测试数据和【3】的设计来实现。

  答案:

【3】测试实例

  评析:

进行软件测试时,应精心设计测试实例和选择测试数据,以对系统进行全面测试。

  (4)数据库系统的三级模式分别为【4】模式、内部级模式与外部级模式。

  答案:

【4】概念或概念级

  评析:

数据库系统在其内部具有三级模式及二级映射,三级模式分别是概念级模式、内部级模式和外部级模式。

  概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户(应用)公共数据视图。

  内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法,如数据存储的文件结构、索引、集簇及hash等存取方式与存取路径,内模式的物理性主要体现在操作系统及文件级上,.它还未深入到设备级上(如磁盘及磁盘操作)。

  外模式也称子模式或用户模式,它是用户的数据视图,也就是用户所见到的数据模式,它由概念模式推导面出。

  (5)数据字典是各类数据描述的集合,它通常包括5个部分,即数据项、数据结构、数据流、【5】和处理过程。

  答案:

【5】数据存储

  评析:

数据字典是各类数据描述的集合,它通常包括5个部分,即数据项,是数据的最小单位;数据结构,是若干数据项有意义的集合;数据流,可以是数据项,也可以是数据结构,表示(更多考试资讯尽在

  (6)下面程序的输出是【6】。

  main()

  {intarr[10],i,k=O:

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

  arr[i]=i;

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

  k+=arr[I]+i;

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

  答案:

【6】12

  评析:

本题通过第一个for循环将数组arr[O]-arr[9]分别赋值为0-9,通过第二个for循环的三次循环累加,求出结果为12,具体分析如下:

  i=l:

k=0+arr[1]+l即k=2:

  i=2:

k=2+arr[2]+2即k=6:

  i=3:

k=6+arr[3]+3即k=12;

  (7)若a=10,b=20,则表达式!

(a

  答案:

【7】0

  评析:

已知a=10,b=20,所以逻辑表达式a

,表示反操作,所以整个语句的值应当为false,即为0。

  (8)有以下程序:

  intfa(intx){returnx*x;}

  intfb(intx){returnx*x*x;}

  intf(int(*f1)(),int(*f2)(),intx)

  {returnf2(X)-n(x);}

  main()

  {inti;i=f(fa,fb,2);printf("%d\n",i);}

  程序运行后,输出结果是【8】。

  答案:

【8】4

  评析:

在主函数中调用函数f,函数f有三个参数,形参f1与f2分别是两个指向函数的指针。

在f中执行r2(x)-f1(x),实际上是执行了fb

(2).fa

(2),故执行i=(fa,fb,2)后i的值为2^3-2^2=4。

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

  main()

  {enumem{eml=3,em2=1,em3};

  char*aa[]={"AA","BB","CC","DD"};

  primf("%s%s%s\n",aa[eml],aa[em2],aa[em3]);

  }

  答案:

【9】DDBBCC

  评析:

c语言对枚举的定义规定:

在枚举中声明的各个枚举元素,如果没有明确指出某个枚举元素的值,它的上一个元素存在并有明确值的情况下,这个枚举元素的值为其上一个元素的值+1。

  在本题中,没有明确说明枚举元素em3的值,则em3=em2+l=1+l=2,进而可知,在printf()打印函数中,要打印的数组元素是aa[3]、aa[1]、aa[2],因此最后的打印结果应当为"DDBBCC"。

  (10)若想通过以下输入语句使a=5.0,b=4,c=3,则输入数据的形式应该是【10】。

  intb,c;floata;

  scanf("%£%d,c=%d",&a,&b,&c)

  答案:

【10】5.0,4,c=3

(1)下面的if语句与y=(x>=10)?

3*x-11:

(x<1)?

x:

2'x.1;的功能相同,请补充完整。

  If( 【1】 )

  if( 【2】 )y=2*x-1;

  elsey=x;

  elsey=3*x-11:

  答案:

【1】x<10

  【2】x>=1

  评析:

条件表达式的一般形式为:

表达式l?

表达式2:

表达式3

  条件运算符的执行顺序:

先求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值;若表达式1的值为O(假),则求解表达式3,表达式3的值就是整个条件表达式的值。

y。

(x>。

10)?

3。

x-11:

(x>=1)?

x:

2*x-1;的功能是先求(x>=1)?

x:

2*x-1:

的值,所的的结果再与前面的语句构成条件表达式进行求值。

所以【1】应该填x<10,【2】应该填x>=1。

  

(2)以下程序中用户由键盘输入一个文件名,然后输入一串字符(用拌结束输入)存放到此

  文件中,形成文本文件,并将字符的个数写到文件的尾部。

请填空。

  #include

  main()

  { FILE *fp;

  char ch,fname[32];imcount=0;

  printf("Inputthefilename:

");

  scanf("%s",fname);

  if((币=fopen( 【3】 ,"w+"))==NULL)

  { print印Can'topenfile:

%s\n",fname};exit(0);}

  printf("Enterdata:

in");

  while((ch=getchar())!

_1≠)')

  { fputc(ch,fp);count++;}

  fprintf( 【4】,"\n%d\n",count);

  fclose(fp);

  }

  答案:

【3】fname

  【4】fp

  评析:

fopen()函数实现打开文件的功能,通常的调用方式为:

FILE*fp;fp=fopen(文件名,使用文件方式),因此,第一个横线处要求填写要打开文件的名字fname。

fprintf()函数的一般调用方式为:

fprintf(文件指针,格式字符串,输出表列),所以第二个横线处应填写fb。

  (3)函数voidfun(noat*sn,intn)的功能是:

根据以下公式计算s,计算结果通过形参指针sn传回;n通过形参传入,n的值大于等于0。

请补全程序。

  S=I-1/3+1/5-1/7+...+1/(2n+1)

  voidfun(float*sn,intn)

  { floats=O.O,w,f=-1.0;

  inti=0:

  for(I=0;i<=n;i+(更多考试资讯尽在

  {f= 【5】 *f;

  w=f/(2*i+1);

  S+=W:

  }

  【6】 =s;

  }

  答案:

【5】-1或-1.0

  【6】*sn

  评析:

由于在对s求和时,相诹较畹姆鸥蘸孟喾矗诤齠un中没有对数据进行取反的操作,故第一空的目的是对数据进行取反,以保证序列中相邻两项的符号不同。

故第一个应填-1或-1.0。

在执行完循环体后,要将求和结果通过指针参数的形式传递给调用fun的函数,故第二空应填*sn。

  (4)下面的函数strcat(strl,str2)实现将字符串str2拼接到字符串strl后面的功能。

请填空使之完整。

  Char*strcat(strl,str2)

  char*strl.*str2;

  { char*t=strl;

  while( 【7】 )strl++;

  while( 【8】 );

  return(t);}

  答案:

【7】*strl或*str1!

='\0'或*str1!

=0或*strl!

=NULL

  【8】*strl++=*str2++或*strl++=*str2,*str2++

  评析:

函数strcat(strl,str2)实现将字符串str2连接到字符串strl后面,所以首先要找到字符串strl的串尾,根据c语言的语法规定,一个串的串尾一定是一个隐含字符"\0",而在程序中,对字符串中字符的访问是通过两/卜指针变量来完成的,因此要找到字符串strl的串尾,要判断*strl是否为"\0",要找到字符串str2的串尾,要判断*str2是否为"\0",程序中必须可以使字符串中字符逐一顺序体现,所以在题中我们应填写"*str1"和"*strl++=*str2++"。

  (5)以下函数fun用于求两个整数a和b的最大公约数。

  fun(a'b)

  inta'b;

  {intI,J,m,n;

  if(a>b)

  {m=a;a=b; 【9】 ;}

  i=a.j=b;

  while((n= 【10】 )!

=O)

  {j=i;i= 【11】 ;}

  retum(i);

  }

 答案:

【9】b=m

 【10】j%i

 【11】n

 评析:

函数中的变量i和j分别存放两个形参的最小数和最大数,在语句i=a和i=b执行之前,要将a和b分别变为最小数和最大数,当a>b时,程序使用中间变量将两者交换,所以题中第一个空中应当填写"b=m";为求两个整数的最大公约数,程序的where循环条件必须为j整除i成立,所以题_中第二个空中应当填写"j%i";程序要通过i的值返回最大公约数,因此在循环中要将每次整除的公约数赋给i,以保证最后返回的是两个整数的最大公约数,所以第三个空中应当填写"n"。

(1)对于长度为n的顺序存储的线性表,当随机插入和删除一个元素时,需平均移动元素的个数为【l】。

  答案:

【1】n/2

  评析:

删除一个元素,平均移动的元素个数为(n-l+n-2+……+0)n=(n-1)/2;插入一个元素,平均移动元素个数为(n+n-l+n-2+……+1)n=(n+1)/2;所以总体平均移动元素个数为n/2。

  

(2)注释说明了程序的功能,它分为【2】注释和功能性注释。

  答案:

【2】序言性

  评析:

注释一般分为序言性注释和功能性注释。

  (3)软件测试中路径覆盖测试是整个测试的基础,它是对软件【3】进行测试。

  答案:

【3】结构

  评析:

路径测试是白盒测试方法中的一种,它要求对程序中的每条路径最少检查一次,目的是对软件的结构进行测试。

  (4)数据库技术的主要特点为数据的集成性、数据的高【4】和低冗余性、数据独立性和数据统一管理与控制。

  答案:

【4】共享性

  评析:

数据库技术的主要特点有以下几个方面:

数据的集成性,数据的高共享性与低冗余性,数据韵独立性,数据统一管理与控制。

  (5)数据元素之间【5】的整体称为逻辑结构。

  答案:

【5】逻辑关系

  评析:

数据元素之间逻辑关系的整体称为逻辑结构。

数据的逻辑结构就是数据的组织形式。

  (6)若有定义intm=5,y=2,则执行表达式y+=y-=m*=y后,y的值为【6】。

  答案:

【6】.16

  评析:

将赋值运算符右侧的"表达式"的值赋给左侧的变量,并且赋值运算符按照"白右而左"的结合顺序,本题表达式应先算m的值为10,再运算y的值为8,最后计算y=y+(-8)=-8+(-8)=-16。

  (7)若x和y都是double型变量,]ix的初值为3.0,y的初值为2.0,则表达式pow(y,fabs(x)(更多考试资讯尽在

  答案:

【7】8.000000

  评析:

fabs函数功能是求x的绝对值,计算结果为double型。

pow功能是计算x的y次方的值,计算结果同样为double型。

所以本题表达式相当于2.0的3.0次方,结果为8.000000。

  (8)设有chara,b;,若要通过a&b运算屏蔽掉a中的其它位,只保留第2位和第8位(右起为第1位),则b的二进制是【8】。

  答案:

【8】10000010

  评析:

运算"&"的规则是只有当两个相应的二进制位都为1时,该位的结果才为1。

要保留第2、8位,只要将其与二进制数10000010相与。

  (9)下列程序执行后输出的结果是【9】。

  f(inta)

  {staticc=0;

  C=a+C++:

  return(c);

  }

  main()

  {inta=2,i,k;

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

  k=f(a++);

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

  }

  答案:

【9】7

  评析:

在程序执行时,static变量仅初始化一次,下次使用时将使用上次保存的值。

  (10)下面程序执行后输出的结果是【10】。

  intm=13:

  intfun(intx,inty)

  {intm=3;

  return(x*y-m);

  }

  main()

  {inta=7,b=5;

  printf("%d\n",fun(a,b)/m);

  }

  答案:

【10】2

  评析:

本题变量m既是外部变量(值是13),又是fun函数的局部变量(值为3)。

函数fun(x*y-m)的值为7*5-3=32,在main函数中,ftm(a,b)/m中的m应取外部变量的值13,因此输出2。

(1)以下程序的输出结果是________。

  #include

  #defineSQR(x)x*x

  main()

  { inta,k=3;

  a=++SQR(k+1);

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

  }

  A)8

  B)9

  C)17

  D)20

  答案:

B

  评析:

本题宏替换中遇到形参x以实参k+l代替,其它字符不变。

sQR(k+1)展开后应为字符串k+l*k+l。

  

(2)下面是对宏定义的描述,不正确的是_______。

  A)宏不存在类型问题,宏名无类型,它的参数也无类型

  B)宏替换不占用运行时间

  C)宏替换时先求出实参表达式的值,然后代入形参运算求值

  D)宏替换只不过是字符替代而已

  答案:

C

  评析:

宏替换实质上就是字符替代,它不可能进行计算,故c错误。

带参数的宏与函数相比,宏在程序编译之前已经将代码替换到程序内,执行时不会产生类似于函数调用的问题,可以说不占用运行时间。

  (3)以下程序(程序左边的数字为附加的行号)________。

  1#include

  2#include

  3main()

  4{chars[]="string";

  5 puts(s);

  6 strcpy(s,"hello");

  7 printf("%3s\n",s);}

  A)没有错

  B)第1行有错

  C)第6行有错

  D)第7行有错

  答案:

B

  评析:

字符串复制函数strcpy包含在头文件string.h中,因此,程序中的第l行文件包含命令是错误的。

  (4)若有如下说明,则__________的叙述是正确的。

  structst

  { inta;

  intb[2l;

  }a;

  A)结构体变量a与结构体成员a同名,定义是非法的

  B)程序只在执行到该定义时才为结构体st分配存储单元

  C)程序运行时为结构体st分配6个字节存储单元

  D)类型名structst可以通过extern关键字提前引用(即引用在前,说明在后)

  答案:

D

  评析:

结构体变量a与结构体成员a同名是合法的定义,引用成员a的方法是a.a,变量a处于不同的"层次"上,系统完全能够分清。

st是一个结构体名,不会为结构体名分配存储空间,应该是在运行时为结构体变量a分配6个字节的存储单元,故选项B和选项C错误。

  (5)若有以下结构体定义,则________是正确的引用或定义。

  structexample

  { intx;

  inty;

  }v1;

  A)example.x=10B)examplev2.x=10

  C)structv2;v2.x=lO

  D)structexamplev2={10};

  答案:

D

  评析:

在定义结构体变量时,不能只用结构体名example或关键字strum进行定义,必需要用结构体类型名structexample定义,在引用结构体成员变量时,需要用结构体变量名进行引用,所以选D。

  (6)下列程序的执行结果是_________。

  #include

  unionun(更多考试资讯尽在

  { inti;

  charc[21;

  };

  voidmain()

  {unionunx;

  x.c[0]=10:

  x.c[1]=1:

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

  }

  A)266

  B)ll

  C)265

  D)138

  答案:

A

  评析:

由于本题定义的是共用体,所以成员表列中的整型变量x与字符数组c共占用同一个存储单元,且此存储单元为2个字节,通常c[O]位于低字节,c[1]位于高字节,所以x.i的值为266。

  (7)已知形成链表的存储结构如下图所示,则下述类型描述中的空白处应填_______。

  structlink

  Datanext

  { chardata;

  }node;

  A)structlinknext

  B)link*next

  C)structnextlink

  D)structlink*next

  答案:

D

  评析:

在单向链表中,由于每个结点需要存储下一个结点的地址,且下一个结点的数据类型与前一个结点的数据类型完全相同,故应为structlink*next。

  (8)已知小写字母a的ASCII码为97,大写字母A的ASCII.码为65,以下程序的结果是__________。

  main()

  { unsignedinta=32,b=66;

  printf("%c\n",at

  B);

  }

  A)66

  B)98

  C)b

  D)B

  答案:

C

  评析:

位运算符"l"的作用是按位或,即两个二进制数的相应位中只要有一个为1,该位的结果值为l。

最后以字符型输出, 98对应的字符"b"。

  (9)C语言库函数龟ets(str,n,fp)的功能是_________。

  A)从fp指向的文件中读取长度n的字符串存入str指向的内存

  B)从fp指向的文件中读取长度不超过n-l的字符串存入str指向的内存

  C)从fp指向的文件中读取n个字符串存/Xstr指向的内存

  D)从str读取至多n个字符到文件fp

  答案:

B

  评析:

fgets函数的作用是从指定的文件读入一个字符串。

fgets(str,n,fp);中的n为要求得到的字符的个数,但只从fb指向的文件输入n-1个字符,然后在最后加一个'\O'字符,因此得到的字符串共有n个字符。

  (10)下述程序向文件输出的结果是__________。

  #include

  voidmain()

  { FILE*fp=fopen("TEST","wb");

  fprintf(fp,"%d%5.0f%c%d",58,76273.0,'-',2278);

  fclose(fp);

  }

  A)5876273-2278B)5876273。

.000000-2278

  C)5876273-2278 

  D)因文件为二进制文件而不可读

  答案:

C

  评析:

fprintf函数工作时,多个数据间不会自动加分隔符,选项A错误;浮点数的输出格式是"%5.0f"表明其小数部分输出O位,即没有输出,所以选项B也是错误的。

(1)下列程序执行后输出的结果是___________。

  intd=l:

  fun(intp)

  { intd。

5;

  d+=p++;

  printf("%d,",d);

  }

  main()

  { inta=3;

  fun(a);

  d+=a++:

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

  }

  A)8,12

  B)9,13

  C)8,4

  D)9,5

  答案:

C

  评析:

本题执行过程如下:

首先调用fun函数,使得实参a的值3传递给形参p,得到局部变量d=8,打印出局部变量d的值8;返回主函数执行"d+=a++",此处的d为全局变量,所以d=1+3=4(由于本题是值传递,所以在函数fun中对p值的改变并不能引起a的改变),故本题的输出是8,4。

  

(2)已知下面的程序段,正确的判断是_________。

  #defineA3

  #defineB(A)((_A+1)'a)

  inta=3:

  ……

  X=3*(A+B(7

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2