导航:首页 - 计算机等级考试二级C语言考前密卷(7)

计算机等级考试二级C语言考前密卷(7)
作者:深圳教育在线 来源:szedu.net 更新日期:2007-12-13

(1)最简单的交换排序方法是
  A)快速排序     
      B)选择排序
  C)堆排序     
      D)冒泡排序
(2)栈通常采用的两种存储结构是
  A)线性存储结构和链表存储结构
  B)散列方式和索引方式
  C)链表存储结构和数组
  D)线性存储结构和非线性存储结构 
(3)线性表的顺序存储结构和线性表的链式存储结构分别是
  A)顺序存取的存储结构、顺序存取的存储结构
  B)随机存取的存储结构、顺序存取的存储结构
  C)随机存取的存储结构、随机存取的存储结构
  D)任意存取的存储结构、任意存取的存储结构
(4)完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例的测试方法是
  A)黑箱测试法    B)白箱测试法
  C)错误推测法    D)安装测试法
(5)在结构化设计方法中,生成的结构图(SC)中,带有箭头的连线表示
  A)模块之间的调用关系   B)程序的组成成分
  C)控制程序的执行顺序   D)数据的流向
(6)下列选项中,不属于模块间耦合的是
  A)数据耦合    B)同构耦合
  C)异构耦合    D)公用耦合
(7)一个关系中属性个数为1时,称此关系为
  A)对应关系    B)单一关系
  C)一元关系    D)二元关系
(8)为用户与数据库系统提供接口的语言是
  A)高级语言     
      B)数据描述语言(DDL)
  C)数据操纵语言(DML)    
      D)汇编语言
(9)相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和
  A)可重用性差    B)安全性差
  C)非持久性       D)冗余性 
(10)需求分析阶段的任务是确定
  A)软件开发方法    B)软件开发工具
  C)软件开发费用    D)软件系统功能
(11)下列关于C语言的说法不正确的是
  A)C语言既具有高级语言的一切功能,也具有低级语言的一些功能
  B)C语言中的每一条执行语句都必须用分号结束,分号不是C语言的一部分,是语句之间的分隔符号
  C)注释可以出现在程序中任意合适的地方
  D)命令行后面不能加分号,命令行不是C语言的语句
(12)下列关于标识符的说法中错误的是
  A)合法的标识符是由字母、数字和下划线组成
  B)C语言的标识符中,大写字母和小写字母被认为是两个不同的字符
  C)C语言的标识符可以分为三类,即关键字、预定义标识符和用户标识符
  D)用户标识符与关键字不同时,程序在执行时将给出出错信息
(13)下列合法的整型常量的表示是
  A)098
  B)oXde
  C)32767
  D)0xDG
(14)现在有以下定义,int a;double b;float c;char k;则下面的表达式a/b+c-k值的类型为:
  A)int
  B)double
  C)float
  D)char
(15)假设整型变量a,b,c的值均为5,则表达式a+++b+++c++的值为
  A)17
  B)16
  C)15
  D)14
(16)下列关于复合语句和空语句的说法错误的是
  A)复合语句是由“{”开头,由“}”结尾的
  B)复合语句在语法上视为一条语句
  C)复合语句内,可以有执行语句,不可以有定义语句部分
  D)C程序中的所有语句都必须由一个分号作为结束
(17)关于printf()函数的返回值叙述正确的是
  A)通常是本次调用中输出字符的个数
  B)通常是输出的第一个数值
  C)通常返回布尔值真
  D)通常返回非零值
(18)现有格式化输入语句,scanf("x=%dц,sumцy=%d,lineцz=%dL",&x,&y,&z);,现在已知在输入数据后,x,y,z的值分别是12,34,45,则下列数据是正确的输入格式的是
  A)12,34,45
  B)x=12,y=34,z=45
  C)x=12C,sumy=34,z=45
  D)x=12],sum]y=34,line]z=45 
   [注]:“ц”表示空格, 表示回车
(19)设x,y,z,t均为整型变量,现有如下语句x=y=z=1;t=++x||++y&&++z;则执行这个语句后t的值为
  A)2
  B)1
  C)0
  D)不定值
(20)现有如下程序段,此程序段编译有错误,则程序段的错误出在
  #include 
  main()
  {  int a=30,b=40,c=50,d;
   d=a>30?b:c;
  switch(d){case a:printf("%d,",a);
  case b:printf("%d,",b);
  case c:printf("%d,",c);
  default:printf("#");}}
  A)default:printf("#");这个语句 
  B)d=a>30?b:c;这个语句
  C)case a:printf("%d,",a); case b:printf("%d,",b); case c:printf("%d,",c);这三个语句
  D)switch(d)这个语句
