打印本文 打印本文  关闭窗口 关闭窗口  
06年9月计算机等级考试二级C语言考前密卷四
作者:佚名  文章来源:不详  点击数  更新时间:2008/4/18 14:36:07  文章录入:杜斌  责任编辑:杜斌

  一、选择题

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

  A)32

  B)31

  C)16

  D)15

  (2)若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是

  A)bdgcefha

  B)gdbecfha

  C)bdgaechf

  D)gdbehfca

  (3)一些重要的程序语言(如C语言和Pascal语言)允许过程的递归调用。而实现递归

  调用中的存储分配通常用

  A)栈

  B)堆

  C)数组

  D)链表

  (4)软件工程的理论和技术性研究的内容主要包括软件开发技术和

  A)消除软件危机

  B)软件工程管理

  C)程序设计自动化

  D)实现软件可重用

  (5)开发软件时对提高开发人员工作效率至关重要的是

  A)操作系统的资源管理功能

  B)先进的软件开发工具和环境

  C)程序人员的数量

  D)计算机的并行处理能力

  (6)在软件测试设计中,软件测试的主要目的是

  A)实验性运行软件

  B)证明软件正确

  C)找出软件中全部错误

  D)发现软件错误而执行程序

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

  A)数据

  B)数据元素

  C)数据项

  D)数据结构

  (8)索引属于

  A)模式

  B)内模式

  C)外模式

  D)概念模式

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

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

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

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

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

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

  A)数据库

  B)数据库管理系统

  C)模拟模型

  D)软件工程

  (11)C语言规定,在一个源程序中,main函数的位置

  A)必须在最开始

  B)必须在系统调用的库函数的后面

  C)可以任意

  D)必须在最后

  (12)下列数据中,不合法的C语言实型数据的是

  A)0.123

  B)123e3

  C)2.1e3.5

  D)789.0

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

  A)A P_0 do

  B)float la0 _A

  C)b-a goto int

  D)_123 temp int

  (14)设变量a是int型,f是float型,i是double型,则表达式10+′a′+i*f值的数据类型为

  A)int

  B)float

  C)double

  D)不确定

  (15)能正确表示逻辑关系:“a≥10或a≤0”的C语言表达式是

  A)a>=10 or a<=0

  B)a>=0|a<=10

  C)a>=10 &&a<=0

  D)a>=10‖a<=0

  (16)设以下变量均为int类型,表达式的值不为7的是

  A)(x=y=6,x+y,x+1)

  B)(x=y=6,x+y,y+1)

  C)(x=6,x+1,y=6,x+y)

  D)(y=6,y+1,x=y,x+1)

  (17)若有说明:int *p,m=5,n;以下正确的程序段是

  A)p=&n;scanf("%d",&p);

  B)p=&n;scanf("%d",*p)

  C)scanf("%d",&n);*p=n;

  D)p=&n;*p=m;

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

以下是引用片段:
  int a=1234;
  printf("-\n",a);

  A)12

  B)34

  C)1234

  D)提示出错、无结果

  (19)若变量a是int类型,并执行了语句:a=′A′+1.6;,则正确的叙述是

  A)a的值是字符C

  B)a的值是浮点型

  C)不允许字符型和浮点型相加

  D)a的值是字符′A′的ASCII值加上1

  (20)有如下程序

以下是引用片段:
  main()
  { int a=2,b=-1,c=2;
  if(a 
  if(b<0)c=0;
  else c++;
  printf("%d\n",c);
  }

  该程序的输出结果是

  A)0

  B)1

  C)2

  D)3

  (21)有如下程序

以下是引用片段:
  main()
  { int x=23;
  do
  { printf("%d",x--);}
  while(!x);
  }

  该程序的执行结果是

  A)321

  B)23

  C)不输出任何内容

  D)陷入死循环

  (22)执行语句 for(i=1;i++<4;); 后变量 i 的值是

  A)3

  B)4

  C)5

  D)不定

  (23)有一堆零件(100到200之间),如果分成4个零件一组的若干组,则多2个零件;若分成7个零件一组,则多3个零件;若分成9个零件一组,则多5个零件。下面程序是求这堆零件总数,请选择填空。

