您现在的位置是:主页 > 技能高考计算机题库 > 全国计算机等级考试二级C语言必考精选(供题型

全国计算机等级考试二级C语言必考精选(供题型

时间:2018-12-20 16:36  来源:未知  阅读次数:51

  

  一、选择题(每小题1分,共40分)

  1.设循环队列的存储空间为Q(1:35),初始状态为front=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为。

  A.20

  B.0或35

  C.15

  D.16

  2.下列关于栈的叙述中,正确的是。

  A.栈底元素一定是最后入栈的元素

  B.栈操作遵循先进后出的原则

  C.栈顶元素一定是最先入栈的元素

  D.以上三种说法都不对

  3.下列链表中,其逻辑结构属于非线性结构的是

  A.双向链表

  B.带链的栈

  C.二叉链表

  D.循环链表

  4.在关系数据库中,用来表示实体间联系的是。

  A.网状结构

  B.树状结构

  C.属性

  D.二维表

  5.公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员。则实体部门和职员间的联系是。

  A.1:m联系

  B.m:n联系

  C.1:1联系

  D.m:1联系

  6.有三个关系R、S和T如下:

  由关系R和S通过运算得到关系T,则所使用的运算为。

  A.并

  B.自然连接

  C.笛卡尔积

  D.交

  7.数据字典(DD)所定义的对象都包含于。

  A.软件结构图

  B.方框图

  C.数据流图(DFD图)

  D.程序流程图

  8.软件需求规格说明书的作用不包括。

  A.软件设计的依据

  B.软件可行性研究的依据

  C.软件验收的依据

  D.用户与开发人员对软件要做什么的共同理解

  9.下面属于黑盒测试方法的是。

  A.边界值分析

  B.路径覆盖

  C.语句覆盖

  D.逻辑覆盖

  10.下面不属于软件设计阶段任务的是。

  A.制订软件确认测试计划

  B.数据库设计

  C.软件总体设计

  D.算法设计

  11.以下叙述中正确的是。

  A.在C语言程序中,main函数必须放在其他函数的最前面

  B.每个后缀为.C的C语言源程序都可以单独进行编译

  C.在C语言程序中,只有main函数才可单独进行编译

  D.每个后缀为.C的C语言源程序都应该包含一个main函数

  12.以下选项中不合法的标识符是。

  A.&a

  B.FOR

  C.print

  D._00

  13.以下选项中表示一个合法的常量是。

  A.9 9 9

  B.0Xab

  C.123E0.2

  D.2.7e

  14.C语言主要是借助以下哪个功能来实现程序模块化?

  A.定义函数

  B.定义常量和外部变量

  C.三种基本结构语句

  D.丰富的数据类型

  15.以下叙述中错误的是。

  A.非零的数值型常量有正值和负值的区分

  B.常量是在程序运行过程中值不能被改变的量

  C.定义符号常量必须用类型名来设定常量的类型

  D.用符号名表示的常量叫符号常量

  16.若有定义和语句:int a,b;scanf("%d,%d",&a,&b);以下选项中的输入数据,不能把值3赋给变量a、5赋给变量b的是。

  A.3,5,

  B.3,5,4

  C.3 5

  D.3,5

  17.C语言中char类型数据占字节数为。

  A.3

  B.4

  C.1

  D.2

  18.下列关系表达式中,结果为“假”的是。

  A.(3+4)>6

  B.(3!=4)>2

  C.3<=4‖3

  D.(3<4)==1

  19.若以下选项中的变量全部为整型变量,且已正确定义并赋值,则语法正确的switch语句是。

  A.switch(a+9)

  { case cl:y=a-b;

  case c2:y=a+b;

  }

  B.switch a*b

  { case l0:x=a+b;

  default:y=a-b;

  }

  C.switch(a+b)

  { casel:case3:y=a+b;break;

  case0:case4:y=a-b;

  }

  D.switch(a*a+b*b)

  { default:break;

  case 3:y=a+b;break;

  case 2:y=a-b;break;

  }

  20.有以下程序:

  #include

  main

  { int a=-2,b=0;

  while(a++&&++b);

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

  }

  程序运行后的输出结果是。

  A.1,3

  B.0,2

  C.0,3

  D.1,2

  21.设有定义:int x=0,*p;,立刻执行以下语句,正确的语句是。

  A.p=x;

  B.*p=x;

  C.p=NULL;

  D.*p=NULL;

  22.下列叙述中正确的是。

  A.可以用关系运算符比较字符串的大小

  B.空字符串不占用内存,其内存空间大小是0

  C.两个连续的单引号是合法的字符常量

  D.两个连续的双引号是合法的字符串常量

  23.有以下程序:

  #include

  main

  { char a=’H’;

  a=(a>=’A’&&a<=’Z’)?(a-’A’+’a’):a;

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

  }

  程序运行后的输出结果是。

  A.A

  B.a

  C.H

  D.h

  24.有以下程序:

  #include

  int f(int x);

  main

  { int a,b=0;

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

  { b=b+f(a);

  putchar('A'+b);

  }

  }

  int f(int x)

  { return x*x+1; }

  程序运行后的输出结果是。

  A.ABE

  B.BDI

  C.BCF

  D.BCD

  25.设有定义:int x[2][3];,则以下关于二维数组X的叙述错误的是。

  A.x[0]可看做是由3个整型元素组成的一维数组

  B.x[0]和x[1]是数组名,分别代表不同的地址常量

  C.数组x包含6个元素

  D.可以用语句x[0]=0;为数组所有元素赋初值0

  26.设变量p是指针变量,语句p=NULL;是给指针变量赋NULL值,它等价于。

  A.p="";

  B.p="0";

  C.p=0;

  D.p=";

  27.有以下程序:

  #include

  main

  { int a={10,20,30,40},*p=a,i;

  for(i=0;i<=3;i++){a[i]=*p;p++;}

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

  }

  程序运行后的输出结果是。

  A.30

  B.40

  C.10

  D.20

  28.有以下程序:

  #include

  #define N 4

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

  { int i;

  for(i=0;i

  b[i]=a[i][i]-a[i][N-1-i];

  }

  main

  { int x[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},y[N],i;

  fun(x,y);

  for(i=0;i

  printf("%d,", y[i]);

  printf("\n");

  }

  程序运行后的输出结果是。

  A.-3,-1,1,3,

  B.-12,-3,0,0,

  C.0,1,2,3,

  D.-3,-3,-3,-3,

  29.有以下程序(strcpy为字符串复制函数,strcat为字符串连接函数):

  #include

  #include

  main

  { char a[10]="abc",b[10]="012",c[10]="xyz";

  strcpy(a+1,b+2);

  puts(strcat(a,c+1));

  }

  程序运行后的输出结果是。 c/c++资料分享qun 615968007

  A.al2xyz

  B.12yz

  C.a2yz

  D.bc2yz

  30.以下选项中,合法的是。

  A.char str3={’d’,’e’,’b’,’u’,’g’,’\0’};

  B.char str4;str4="hello world";

  C.char name[10];name="china";

  D.char str1[5]="pass",str2[6];str2=str1;

  31.有以下程序:

  #include

  main

  { char*s="12134";

  int k=0,a=0;

  while(s[k+1]!='\0')

  { k++;

  if(k%2==0)

  { a=a+(s[k]-'0'+1);

  continue;

  }

  a=a+(s[k]-'0');

  }

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

  }

  程序运行后的输出结果是。

  A.k=6 a=11

  B.k=3 a=14

  C.k=4 a=12

  D.k=5 a=15

  32.有以下程序:

  #include

  main

  {

  char a[5][10]={"one","two","three","four","five"};

  int i,j;

  char t;

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

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

  if(a[i][0]>a[j][0])

  {t=a[i][0];a[i][0]=a[j][0];a[j][0]=t;}

  puts(a[1]);

  }

  程序运行后的输出结果是。

  A.fwo

  B.fix

  C.two

  D.owo

  33.有以下程序:

  #include

  int a=1,b=2;

  void funl(int a,int b)

  {printf( "%d %d ",a,b); }

  void fun2

  { a=3;b=4; }

  main

  { funl(5,6);

  fun2;

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

  }

  程序运行后的输出结果是。

  A.1 2 5 6

  B.5 6 3 4

  C.5 6 1 2

  D.3 4 5 6

  34.有以下程序:

  #include

  void func(int n)

  { static int num=1;

  num=num+n;

  printf("%d ",num);

  }

  main

  { func(3);

  func(4);

  printf("\n");

  }

  程序运行后的输出结果是。

  A.4 8

  B.3 4

  C.3 5

  D.4 5

  35.有以下程序:

  #include

  #include

  void fun(int*pl,int*p2,int*s)

  { s=(int*)malloc(sizeof(int));

  *s=*pl+*p2;

  free(s);

  }

  main

  { int a=1,b=40,*q=&a;

  fun(&a,&b,q);

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

  }

  程序运行后的输出结果是。

  A.42

  B.0

  C.1

  D.41

  36.有以下程序:

  #include

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

  void f(struct STU a)

  { struct STU b={"Zhao",’m’,85,90};

  a[1]=b;

  }

  main

  { struct STU c[2]={{"Qian",’f’,95,92},{"Sun",’m’, 98,99}};

  f(c);

  printf(”%s,%c,%d,%d,”,c[0].name,c[0].sex,c[0].score[0],c[0].score[1]);

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

  }

  程序运行后的输出结果是。

  A.Zhao,m,85,90,Sun,m,98,99

  B.Zhao,m,85,90,Qian,f,95,92

  C.Qian,f,95,92,Sun,m,98,99

  D.Qian,f,95,92,Zhao,m,85,90

  37.以下叙述中错误的是。

  A.可以用typedef说明的新类型名来定义变量

  B.typedef说明的新类型名必须使用大写字母,否则会出编译错误

  C.用typedef可以为基本数据类型说明一个新名称

  D.用typedef说明新类型的作用是用一个新的标识符来代表已存在的类型名

  38.以下叙述中错误的是。

  A.函数的返回值类型不能是结构体类型,只能是简单类型

  B.函数可以返回指向结构体变量的指针

  C.可以通过指向结构体变量的指针访问所指结构体变量的任何成员

  D.只要类型相同,结构体变量之间可以整体赋值

  39.若有定义语句int b=2;,则表达式(b<<2)/(3‖b)的值是。

  A.4

  B.8

  C.0

  D.2

  40.有以下程序:

  #include

  main

  { FILE *fp;

  int i,a[6]={1,2,3,4,5,6};

  fp=fopen("d2.dat","w+");

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

  fprintf(fp,"%d\n",a[i]);

  rewind(fp);

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

  fscanf(fp,"%d",&a[5-i]);

  fclose(fp);

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

  printf("%d,",a[i]);

  }

  程序运行后的输出结果是。

  A.4,5,6,1,2,3,

  B.1,2,3,3,2,1,

  C.1,2,3,4,5,6,

  D.6,5,4,3,2,1,

  二、程序填空题(共18分)

  str是一个由数字和字母字符组成的字符串,由变量num传入字符串长度。请补充函数proc,该函数的功能是:把字符串str中的数字字符转换成数字并存放到整型数组bb中,函数返回数组bb的长度。

  例如,str="abcl23de45f967",结果为:l234567。

  注意:部分源程序给出如下。

  请勿改动main函数和其他函数中的任何内容,仅在函数proc的横线上填入所编写的若干表达式或语句。

  #include

  #define M 80

  int bb[M];

  int proc(char str,int bb,int num)

  {

  int i,n=0;

  for(i=0;i

  if(【1】)

  {

  bb[n]=【2】;

  n++;

  }

  return【3】;

  }

  main

  {

  char str[M];

  int bb[M];

  int num=0,n,i;

  printf("Enter a string:\n");

  gets(str);

  while(str[num])

  num++;

  n=proc(str,bb,num);

  for(i=0;i

  printf("%d",bb[i]);

  }

  三、程序改错题(共18分)

  下列给定程序中函数fun的功能是:将p所指字符串中的所有字符复制到b中,要求每复制三个字符之后插入一个空格。

  例如,若给a输入字符串:ABCDEFGHIJK,调用函数后,字符数组b中的内容为:ABC DEF HGI JK。

  请修改程序中的错误,使它能得到正确的结果。

  注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

  #include

  #include

  void fun(char *p, char *b)

  { int i,k=0;

  while(*p)

  { i=1;

  while( i<=3 && *p){

  /******found******/

  b[k]=p;

  k++; p++; i++;

  }

  if( *p )

  {

  /******found******/

  b[k++]=" ";

  }

  b[k]= '\0';

  }

  main

  {

  char a[80],b[80];

  printf("Enter a string:");

  gets(a);

  printf("The original string:");

  puts(a);

  fun(a,b);

  printf("\nThe string after insert spase:");

  puts(b); printf("\n\n ");

  }

  四、程序设计题(共24分)

  N名学生的成绩已在主函数中放入一个带头结点的链表结构中,h指向链表的头结点。请编写函数fun,其功能是:求出平均值,并由函数值返回。

  例如,若学生的成绩是:85 76 69 85 91 72 64 87,则平均分应当是:78.625。

  注意:部分源程序给出如下。

  请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

  #include

  #include

  #define N 8

  struct slist

  { double s;

  struct slist *next;

  };

  typedef struct slist STREC;

  double fun( STREC *h )

  {

  }

  STREC *creat( double *s )

  { STREC *h,*p,*q;

  int i=0;

  h=p=( STREC *) malloc ( sizeof( STREC ) );

  p->next=0;

  while(i

  {

  q=( STREC *) malloc ( sizeof( STREC ) );

  q->s=s[i];

  i++;

  p->next=q;

  p=q;

  }

  p->next=0;

  return h;

  }

  void outlist(STREC *h)

  {

  STREC *p;

  p=h->next;

  printf(" head");

  do

  {

  printf("->%4.1f",p->s);

  p=p->next;

  }while(p!=0);

  printf("\n\n");

  }

  main

  {

  double s[N]={85,76,69,85,91,72,64,87},ave;

  //void NONO;

  STREC *h;

  h=creat( s );

  outlist( h );

  ave=fun( h );

  printf("ave=%6.3f\n",ave);

  //NONO;

  }