(21)下列语句中,错误的是(x,y,a,b假设已经定义好)
  A)while(x=y)5;
  B)do x++ while(x==10);
  C)while(0);
  D)do 2;while(a==b);
(22)若i,j已经定义为整型,则以下程序段中,内循环体的执行次数是
  for(i=6;i;i--)
   for(j=0;j<5;j++){……}
  A)40
  B)35
  C)30
  D)25
(23)下列说法中错误的是
  A)只能在循环体内使用break语句
  B)在循环体内使用break语句可以使流程跳出本层循环体,从而提前结束本层循环
  C)在while和do…while循环中,continue语句并没有使整个循环终止
  D)continue的作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环判断
(24)阅读如下程序段
  #include "stdio.h"
  main()
  { int x,a,b;
  scanf("%d",&x);
  a=b=x;
  for(;x!=0;)
  { if(x  if(x>a)a=x;
  scanf("%d",&x);}
  printf("a=%d,b=%d\n",a,b);}
  现输入如下。[注] :′ц′表示空格
  34ц56ц23ц45ц5ц56ц7ц12ц365ц49ц48ц57ц87ц7ц6ц7569ц789ц0
  输入后输出结果是
  A)a=7569,b=789
  B)a=5,b=365
  C)a=7,b=789
  D)a=7569,b=5
(25)下面关于字符常量的说法错误的是
  A)一个字符常量代表ASCII字符集中的一个字符
  B)单引号中的大写字母和小写字母代表不同的字符常量
  C)字符常量只能包含一个字符
  D)字符常量可以用单引号或双引号括起来


(26)现有如下程序
  #include "stdio.h"
  int fun(int x)
  {printf("x=%d\n",++x);}
  main()
  {fun(12+5);}
  则程序的输出结果是
  A)12
  B)13
  C)17
  D)18
(27)现有如下程序段
  #include "stdio.h"
  int aa(int x,int y);
  main()
  {int a=24,b=16,c;
  c=aa(a,b);
  printf("%d\n",c);}
  int aa(int x,int y)
  {int w;
  while(y)
  {w=x%y;
  x=y;
  y=w;}
  return x;}
  则程序段的输出结果是
  A)8
  B)7
  C)6
  D)5
(28)下列说法错误的是
  A)函数调用时,函数名必须与所调用的函数名字完全相同
  B)实参的个数必须与形式参数的个数一致
  C)实参可以是表达式,在类型上必须与形参一一对应匹配
  D)C语言规定,函数必须先定义,后调用(函数的返回值类型为int或char时除外)
(29)函数的值通过return语句返回,下面关于return语句的形式描述错误的是
  A)return表达式;
  B)return(表达式);
  C)一个return语句可以返回多个函数值
  D)一个return语句只能返回一个函数值
(30)现有如下定义:int a,b,*p,*q;,则下列赋值语句错误的是
  A)p=&a;
  B)q=&b;
  C)p=q;
  D)p=a;
(31)现有如下程序段
  #include "stdio.h"
  int *fun(int *a,int *b)
  {int c;
  c=*a%*b;
  return &c;}
  main()
  {int a=5,b=19,*c;
  c=fun(&a,&b);
  printf("%d\n",++*c);}
  则程序段执行后的结果为
  A)8
  B)7
  C)6
  D)5
(32)现有int a,*b;,b=&a;,则下列运算错误的是
  A)*&a
  B)&*a
  C)*&b
  D)&*b
(33)现有如下程序段
  #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
(34)现有如下定义语句
  int*p,s[20],i;
  p=s;
  表示数组元素s[i]的表达式不正确的是
  A)*(s+i)
  B)*(p+i)
  C)*(s=s+i)
  D)*(p=p+i)
(35)阅读如下程序段,这个程序在编译的时候会有一个警告,下列关于这个警告叙述正确的是
   #include "stdio.h"
  #define N 10
  int *fun(int a[N],int n)
  { int i,b[N];
  for(i=0;i  b[i]=a[i];
  return(b);}
  main()
  { int a[N]={12,34,45,5,6,34,4,655,2};
  int *k;
  k=fun(a[N],5);
  printf("%d\n",*k);}
  A)指针k没有指向任何对象而成为“无向指针”,所以这里会产生警告
  B)return语句不应该有括号,所以在这里会有警告
  C)return语句的返回值类型与指针k的基类型不一致,这里会产生警告
  D)数组赋值的时候没有把数组全部都赋初值,所以在这里会有警告