以下是引用片段:
  #include 
  main()
  { int i;
  for(i=100;i<200;i++)
  if((i-2)%4==0)
  if(!((i-3)%7))
  if(_______)
  printf("%d",i);
  }

  A)i%9=5

  B)i%9!=5

  C)(i-5)%9!=0

  D)(i-5)%9==0

  (24)已有定义int a=-2;和输出语句 printf("%8lx",a);以下正确的叙述是

  A)整型变量的输出形式只有%d一种

  B)%x是格式符的一种,它可以适用于任何一种类型的数据

  C)%x是格式符的一种,其变量的值按十六进制输出,但%8lx是错误的

  D)%8lx不是错误的格式符,其中数字8规定了输出字段的宽度

  (25)若变量c为char类型,能正确判断出c为小写字母的表达式是

  A)′a′<=c<=′z′

  B)(c>=′a′)||(c<=′z′)

  C)(′a′<=c)and(′z′>=c)

  D)(c>=′a′)&&(c<=′z′)

  (26)以下正确的说法是

  A)用户若需调用标准库函数,调用前必须重新定义

  B)用户可以重新定义标准库函数,若如此,该函数将失去原有含义

  C)系统根本不允许用户重新定义标准库函数

  D)用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动调用

  (27)以下正确的函数头定义形式是

  A)double fun(int x,int y)

  B)double fun(int x;int y)

  C)double fun(int x,int y);

  D)double fun(int x,y);

  (28)下面程序段的运行结果是

以下是引用片段:
  char a[]="lanuage",*p;
  p=a;
  while(*p!=′u′){printf("%c",*p-32);p++;}

  A)LANGUAGE

  B)language

  C)LAN

  D)langUAGE

  (29)下面程序段的运行结果是

以下是引用片段:
  char str[]="ABC",*p=str;
  printf("%d\n",*(p+3));

  A)67

  B)0

  C)字符′C′的地址

  D)字符′C′

  (30)若fp是指向某文件的指针,且已读到文件末尾,则库函数feof(fp)的返回值是

  A)EOF

  B)-1

  C)1

  D)NULL

  (31)在C语言中,char型数据在内存中的存储形式是

  A)补码

  B)反码

  C)原码

  D)ASCII码

  (32)若有说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是

  A)2

  B)3

  C)4

  D)无确定值

  (33)以下不正确的定义语句是

  A)double x[5]={2.0,4.0,6.0,8.0,10.0};

  B)int y[5.3]={0,1,3,5,7,9};

  C)char c1[]={′1′, ′2′, ′3′, ′4′, ′5′};

  D)char c2[]={′\x10′, ′\xa′, ′\x8′};

  (34)有以下语句,则对a数组元素的引用不正确的是(0≤i≤9)

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

  A)a[p-a]

  B)*(&a[i])

  C)p[i]

  D)*(*(a+i))

  (35)当说明一个结构体变量时系统分配给它的内存是

  A)各成员所需内存量的总和

  B)结构中第一个成员所需内存量

  C)成员中占内存量最大者所需的容量

  D)结构中最后一个成员所需内存量

  (36)有以下程序

以下是引用片段:
  fun(int x,int y,int z)
  { z=x*y;}
  main()
  {int a=4,b=2,c=6;
  fun(a,b,c);
  printf("%d",c);
  }

  程序运行后的输出结果是

  A)16

  B)6

  C)8

  D)12

  (37)函数fun的返回值是

以下是引用片段:
  fun(char *a,char *b)
  { int num=0,n=0;
  while(*(a+num)!=′\0′)num++;
  while(b[n]){*(a+num)=b[n];num++;n++;}
  return num;
  }

  A)字符串a的长度

  B)字符串b的长度

  C)字符串a和b的长度之差

  D)字符串a 和b的长度之和

  (38)以下叙述中不正确的是

  A)预处理命令行都必须以#号开始

  B)在程序中凡是以#号开始的语句行都是预处理命令行

  C)宏替换不占用运行时间,只占编译时间

  D)在以下定义是正确的: #define PI 3.1415926;

  (39)调用gets和puts函数时,必须包含的头文件是

  A)stdio.h

  B)stdlib.h

  C)define

  D)以上都不对

  (40)利用 fseek 函数可以实现的操作是

  A)改变文件的位置指针

  B)文件的顺序读写

  C)文件的随机读写

  D)以上答案均正确

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

以下是引用片段:
  main()
  { int a[5]={2,4,6,8,10},*p,**k;
  p=a;
  k=&p;
  printf("%d",*(p++));
  printf("%d\n",**k);
  }

  A)4

  B)22

  C)24

  D)46

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

以下是引用片段:
  struct Test
  {int x;
  int y;
  } vl;

  A)Test.x=10;

  B)Test v2;v2.x=10;

  C)struct v2;v2.x=10;

  D)struct Test v2={10};

  (43)下面程序段的运行结果是

以下是引用片段:
  char *p="abcdefgh";
  p+=3;
  printf("%d\n",strlen(strcpy(p,"ABCD")));

  A)8

  B)12

  C)4

  D)7

  (44)下面判断正确的是

  A)char *a="china";等价于 char *a;*a="china";

  B)char str[5]={"china"};等价于char str[]={"china"};

  C)char *s="china";等价于 char *s;s="china";

  D)char c[4]="abc",d[4]="abc";等价于char c[4]=d[4]="abc";

  (45)下列函数的运行结果是