(36)有如下定义语句:int aa[][3]={12,23,34,4,5,6,78,89,45};,则45在数组aa中的行列坐标各为
  A)3,2
  B)3,1
  C)2,2
  D)2,1
  (37)现有如下程序段
  #include "stdio.h"
  main()
  {int a[5][6]={23,3,65,21,6,78,28,5,67,25,435,76,8,22,45,7,8,34,6,78,32,4,5,67,4,21,1};
  int i=0,j=5;
  printf("%d\n",*(&a[0][0]+2*i+j-2));}
  则程序的输出结果为
  A)21
  B)78
  C)23
  D)28
(38)下列程序的输出结果是
  #include "stdio.h"
  #define N 3
  #define M 3
  void fun(int a[M][N])
  {printf("%d\n",*(a[1]+2));}
  main()
  {int a[M][N];
  int i,j;
  for(i=0;i  for(j=0;j  a[i][j]=i+j-(i-j);
  fun(a);}
  A)3
  B)4
  C)5
  D)6
(39)下列关于字符串的说法中错误的是
  A)在C语言中,字符串是借助于字符型一维数组来存放的,并规定以字符′\0′作为字符串结束标志
  B)′\0′作为标志占用存储空间,计入串的实际长度
  C)在表示字符串常量的时候不需要人为在其末尾加入′\0′
  D)在C语言中,字符串常量隐含处理成以′\0′结尾
(40)有下面程序段
   #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
(41)现有如下程序段
  #include "stdio.h"
  #include "string.h"
  main()
  {char a[]="acfijk";/*这里是有序的字符序列*/
  char b[]="befijklqswz";/*这里是有序的字符序列*/
  char c[80],*p;
  int i=0,j=0,k=0;
  while(a[i]!=′\0′ && b[j]!=′\0′)
  {if(a[i]  else if(a[i]>b[j])c[k++]=b[j++];
  else {c[k++]=b[j++];
  i++;}}
  while(a[i]==′\0′ && b[j]!=′\0′)
   c[k++]=b[j++];
  while(a[i]!=′\0′ && b[j]==′\0′)
  c[k++]=a[i++];
  c[k]=′\0′;
  puts(c);}
   则输出结果是
  A)acfijkbefijklqswz
  B)abceffiijjkklqswz
  C)befijklqswz acfijk
  D)abcefijklqswz
(42)现在有如下程序
  #include "stdio.h"
  main()
  {char s[80];
  int i,j;
  gets(s);
  for(i=j=0;s[i]!=′\0′;i++)
  if(s[i]!=′H′______)
  s[j]=′\0′;
  puts(s);}
  这个程序段的功能是删除输入的字符串中字符′H′,则空线上应当添入的是
  A)s[j++]=s[i];j++;
  B)s[j]=s[i++];j++;
  C)s[j++]=s[i];
  D)s[j]=s[i];
(43)下列说法中错误的是
  A)静态局部变量的初值是在编译时赋予的,在程序执行期间不再赋予初值
  B)若全局变量和某一函数中的局部变量同名,则在该函数中,此全局变量被屏蔽
  C)静态全局变量可以被其他的编辑单位所引用
  D)所有自动类局部变量的存储单元都是在进入这些局部变量所在的函数体(或复合语
  句)时生成,退出其所在的函数体(或复合语句)时消失
(44)阅读下列程序段,则程序的输出结果为
  #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
(45)若有以下定义和语句
  struct a
  { int n,m;};
  struct a st[3]={{1,20},{2,19},{3,21}};
  struct a *p=st;
  则以下错误的引用是
  A)(p++)->n;
  B)st[0].n;
  C)(*p).n;
  D)p=&st.m;
(46)假设有如下定义:struct a{int n;float k;}data,*p;若要使p指向data中的成员n,正确的赋值语句是
  A)p=&data.n;
  B)*p=data.n;
  C)p=(struct a *)&data.n;
  D)p=(struct a *)data.n;
(47)下面函数的功能是将指针t2所指向的线性链表,链接到t1所指向的链表的末端。假定t1所指向的链表非空
  struct node{ float x;struct node *next;};
  connect(struct node *t1, struct node *t2)
  { if(t1->next==NULL)t1->next=t2;
   else connect(______ ,t2); }
  要实现此功能则应该添入的选项是
  A)t1.next
  B)++t1.next
  C)t1->next
  D)++t1->next
(48)C语言结构体类型变量在程序运行期间
  A)TC环境在内存中仅仅开辟一个存放结构体变量地址的单元
  B)所有的成员一直驻留在内存中
  C)只有最开始的成员驻留在内存中
  D)部分成员驻留在内存中
(49)有下列运算符:~,&,<<,>>, |,^,则运算的优先顺序是
  A)~,&, |,<<,>>,^
  B)~,<<,>>,&, |,^
  C)~,<<,>>,^, &,|
  D)~,<<,>>,&,^, |
(50)最简单的交换排序方法是
  A)快速排序    B)选择排序
  C)堆排序       D)冒泡排序

二、填空题

(1)栈和队列通常采用的存储结构是 【1】 。
【命题目的】考查考生对数据结构基本知识的了解。
【解题要点】栈和队列都属于线性表,它们一般采用顺序存储结构,也可以对它们采用链式存储结构。
   【考点链接】栈、数组、表采用的存储结构,各种存储结构的定义和区别。

(2)在程序设计阶段应该采取 【2】 和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,进而用某种程序设计语言写成程序。
【命题目的】让考生对程序设计有较深入的了解。
【考点链接】系统设计其他阶段的内容。

(3)软件结构是以 【3】 为基础而组成的一种控制层次结构。
【命题目的】考查考生对软件结构的了解。
【解题要点】采用模块化原理可以使软件结构清晰,不仅容易设计也容易阅读和理解,模块化使得软件容易测试和调试,因而有利于提高软件的可靠性,也有利于软件的组织管理,大型程序可由不同的程序员编写不同的模块,并且可以进一步分配技术熟练的程序员编写困难的部分。
【考点链接】软件结构的定义,模块操作其他的所有特点。

(4)数据库系统阶段的数据具有较高独立性,数据独立性包括物理独立性和 【4】 两个含义。
【命题目的】考查考生对数据库基本知识(数据独立性)的了解。
【解题要点】数据独立性是数据与程序间的互不依赖性,即数据库中数据独立于应用程序而不依赖于应用程序。数据独立性一般分为物理独立性与逻辑独立性两个含义。
    【考点链接】在人工管理阶段,文件系统阶段和数据库管理阶段中数据独立性的特点。

(5)数据库保护分为:安全性控制、 【5】 、并发性控制和数据的恢复。
【命题目的】考查考生对数据库基本知识的了解。
【解题要点】安全性控制:防止未经授权的用户有意或无意存取数据库中的数据,以免数据被泄露、更改或破坏;完整性控制:保证数据库中数据及语义的正确性和有效性,防止任何对数据造成错误的操作;并发控制:正确处理好多用户、多任务环境下的并发操作,防止错误发生;恢复:当数据库被破坏或数据不正确时,使数据库能恢复到正确的状态。 
【考点链接】数据库的其他用途,如数据定义、数据操作和数据管理等。

(6)语句printf("%f\n",13.0*(1/5));的输出结果为 【6】 。
【命题目的】考查对于基本运算符的掌握情况。
【解题要点】/表示整除,1/5为0,0乘以任何数都得零,但是与浮点型相乘,要转化为浮点型,所以结果为0.000000。
【考点链接】在一个运算符的两边如果一个是字符型,一个是整型,则把字符型转换为整型之后再进行运算。

(7)阅读下面语句,则程序的执行结果是 【7】 。
#include "stdio.h"
main()
{  int a=-1,b=1,k;
 if((++a<0)&&!(b--<=0))
printf("%d,%d\n",a,b);
 else printf("%d,%d\n",b,a);}
【命题目的】考查对于if语句的掌握情况。
【解题要点】与运算两边的语句必须同时为真时,结果才为真,当执行完if((++a<0)&&!(b--<=0))时,a,b的值已经发生了变化。
【考点链接】++,--运算符。

(8)阅读下面语句,则执行后的输出结果为 【8】
 #include "stdio.h"