以下是引用片段:
  main()
  { int i=2,p;
  int j,k;
  j=i;
  k=++i;
  p=f(j,k);
  printf("%d",p);
  }
  int f(int a,int b)
  { int c;
  if(a>b)c=1;
  else if(a==b)c=0;
  else c=-1;
  return(c);
  }

  A)-1

  B)1

  C)2

  D)编译出错,无法运行

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

  A)操作数乘以2

  B)操作数除以2

  C)操作数除以4

  D)操作数乘以4

  (47)若调用fputc函数输出字符成功,则其返回值是

  A)EOF

  B)1

  C)0

  D)输出的字符

  (48)已知函数的调用形式:fread(buf,size,count,fp),参数buf的含义是

  A)一个整型变量,代表要读入的数据项总数

  B)一个文件指针,指向要读的文件

  C)一个指针,指向要读入数据的存放地址

  D)一个存储区,存放要读的数据项

  (49)有如下程序:

以下是引用片段:
  #define N 2
  #define M N+1
  #define NUM 2*M+1
  main()
  {
  int i;
  for(i=1;i<=NUM;i++)printf("%d\n",i);
  }

  该程序中的for循环执行的次数是

  A)5

  B)6

  C)7

  D)8

  (50)以下定义中,标识符prt int(*prt)[3]

  A)定义不含法

  B)是一个指针数组名,每个元素都是一个指向整数变量的指针

  C)是一个指针,它指向一个具有三个元素的一维数组

  D)是一个指向整型变量的指针

  二、填空题

  (1)在树形结构中,树根结点没有 【1】 。

  解析: 在树形结构中,每一个结点只有一个前件,称为父结点,没有前件的结点只有一个,称为树的根结点;每一个结点可以有多个后件,它们都称为该结点的子结点。没有后件的结点称为叶子结点。

  (2)Jackson结构化程序设计方法是英国的M.Jackson提出的,它是一种面向 【2】 的设计方法。

  解析: 结构化分析方法主要包括:面向数据流的结构化分析方法(SA-Structured analysis),面向数据结构的Jackson方法(JSD-Jackson system development method)和面向数据结构的结构化数据系统开发方法(DSSD-Data structured system development method)。

  (3)面向对象的模型中,最基本的概念是对象和 【3】 。

  解析: 面向对象模型中,最基本的概念是对象和类。对象是现实世界中实体的模型化;将属性集和方法集相同的所有对象组合在一起,可以构成一个类。

  (4)软件设计模块化的目的是 【4】 。

  解析: 模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程,由此分解来降低复杂性。

  (5)数据模型按不同应用层次分成3种类型,它们是概念数据模型、 【5】 和物理数据模型。

  解析: 数据是现实世界符号的抽象,而数据模型(data model)则是数据特征的抽象,它从抽象层次上描述了系统的静态特征、动态行为和约束行为,为数据库系统的信息表示与操作提供一个抽象的框架。

  数据模型按不同的应用层次分成3种类型,它们是概念数据模型(conceptual data model)、逻辑数据模型(logic data model)、物理数据模型(physical data model)。

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

以下是引用片段:
  main ()
  {int a=2,b=3,c=4;
  a*=16+(b++)-(++c);
  printf("%d",a);
  }

  解析: a*=16+(b++)-(++c)等价于a=a*(16+(b++)-(++c)),b++的值为3,++c的值为5,请注意前缀++和后缀++的用法。

  (7)若变量n中的值为24,则print()函数共输出【7】行,最后一行有【8】个数。