main()
{char a,b;
 for(a=′0′,b=′9′;a printf("%c%c",a,b);
printf("\n");}
【命题目的】考查对于for循环的掌握情况。
【解题要点】for是C语言的关键字,其后的一对圆括号中通常含有三个表达式,各个表达式之间用分号隔开,这三个表达式可以是任意形式的表达式,通常主要用于for循环控制。
【考点链接】对字符型的运算实际上是对其ASCII码值的运算。

(9)阅读下面程序,则执行后程序的结果为 【9】
#include "stdio.h"
main()
{ int a=0,b=0;
 while(a<15)a++;
 while(b++<15);
 printf("%d,%d\n",a,b);}
【命题目的】考查对于while循环的掌握情况。
【解题要点】while是C语言的关键字,while后一对圆括号中的表达式,可以是C语言中任意合法的表达式,由它来控制循环体是否执行。
【考点链接】在语法上要求循环体可以是一条简单可执行语句,并且还要注意循环控制表达式的判断条件。

(10)在使用putchar和getchar函数处理字符时,必须在程序的开头出现包含头文件的命令行是 【10】 。
【命题目的】考查对于基础知识的掌握情况。
【解题要点】使用putchar和getchar函数时,必须在程序的开头出现包含头文件#include "stdio.h"的命令行。
【考点链接】putchar的函数调用形式为:putchar(字符变量或字符常量);getchar函数的调用形式为:变量=getchar();getchar后的一对圆括号内没有参数,但这一对圆括号不可少。

(11)下列程序的输出结果是 【11】 , 【12】 。
 #include
main()
{ float a=-1.3;b=1.3;
 printf("%f,%f",fabs(a),fabs(b);}
【命题目的】主要考查math库函数。
【解题要点】本题是求浮点数的绝对值。
【考点链接】常用的math函数。

(12)设有以下定义和语句,则*(*(p+2)+1)的值为 【13】 。
int a[3][2]={10,20,30,40,50,60},(*p)[2];
p=a;
【命题目的】主要考查对于通过建立行指针来引用二维数组元素的掌握情况。
【解题要点】*(*(p+2)+1)相当于访问的是a[2][1]的值。
【考点链接】*(p[2]+1)、p[2][1]以及(*(p+2))[1]表达的含义都是a[2][1]的值。

(13)有下列程序,功能是把输入的十进制长整型数以十六进制的形式输出,完成程序
 #include "stdio.h"
main()
{char b[17]={"0123456789ABCDEF"};
int c[50],d,i=0,base=16;
long n;
scanf("%ld",&n);
do{c[i]=nºse;i++;n= 【14】 ;}
while(n!=0);
for(--i;i>=0;--i)
 {d= 【15】 ;printf("%c",b[d]);}
printf("H\n");}
【命题目的】考查字符串的实际运用的理解程度。
【解题要点】字符串的综合运用。
【考点链接】这是一种常用的十进制转换成十六进制的方法,应该掌握。

(14)现有如下程序段,则程序段的输出结果为 【16】 。
#include "stdio.h"
int fun()
{static int k;
return k;}
main()
{int m;
m=fun();
printf("%d\n",m);}
【命题目的】考查对于静态存储类的局部变量的掌握情况。
【解题要点】在整个程序运行期间,静态局部变量在内存的静态存储区中占据着永久性的存储单元。即使退出函数以后,下次再进入函数时,静态局部变量仍使用原来的存储单元,如未赋初值,则系统会自动赋值为0。
【考点链接】C语言中,有两种存储类别:一种是自动类;一种是静态类。局部变量既可以说明成自动类型;也可以说明成静态类型;而全局变量只能是静态类型。

(15)现有如下定义:struct aa{int a;float b;char c;}*p;现需用malloc函数动态的申请一个struct aa类型大小的空间(由p指向),则定义的语句为: 【17】 。
【命题目的】考查对于动态空间申请函数的掌握情况。
【解题要点】ANSI C标准规定malloc函数的返回值类型为void *,函数的调用形式为:malloc(size)要求size的类型为unsigned int。由于返回类型为void *,所以在调用函数时,必须利用强制转换将其转换为所需要的类型。
【考点链接】free函数的作用是释放申请的内存空间。

(16)有如图所示的双链表结构,请根据图示完成结构体的定义:
 
{ int data;
 【18】 } node;
【命题目的】考查对于结构体对链表的定义掌握情况。
【解题要点】结构体对链表的定义。

(17)当调函数frend从磁盘文件中读取数据时,若函数数的返回时为5,则表明 【19】 ;若函数的返回值为0,则表明 【20】 。【命题目的】考查对于函数基本操作的掌握情况。
【解题要点】fread函数的调用形式为fread(buffer,size,cout,fp);其中buffer是数据块的指针,size表示每个数据块的字节数。count用来指定每读、写一次,输入\输出数据块的个数(每个数据块有size个字节)。fp是文件的指针。

报 名 此 课 程 / 咨 询 相 关 信 息
【预约登门】 【网上咨询】 【订座试听】 【现在报名】
课程名称
计算机等级考试二级C语言考前密卷(7)
真实姓名
* 性 别
联系电话
* E-mail:
所在地区
咨询内容

      

相关文章:

Copyright© 2004-2010 www.szedu.net 深圳教育在线 版权所有
中国·深圳
粤ICP备06023013号