以下是引用片段:
  void print (int n,int aa[])
  {int i;
  for (i=1; i<1;i++)
  {printf ("m", aa[i]);
  if(!(i%5)) printf ("\n");
  }
  printf ("\n");
  }

  解析: 语句if(!(i%))printf("\n");是将每5个数输出一行,因为n的值为24,所以共输出5行,最后一行有4个数。

  (8)调用C语标准库函数时要求用【9】命令。

  解析: include命令可调用标准的C语言库函数,可以用一对括号或一对双引号,但要在前面加"#"。

  (9)stract函数的作用是【10】。

  解析: 连接两个字符数组中的字符串

  (10)C语言程序的注释可以出现在程序中的任何地方,一个注释以【11】作为开始和结束。

  解析: C语言程序的注释可以出现在程序基本单词之间的任何地方,C语言程序的注释以′/*′作为开始标记,并以′*/′作为结束标记。

  (11)设二进制数A是00101101,若想通过异或运算A^B使A的高4位取反,低4位不变,则二进制数B应是

  【12】 。

  解析: 按位异成运算的一个重要应用是让某个整型变量的二进位取反,0变成1,而1变成0。这只要设计这样一个位串信息,让要变反的位为1,不要改变的位为0,用这个位串信息与整型变量按位加就能得到希望的结果。要使字节的高4位取反,低4位不变,则需要位串信息是11110000。

  (12)若已知a=10,b=20,则表达式!a

  解析: 计算表达式!a

  (13)设i,j,k均为int型变量,则执行完下面的for语句后,k的值为【14】 。

  for(i=0, j=10; i<=j; i++, j--)k=i+j;

  解析: 该for语句以i为0,j为10初始化,循环条件是i<=j,每次循环后i增1、j减1,循环体是将i与j的和赋给k。这样变量k将保存的是最后一次赋给它的值。一次循环后i为1、j为9,二次循环后i为2、j为8,……,五次循环后i为5、j为5,继续第六次循环,将i与j的和10存于k后,i为6、j为4,结束循环。所以循环执行后k为10。

  (14)下面函数的功能是:找出一维数组元素中最大的值和它所在的下标,最大值的和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。请填空。

以下是引用片段:
  #include
  #include
  void fun(int a[],int n, int *max, int *d)
  { int i;
  *max=a[0];
  *d=0;
  for(i=0;【15】;i++)
  if(*max<【16】)
  {*max=a[i];*d=i;}
  }
  main()
  { int i, x[20], max, index, n=10;
  randomize();
  for(i=0;i 
  {
  x[i]=rand()P; printf("M",x[i]);
  }
  printf("\n");
  fun(x,n,&max,&index);
  printf("Max=],Index=M\n",max,index);
  }

  解析: 该程序直接使用形参max和d,由于它们都是指针变量,所以要引用它所指向的变量时要对它进行指针运算,也即*号运算。

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

以下是引用片段:
  void fun()
  { static int a=0;
  a+=2; printf("%d",a);
  }
  main()
  { int cc;
  for(cc=1;cc<4;cc++)fun();
  printf("\n");
  }

  解析: 本题考查静态局部变量的使用。用关键字static声明的局部变量为"静态局部变量",其值在函数调用结束后不消失而保留原值,即其占用的存储单元不释放,在下一次该函数调用时,该变量已有值,就是上一次函数调用结束时的值。

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

以下是引用片段:
  #define MAX(x,y)(x)>(y)?(x):(y)
  main()
  { int a=5,b=2,c=3,d=3,t;
  t=MAX(a+b,c+d)*10;
  printf("%d\n",t);
  }

  解析: 本题综合考查带参数的宏以及三目运算符的计算方法,“?”运算符是一个三目运算符,其一般形式是:<表达式1>?<表达式2>:<表达式3>。“?” 运算符的含义是:先求表达式1的值,如果为真,则求表达式2的值并把它作为整个表达式的值;如果表达式1的值为假,则求表达式3的值并把它作为整个表达式的值。注意,在本题中宏替换时可采用逐步求解,最终为7>6?7:6*10,即t=7>6?7:60,其值为t=7。

  (17)用以下语句调用库函数malloc,使字符指针st指向具有11个字节的动态存储空间,请填空。

  st=(char*)【19】 ;

  解析: malloc函数的参数可以是一个具体的常数,也可以是一个表达式。在本题中,可以是malloc(11),也可以借助于sizeof运算符来表示。

  (18)以下程序段打开文件后,先利用fseek函数将文件位置指针定位在文件末尾,然后调用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度,请填空。

以下是引用片段:
  FILE *myf; long f1;
  myf=【20】 ("test.t","rb");
  fseek(myf,0,SEEK_END); f1=ftell(myf);
  fclose(myf);
  printf("%d\n",f1);

  解析: 函数fopen的原型为FILE *fopen(char *filename,char *mode),功能为以mode指定的方式打开名为filename的文件;函数fseek的原型为int fseek(FILE *fp,long offset,int base),功能为将fp所指向的文件的位置指针移到以base所指出的位置为基准。以offset是以字节为单位的位移量;函数ftell的原型为long ftell(FILE *fp),功能为返回fp所指向的文件中的读写位置;函数fclose的原型为int fclose(FILE *fp),功能为关闭fp所指的文件,释放文件缓冲区。

  答案

  选择题

  01-05  B  D  A  B  B

  06-10  D  C  B  B  B

  11-15  C  C  C  C  D

  16-20  C  D  C  D  C

  21-25  B  C  D  D  B

  26-30  B  A  C  B  C

  31-35  D  B  B  D  A

  36-40  B  D  D  A  D

  41-45  C  D  C  C  A

  46-50  A  D  C  B  D

打印本文 打印本文  关闭窗口 关闭窗口