试题

计算机二级《C语言》备考试题及答案

时间:2025-02-06 14:58:29 晶敏 试题 我要投稿

2024年计算机二级《C语言》备考试题及答案

  无论是身处学校还是步入社会,我们都经常看到试题的身影,试题是用于考试的题目,要求按照标准回答。那么你知道什么样的试题才能有效帮助到我们吗?以下是小编为大家收集的2024年计算机二级《C语言》备考试题及答案,欢迎大家分享。

2024年计算机二级《C语言》备考试题及答案

  计算机二级《C语言》备考试题及答案 1

  (1)软件设计中划分模块的一个准则是(  )。

  A.低内聚低耦合

  B.高内聚低耦合

  C.低内聚高耦合

  D.高内聚高耦合

  (2)下列数据结构中,属于非线性结构的是(  )。

  A.循环队列

  B.带链队列

  C.二叉树

  D.带链栈

  (3)算法的空间复杂度是指(  )。

  A.算法在执行过程中所需要的计算机存储空间

  B.算法所处理的数据量

  C.算法程序中的语句或指令条数

  D.算法在执行过程中所需要的临时工作单元数

  (4)下列选项中不属于结构化程序设计原则的是(  )。

  A.可封装。

  B.自顶向下

  C.模块化

  D.逐步求精

  (5)在E—R图中,用来表示实体联系的图形是(  )。

  A.椭圆形

  B.矩形

  C.菱形

  D.三角形

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

  其中关系T由关系R和S通过某种操作得到,该操作为(  )。

  A.选择

  B.投影

  C.交

  D.并

  (7)数据库应用系统中的核心问题是(  )。

  A.数据库设计

  B.数据库系统设计

  C.数据库维护

  D.数据库管理员培训

  (8)下面叙述中错误的是(  )。

  A.软件测试的目的是发现错误并改正错误

  B.对被调试的程序进行“错误定位”是程序调试的必要步骤

  C.程序调试通常也称为Debug

  D.软件测试应严格执行测试计划,排除测试的随意性

  (9)将E-R图转换为关系模式时,实体和联系都可以表示为(  )。

  A.属性

  B.键

  C.关系

  D.域

  (10)以下叙述中错误的是(  )。

  A.使用三种基本结构构成的程序只能解决简单问题

  B.结构化程序由顺序、分支、循环三种基本结构组成

  C.C语言是一种结构化程序设计语言

  D.结构化程序设计提倡模块化的设计方法

  (11)耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是(  )。

  A.提高耦合性降低内聚性有利于提高模块的独立性

  B.降低耦合性提高内聚性有利于提高模块的独立性

  C.耦合性是指一个模块内部各个元素间彼此结合的紧密程度

  D.内聚性是指模块间互相连接的紧密程度

  (12)下列叙述中正确的是(  )。

  A.栈是“先进先出”的线性表

  B.队列是“先进后出”的线性表

  C.循环队列是非线性结构

  D.有序线性表既可以采用顺序存储结构,也可以采用链式存储结构

  (13)支持子程序调用的数据结构是(  )。

  A.栈

  B.树

  C.队列

  D.二叉树

  (14)下列排序方法中,最坏情况下比较次数最少的是(  )。

  A.冒泡排序

  B.简单选择排序

  C.直接插入排序

  D.堆排序

  (15)C源程序中不能表示的数制是(  )。

  A.十六进制

  B.八进制

  C.十进制

  D.二进制

  (16)下列数据结构中,能够按照“先进后出”原则存取数据的是(  )。

  A.循环队列

  B.栈

  C.队列

  D.二叉树

  (17)对于循环队列,下列叙述中正确的是(  )。

  A.队头指针是固定不变的

  B.队头指针一定大于队尾指针

  C.队头指针一定小于队尾指针

  D.队头指针可以大于队尾指针,也可以小于队尾指针

  (18)程序流程图中带有箭头的线段表示的是(  )。

  A.图元关系

  B.数据流

  C.控制流

  D.调用关系

  (19)结构化程序设计的基本原则不包括(  )。

  A.多态性

  B.自顶向下

  C.模块化

  D.逐步求精

  (20)软件设计中模块划分应遵循的.准则是(  )。

  A.低内聚低耦合

  B.高内聚低耦合

  C.低内聚高耦合

  D.高内聚高耦合

  参考答案与解析

  (1)B

  【解析】一般较优秀的软件设计。应尽量做到高内聚,低耦合,即减弱模块之问的耦合性和提高模块内的内聚性,有利于提高模块的独立性。

  (2)C

  【解析】树是简单的非线性结构,所以二叉树作为树的一种也是一种非线性结构。

  (3)A

  【解析】算法的空间复杂度是指算法在执行过程中所需要的内存空间。所以选择A。

  (4)A

  【解析】结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用goto语句,所以选择A。

  (5)C

  【解析】在E-R图中实体集用矩形,属性用椭圆,联系用菱形。

  (6)D

  【解析】关系T中包含了关系R与S中的所有元组,所以进行的是并的运算。

  (7)A

  【解析】数据库应用系统中的核心问题是数据库的设计。

  (8)A

  【解析】软件测试的目的是为了发现错误而执行程序的过程,并不涉及改正错误,所以选项A错误。程序调试的基本步骤有:错误定位、修改设计和代码,以排除错误、进行回归测试,防止引进新的错误。程序调试通常称为Debug,即排错。软件测试的基本准则有:所有测试都应追溯到需求、严格执行测试计划,排除测试的随意性、充分注意测试中的群集现象、程序员应避免检查自己的程序、穷举测试不可能、妥善保存测试计划等文件。

  (9)C

  【解析】从E-R图到关系模式的转换是比较直接的,实体与联系都可以表示成关系,E-R图中属性也可以转换成关系的属性。

  (10)A

  【解析】使用顺序,选择(分支),循环三种基本结构构成的程序可以解决所有问题,而不只是解决简单问题,所以A错误。

  (11)B

  【解析】模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性,所以A错误,B正确。耦合性是模块间互相连接的紧密程度的度量而内聚性是指一个模块内部各个元素间彼此结合的紧密程度,所以C与D错误。

  (12)D

  【解析】栈是先进后出的线性表,所以A错误;队列是先进先出的线性表,所以B错误;循环队列是线性结构的线性表,所以C错误。

  (13)A

  【解析】栈支持子程序调用。栈是一种只能在一端进行插入或删除的线性表,在主程序调甩子函数时要首先保存主程序当前的状态,然后转去执行子程序,最终把子程序的执行结果返回到主程序中调用子程序的位置,继续向下执行.这种调用符合栈的特点,因此本题的答案为A。

  (14)D

  【解析】冒泡排序与简单插入排序与简单选择排序法在最坏情况下均需要比较n(n-1)/2次,而堆排序在最坏情况下需要比较的次数是nlog2n。

  (15)D

  【解析】在C语言中整型常量可以用十进制、八进制和十六进制等形式表示,但不包括二进制,所以选择D。

  (16)B

  【解析】栈是按先进后出的原则组织数据的。队列是先进先出的原则组织数据。

  (17)D

  【解析】循环队列的队头指针与队尾指针都不是固定的,随着人队与出队操作要进行变化。因为是循环利用的队列结构,所以队头指针有时可能大于队尾指针,有时也可能小于队尾指针。

  (18)C

  【解析】在数据流图中,用标有名字的箭头表示数据流。在程序流程图中,用标有名字的箭头表示控制流。所以选择C。

  (19)A

  【解析】结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用goto语句,所以选择A。

  (20)B

  【解析】软件设计中模块划分应遵循的准则是高内聚低偶合、模块大小规模适当、模块的依赖关系适当等。模块的划分应遵循一定的要求,以保证模块划分合理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。模块之间的耦合应尽可能的低,模块的内聚度应尽可能的高。

  计算机二级《C语言》备考试题及答案 2

  c语言试题

  一 选择题(7分,每小题0.5分)

  1.C语言源程序的基本单位是( )。

  A 过程 B 函数 C 子程序 D 标识符

  2.下列程序的输出结果是( )。

  main( )

  { int a=7,b=5;

  printf("%d ",b=b/a);

  }

  A 5 B 1 C 0 D不确定值

  3.假设变量a,b均为整型,表达式(a=5,b=2,a>b?a++:b++,a+b)的值是( )。

  A 7 B 8 C 9 D 2

  4.设a为int型变量,执行下列赋值语句后,a的取值分别是( )。

  a=125.534; a=(int)125.521%4; a=5<<2;

  A 125,31,1 B 125,1,20 C 125,31,20 D 125.534,2,20

  5.设有如下程序段,下面描述中正确的是 ( )。

  int k=10; while(k=0) k=k-1;

  A 循环执行一次 B循环是无限循环 C循环体语句一次也不执行 D循环体语句执行一次

  6.以下程序的输出结果为( )。

  int i;

  void prt( )

  { for(i=5;i<8;i++) printf("%c",*);

  printf(" ");

  }

  main( )

  { for(i=5;i<=8;i++) prt( );

  }

  A *** B *** *** *** *** C *** *** D * * *

  7.在C语言程序中,以下说法正确的是( )。

  A函数的定义可以嵌套,但函数的调用不可以嵌套

  B函数的定义不可以嵌套,但函数的调用可以嵌套

  C函数的定义和函数的调用都不可以嵌套

  D函数的定义和函数的调用都可以嵌套

  8.以下函数调用语句中含有( )个实参。

  func((e1,e2),(e3,e4,e5));

  A 2 B 3 C 5 D 语法错误

  9.以下程序的输出结果为( )。

  #define ADD(x) x*x

  main( )

  { int a=4,b=6,c=7,d=ADD(a+b)*c;

  printf("d=%d",d);

  }

  A d=70 B d=80 C d=140 D d=700

  10.已知职工记录描述如下,在Turbo C中,系统为变量w分配( )字节的空间。

  struct worker

  { int no;

  char name[20];

  char sex;

  union

  { int day; int month; int year;}birth;

  } w;

  A 29 B 20 C 25 D 6

  11.设有以下定义,值为5的枚举常量是( )。

  enum week{sun,mon=4,tue,wed,thu,fri,sat} w;

  A tue B sat C fri D thu

  12.下面选项中正确的赋值语句是(设 char a[5],*p=a;)( )。

  A p="abcd"; B a="abcd"; C *p="abcd"; D *a="abcd";

  13.设有以下程序段,则值为6的表达式是( )。

  struct st { int n; struct st *next;};

  static struct st a[3]={5,&a[1],7,&a[2],9,0 },*p;

  p=&a[0];

  A p++->n B ++p->n C p->n++ D (*p).n++

  14.C语言中的文件类型只有( )。

  A 索引文件和文本文件两种 B 文本文件一种

  C 二进制文件一种 D ASCII码文件和二进制文件两种

  二 判断对错,对的划“√”,错的.划“×”(5分,每小题0.5分)

  1.在Turbo C中,整型数据在内存中占2个字节。( )

  2.int i=20;switch(i/10){case 2:printf("A");case 1:printf("B");}的输出结果为A。( )

  3.break语句用在循环体中,可结束本层循环,continue语句用在循环体中,可结束本次循环。( )

  4.函数的递归调用不过是一个函数直接或间接地调用它自身。( )

  5.函数strlen("ASDFG ")的值是7。( )

  6.通过return语句,函数可以带回一个或一个以上的返回值。( )

  7.结构体类型只有一种。 ( )

  8.char *p="girl";的含义是定义字符型指针变量p,p的值是字符串"girl"。( )

  9.若有定义:char *p(char a[10]);则p是函数名。( )

  10.用fopen("file","r+");打开的文件"file"可以进行修改。 ( )

  三 写出下列程序的运行结果(10分,每小题2分)

  1.float average (float array[10])

  { int i;

  float aver,sum=array[0];

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

  sum=sum+array[i];

  aver=sum/10;

  return(aver);

  }

  main( )

  { float score[10]={89,67.5,78,91,56,82.5,65,70,79,88},aver;

  int i;

  aver=average (score);

  printf (“average score is %5.2f ”,aver);

  }

  2.main( )

  { char a[5]={‘A’,‘B’,‘C’,‘D’,‘E’},*p=a,**pa;

  for(p=0;p

  printf(“%2c”,*p);

  printf(“ ”);

  printf(“%2c ”,**(pa=&p));

  }

  3.main( )

  { int a,b,s=0;

  for(a=1,b=1;a<=100;a++)

  { if(b>=20) break;

  if(b%3==1)

  { b+=3; continue; }

  b-=5;

  }

  printf(“a=%d b=%d ”,a,b);

  }

  4.main()

  { printf(“main( ) :%d ”,fact(5));

  fact(-5);

  }

  fact(int value)

  { int f;

  if(value<0)

  { printf(“Arg error ");

  return(-1);

  }

  else if(value==1||value==0) f=1;

  else f=value*fact(value-1)+1;

  printf(“This called value=%d ”,f);

  return f;

  }

  5.main( )

  { int a=012,b=0x12,k=12;

  char c=‘102’,d=‘ ’;

  printf(“a=%d b=%d k=%d ”,a,b,k);

  printf(“c=%c,d=%c%o ”,c,d,a);

  a=‘A’; c=49;

  printf(“a=%d c=%c ”,a,c);

  }

  四 阅读下列程序,在 处填入适当内容,使程序完整(8分,每个空1分)

  1.有一个3*4矩阵,求其中的最大元素。

  max_value( (1) )

  { int i,j,max;

  max=array[0][0];

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

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

  if(array[i][j]>max)

  max=array[i][j];

  (2) ;

  }

  main( )

  { int a[3][4], i,j;

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

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

  (3) ;

  printf(“max value is %d ”,max_value(a));

  }

  2.输入x、y两个整数,按先大后小的顺序输出x、y。

  #include “stdio.h”

  main( )

  { int x,y, *px,*py, (4) ;

  scanf(“%d%d”,&x,&y);

  (5) ; (6) ;

  if(x

  { p=px; px=py; py=p; }

  printf(“x=%d,y=%d ”,x,y);

  printf(“MAX=%d,MIN=%d ”,*px,*py);

  }

  3.用选择排序法对任意10个整数按照由小到大排序。

  main()

  { int a[11],i,j,k,t;

  printf("Please input 10 numbers: ");

  for(i=1;i<11;i++) scanf("%d",&a[i]);

  printf(" ");

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

  { (7) ;

  for(j=i+1; (8) ;j++)

  if(a[j]>a[k]) k=j;

  if(k!=i)

  { t=a[k]; a[k]=a[i]; a[i]=t;}

  }

  printf("The sorted numbers: ");

  for(i=1;i<11;i++) printf("%d ",a[i]);

  }

  答案

  一 选择题(7分,每小题0.5分)

  1. B 2. C 3. B 4. B 5. C

  6. A 7. B 8. A 9. A 10. C

  11. A 12. A 13. B 14. D

  二 判断对错,对的划“√”,错的划“×”(5分,每小题0.5分)

  1.× 2.× 3.√ 4.√ 5.×

  6.× 7.× 8.× 9.√ 10.√

  三 写出下列程序的运行结果(10分,每小题2分)

  1. 2. 3.

  4. 5.

  四 阅读下列程序,在 处填入适当内容,使程序完整(8分,每个空1分)

  1.(1)int array[3][4](int array[][4]) (2)return(max) (3)scanf(“%d”,&a[i][j])

  2.(4)*p (5)px=&x(py=&y) (6)py=&y(px=&x)

  3.(7) (8)

  2003C语言试题3

  一 选择题(24分,每小题2分)

  1.已知函数fread的调用形式为fread(buffer,size,count,fp),其中buffer代表的是( )。

  A 存放读入数据项的存储区 B 存放读入数据的地址或指向此地址的指针

  C 一个指向所读文件的文件指针 D 一个整形变量,代表要读入的数据项总数

  2.以下程序的输出结果为( )。

  main( )

  { int i=010,j=10;

  printf("%d,%d ",i++,j--);

  }

  A 11,9 B 9,10 C 8,10 D 9,9

  3.设a为int型变量,执行下列赋值语句后,a的取值分别是( )。a=125.534;a=20.0/3;a=(int)125.521%4;a=5<<2;

  A 125,6,31,1 B 125,6,1,20 C 125,6.666666,31,20 D 125.534,6.666666,2,20

  4.设i和k都是int类型,则for循环语句( )。

  for(i=0,k=-1;k=1;i++,k++) printf("****");

  A 循环结束的条件不合法 B 循环体一次也不执行 C 循环体只执行一次 D 是无限循环

  5.以下程序的输出结果为( )。

  main( )

  { char c;

  int i;

  for(i=65;i<68;i++)

  { c=i+32;

  switch(c)

  { case a:case b:case c:printf("%c,",c);break; default:printf("end");}

  }

  }

  A a,b,c,end B a,a,a,end C a,a,a, D a,b,c,

  6.函数调用语句:fseek(fp,-10L,2);的含义是( )。

  A 将文件位置指针从文件末尾处向文件头的方向移动10个字节

  B 将文件位置指针从当前位置向文件头的方向移动10个字节

  C 将文件位置指针从当前位置向文件末尾方向移动10个字节

  D 将文件位置指针移到距离文件头10个字节处

  7.以下程序的输出结果为( )。

  main( )

  { char s1[40]="country",s2[20]="side";

  int i=0,j=0;

  while(s1[i]!=) i++;

  while(s2[j]!=) s1[i++]=s2[j++];

  s1[i]=0;

  printf("%s ",s1);

  }

  A side B country C sidetry D countryside

  8.下列说法不正确的是( )。

  A 主函数main中定义的变量在整个文件或程序中有效

  B 不同函数中,可以使用相同名字的变量

  C 形式参数是局部变量

  D 在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效

  9.在下列程序段中,枚举变量 c1的值是( )。

  enum color { red,yellow,blue=4,green,white}c1; c1=yellow; c1=white;

  A 1 B 3 C 5 D 6

  10.设有说明 int (*ptr)();其中标识符ptr是( )。

  A 是一个指向整形变量的指针 B 是一个指针,它指向一个函数值是int的函数

  C 是一个函数名 D定义不合法

  11.定义由n个指向整形数据的指针组成的数组p,其正确的方式为( )。

  A int p; B int (*p)[n]; C int *p[n]; D int (*p)( );

  12.具有相同类型的指针类型变量p与数组a,不能进行的操作是( )。

  A p=a; B *p=a[0]; C p=&a[0]; D p=&a;

  二 判断对错,对的划“√”,错的划“×”(20分,每小题2分)

  1.参加位运算的数据可以是任何类型的数据。( )

  2.若有定义和语句:int a;char c;float f;scanf("%d,%c,%f",&a,&c,&f);若通过键盘输入:10,A,12.5,则a=10,c=‘A’,f=12.5。( )

  3.C语言把文件看作是一个字符(字节)的序列。( )

  4.若有宏定义:#define S(a,b) t=a;a=b;b=t由于变量t没定义,所以此宏定义是错误的。( )

  5.在Turbo C中,下面的定义和语句是合法的:file *fp;fp=fopen("a.txt","r");( )

  6.若有定义:char s[ ]="china";则Turbo C系统为数组s开辟6个字节的内存单元。( )

  7.若有定义和语句:int a[3][3]={{3,5},{8,9},{12,35}},i,sum=0;for(i=0;i<3;i++) sum+=a[i][2-i];则sum=21。( )

  8.若有定义和语句:struct student { int num; char name[10]; float score;} s[5]={{1,"lili",98.5},{9,"xiaohua",66}},*p=s;printf("%d",*p++);输出结果是1。( )

  9.在程序中定义了一个结构体类型后,可以多次用它来定义具有该类型的变量。( )

  10.在Turbo C中,此定义和语句是合法的:enum aa{ a=5,b,c}bb;bb=(enum aa)5;( )

  三 写出下列程序的运行结果(36分,每小题6分)

  1.main( )

  { int i=29,j=6,k=2,s;

  s=i+i/j%k-9;

  printf(“s=%d ”,s);

  }

  2.main( )

  { int x=31,y=2,s=0;

  do

  { s-=x*y;

  x+=2;

  y-=3;} while( x%3==0);

  printf(“x=%d y=%d s=%d ”,x,y,s);

  }

  3.main( )

  { int a[6]={10,20,30,40,50,60},i;

  invert(a,0,5);

  for(i=0;i<6;i++) printf(“%d,”,a[i]);

  printf(“ ”);

  }

  invert(int s[ ],int i,int j)

  { int t;

  if(i

  { invert(s,i+1j-1);

  t=s[i];s[i]=s[j];s[j]=t;

  }

  }

  4.#include

  main()

  { char str[ ]=“The C program”,c;

  int i;

  for(i=2;(c=str[i])!=‘’;i++)

  { switch(c)

  { case ‘g’: ++i; break;

  case ‘o’: continue;

  default: printf(“%c”,c); continue;

  }

  printf(“*”);

  }

  printf(“ ”);

  }

  5.struct w

  { char low;

  char high;

  };

  union u

  { struct w byte;

  short word;

  }uw;

  main( )

  { int result;

  uw.word=0x1234;

  printf(“word value:%04x ”,uw.word);

  printf(“high byte:%02x ”,uw.byte.high);

  printf(“low byte:%02x ”,uw.byte.low);

  uw.byte.low=0x74;

  printf(“word value:%04x ”,uw.word);

  result=uw.word+0x2a34;

  printf(“the result:%04x ”,result);

  }

  6.main()

  { char *s2=“I love China!”,**s1=&s2;

  char *s3,c,*s4=“w”;

  s3=&c;

  *s3=‘H’;

  s2=s2+2;

  printf(“%s %c %s %c ”,s2,*s3,s4,**s1);

  }

  四 阅读下列程序,在 处填入适当内容,使程序完整(20分,每个空2分)

  1. 百马百担问题:有100匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,问大、中、小马各多少匹?

  main( )

  { int hb,hm,hl,n=0;

  for(hb=0;hb<=100;hb+= (1) )

  for(hm=0;hm<=100-hb;hm+= (2) )

  { hl=100-hb- (3) ;

  if(hb/3+hm/2+2* (3) ==100)

  { n++;

  printf("hb=%d,hm=%d,hl=%d ",hb/3,hm/2,2*hl);

  }

  }

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

  }

  2.用“起泡法”对输入的10个字符排序后按从小到大的次序输出。

  #define N 10

  char str[N];

  main()

  { int i,flag;

  for(flag=1;flag==1;)

  { scanf("%s",str);

  flag=0;

  printf(" ");

  }

  sort(___(4)___);

  for(i=0;i

  printf("%c",str[i]);

  printf(" ");

  }

  sort(char str[N])

  { int i,j;

  char t;

  for(j=1;j

  for(i=0;(i

  if(str[i]>str[i+1])

  { t=str[i];

  ____(5)____;

  ____(6)____;

  }

  }

  3.以下程序是一个函数,功能是求二阶矩阵(m行n列矩阵)的所有靠外侧的各元素值之和。(本程序中二阶矩阵用一维数组来表示。)

  例如,矩阵为:

  3 0 0 3

  2 5 7 3

  1 0 4 2

  则所有靠外侧的各元素值之和为3+0+0+3+2+3+1+0+4+2=18。

  add(int m,int n,int arr[])

  { int i,j,sum=0;

  for(i=0;i

  for(j=0;j

  sum=sum+ (7) ;

  for(j=0;j

  for(i=1; (8) ;i++)

  sum=sum+arr[i*n+j];

  return(sum);

  }

  4.用指针作函数参数,编程序求一维数组中的最大和最小的元素值。

  #define N 10

  main()

  { void maxmin(int arr[],int *pt1,int *pt2,int n);

  int array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b;

  p1=&a; p2=&b;

  maxmin(array,p1,p2,N);

  printf("max=%d,min=%d",a,b);

  }

  void maxmin(int arr[],int *pt1,int *pt2,int n)

  { int i;

  *pt1=*pt2=arr[0];

  for(i=1;i

  { if(arr[i]>*pt1) (9) ;

  if(arr[i]<*pt2) (10) ;

  }

  }

  答案

  一 选择题(24分,每小题2分)

  1.( B ) 2.( C ) 3.( B ) 4.( D ) 5.( D ) 6.( A )

  7.( D ) 8.( A ) 9.( D ) 10.( B ) 11.( C ) 12.( D )

  二 判断对错,对的划“√”,错的划“×”(20分,每小题2分)

  1.( × ) 2.( √ ) 3.( √ ) 4.( × ) 5.( × )

  6.( √ ) 7.( √ ) 8.( × ) 9.( √ ) 10.( √ )

  三 写出下列程序的运行结果(36分,每小题6分)

  1. s=20 2.x=35 y=-4 s=-29 3.60,50,40,30,20,10,

  4.e C pr*am 5.word value:1234 6.love China! H w l

  high byte:12

  low byte:34

  word value:1274

  the result:3ca8

  四 阅读下列程序,在 处填入适当内容,使程序完整(20分,每个空2分)

  1.(1) 3 (2) 2 (3)hm hl

  2.(4) str (5) str[i]=str[i+1] (6) str[i+1]=t

  3.(7) arr[i*n+j](或者arr[i*10+j])

  (8) i

  4.(9) *ptr1=arr[i] (10) *ptr2=arr[i]

  计算机二级《C语言》备考试题及答案 3

  1: 第1题请编写函数fun,其功能使:将两个两位正整数a b合并形成一个整数放在c中。合并的方式使:将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的千位和十位上。

  答案:

  void fun(int a,int b,long *c)

  {*c=(b/10)*1000+(a/10)*100+(b%10)*10+a%10;}

  2: 第2题请编写一个函数fun,它的`功能使:计算n门课程的平均分,计算结果作为函数值返回。

  答案:

  float fun(float *a,int n)

  {float ave=0.0;

  int i;

  for(i=0;i

  ave+=a;

  ave/=n;

  return ave;}

  3: 第3题假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能使:将字符串尾部的*号全部删除,前面和中间的*号不删除。

  答案:

  void fun(char *a)

  {int i=0;

  char *p,*q;

  p=q=a;

  while(*p)

  p++;

  p--;

  while(*p==‘*’)

  p--;

  while(q<=p)

  {a=*q;

  i++;

  q++;}

  a=‘’;}

  4: 第4题请编写函数fun,其功能是:将两个两位数的正整数a b合并形成一个整数放在c中,合并的方式是:将a数的十位和个位数依次放在c的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。

  答案:

  void fun(int a,int b,long *c)

  {c=(b/10)*1000+(a%10)*100+(b%10)*10+a/10;}

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

  答案:

  double fun(strec *h)

  {double aver=0.0;

  while(h!=null)

  {aver+=h->s;

  hy=h->next;}

  aver/=n;

  return aver;}

  6: 第6题请编写函数fun,计算并输出给定10个数的方差。

  答案:

  double fun(double x[10])

  {int i,j;

  double s=0.0,s1=0.0;

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

  s1+=x;

  s1/=10;

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

  s+=(x[j]-s1)*(x[j]-s1);

  s/=10;

  s=pow(s,0.5);

  return s;}

  7: 第7题请编写函数fun,其功能是:将两个两位数的正整数a b合并形成一个整数放在c 中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的个位和百位上。

  答案:

  void fun(int a,int b,long *c)

  {*c=(a/10)*1000+(a%10)*10+(b%10)*100+b/10;}

  计算机二级《C语言》备考试题及答案 4

  (1)算法的时间复杂度是指_______。

  A)执行算法程序所需要的时间

  B)算法程序的长度

  C)算法执行过程中所需要的基本运算次数

  D)算法程序中的指令条数

  答案:C

  评析:所谓算法的时间复杂度,是指执行算法所需要的计算工作量。

  (2)下列叙述中正确的是________。

  A)线性表是线性结构B)栈与队列是非线性结构

  C)线性链表是非线性结构D)二叉树是线性结构

  答案:A

  评析:一般将数据结构分为两大类型:线性结构与非线性结构。线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。

  (3)下面关于完全二叉树的叙述中,错误的是_________。

  A)除了最后一层外,每一层上的结点数均达到最大值

  B)可能缺少若干个左右叶子结点

  C)完全二叉树一般不是满二叉树

  D)具有结点的完全二叉树的深度为[log2n]+1

  答案:B

  评析:满二叉树指除最后一层外每一层上所有结点都有两个子结点的二叉树。完全二叉树指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干子结点(叶子结点)的二叉树。

  C语言笔试题答案篇

  (1)结构化程序设计主要强调的是_________。

  A)程序的规模B)程序的易读性

  C)程序的执行效率D)程序的可移植性

  答案:B

  评析:结构化程序设计主要强调的是结构化程序清晰易读,可理解性好,程序员能够进行逐步求精、程序证明和测试,以保证程序的正确性。

  (2)在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是________。

  A)概要设计B)详细设计C)可行性分析D)需求分析

  答案:D

  评析:需求分析是对待开发软件提出的需求进行分析并给出详细定义,即准确地确定软件系统的功能。编写软件规格说明书及初步的用户手册,提交评审。

  (3)数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是_________。

  A)控制流B)加工C)数据存储D)源和潭

  答案:A

  评析:数据流图从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。数据流图中的主要图形元素有:加工(转换)、数据流、存储文件(数据源)、源和潭。

  (4)软件需求分析一般应确定的是用户对软件的__________。

  A)功能需求B)非功能需求C)性能需求D)功能需求和非功能需求

  答案:D

  评析:软件需求分析中需要构造一个完全的系统逻辑模型,理解用户提出的每一功能与性能要求,是用户明确自己的任务。因此,需求分析应确定用户对软件的功能需求和非功能需求。

  C语言笔试题答案篇

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

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

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

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

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

  答案:A

  评析:由数据的共享自身又可极大地减少数据冗余性,不仅减少了不必要的存储空间,更为重要的是可以避免数据的不一致性。所谓数据的一致性是指在系统中同一数据的不同出现应保持相同的值。

  (2)关系表中的每一横行称为一个________。

  A)元组B)字段C)属性D)码

  答案:A

  评析:在关系数据库中,关系模型采用二维表来表示,简称“表”。二维表是由表框架及表元组组成。在表框架中,按行可以存放数据,每行数据称为元组。

  (3)数据库设计包括两个方面的设计内容,它们是________。

  A)概念设计和逻辑设计B)模式设计和内模式设计

  C)内模式设计和物理设计D)结构特性设计和行为特性设计

  答案:A

  评析:数据库设计可分为概念设计与逻辑设计。概念设计的目的是分析数据间内在语义关联,在此基础上建立一个数据的抽象模型。逻辑设计的主要工作是将ER图转换为指定的RDBMS中的关系模型。

  (4)请读程序:

  #include

  main

  {

  int a;float b,c;

  scanf(“%2d%3P%4f’,&a,&b,&C);

  printf(” a=%d,b=%ec。%f ”,a,b,C);

  }

  若运行时从键盘上输入9876543210l,则上面程序的输出结果是________。

  A)a=98,b=765,c=432 1

  B)a=1 0,b=432,c=8765

  C)a=98,b=765.000000,c=432 1.000000

  D)a=98,b=765.0,c=432 1.0

  答案:C

  评析:scanf把用户从键盘录入的数字的第1、2位存入整型变量a;把第3、4、5位存入单精度实型变量b,把第6、7、8、9位存入单精度实型变量c,用户录入的第10位被scanf遗弃。这时变量a、b、c的值分别为:98、765.000000、4321.000000。

  (5)一个良好的算法由下面的基本结构组成,但不包括__________。

  A)顺序结构B)选择结构C)循环结构D)跳转结构

  答案:D

  评析:1966年,Bohra和Jacopini提出了以下三种基本结构,用这三种基本结构作为表示一个良好算法的基本单元:1、顺序结构;2、选择结构;3、循环结构。

  (6)请选出以下程序的输出结果________。

  #include

  sub(x,y,z)

  int x,y,星符号z:

  {星符号z变化,所以此次函数被调用后,a的值为y-x=-5,同理可知,在sub(7,a,&b)后,b的值发生变化,其值为-5-7=-12,在sub(a,b,&C)后,c的值发生变化,其值为-12-(-5)=-7。

  (7)下面程序在屏幕上的输出是________。

  main

  {

  printf(”ab c”);

  }

  A)ab c B)a c C)abc D)ab c

  答案:B

  评析:c语言中允许使用一种特殊形式的字符常量,、就是以一个“”开头的字符序列,这样的字符称为“转义字符”。常用的转义字符有: ,换行;,水平制表;,退格;,回车。

  (8)若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是_______。

  A)pb=&x; B)pb=x; C)星符号pb=星符号、/)还包括自增自减运算符(++、–),在c语言解析表达式时,它总是进行贪婪咀嚼,这样,该表达式就被解析为i++ ++ +i,显然该表达式不合c语言语法。

  (10)若要用下面的程序片段使指针变量p指向一个存储整型变量的动态存储单元

  int星符号int) D)(int星符号)

  答案:D

  评析:不论p是指向什么类型的指针变量,都可以通过强制类型转换的方法使之类型一致,强制类型转换的格式为(数据类型+)。

  (11)下面程序输出的结果是__________。

  main

  {

  int i=5,J=9,x;

  x=(I==j?i:(j=7));

  printf(” %d,%d”,I,J);

  }

  A)5,7 B)5,5 C)语法错误D)7,5

  答案:A

  评析:条件表达式的一般形式为:表达式I?表达式2:表达式3;先求解表达式1,若为真则求解表达式2;若表达式l的值为假,则求解表达式3。本题中先判断i==j,不等,执行j=7;然后执行x=7。故本题为A。

  计算机二级《C语言》备考试题及答案 5

  1、 在C语言中,下列标识符中合法的是( ) A). -int B). in1_3 C). A_B!D D). const

  2、 不属于C语言基本数据类型的是( )

  A). int B). union C). char D). unsigned

  3、 下面是对宏定义的描述。不正确的是( )

  A). 宏不存在类型问题,宏名无类型,它的参数也无类型 B). 宏替换不占用运行时间

  C). 宏替换只是字符串的简单替代

  D). 宏替换时先检查类型,类型一致时才可以替换

  4、 C语言中,″xfds″在内存中占用的.字节数是( )

  A).3 B).4 C).5 D).6

  5、 设int x;则执行printf(″%x ″,~x^x);的结果是( )

  A). ffffffff B). ff C). 0 D). 1

  6、 对于while( )

  A).用条件控制循环体的执行次数 B).循环体至少要执行一次

  C).循环体有可能一次也不执行 D).循环体中可以包含若干条语句

  7、 执行下列语句后输出的结果是( )

  int a=8,b=7,c=6;

  if(ac){a=c;c=b;})if(b>

  printf("%d,%d,%d ",a,b,c);

  A).6,7,7 B).6,7,8 C).8,7,6 D).8,7,8

  8、 设int a=9,b=20;则printf(″%d,%d ″,a--,--b);的输出结果是( )

  A).9,19 B).9,20 C).10,19 D).10,20

  9、 设static char x[ ]=″12345″,y[ ]={′1′,′2′,′3′,′4′,′5′,′′};那么( )

  A).x数组的长度等于y数组的长度 B).x数组的长度大于y数组的长度

  C).x数组的长度少于y数组的长度 D).x数组与y数组的存储区域相同

  10、 设int i,x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是( )

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

  printf(″%d″,x[i][2-i]);

  A).147 B).159 C).357 D).369

  11、 执行完下列语句后,n的值是( )

  int n;

  for (n=0 ; n<100 ; n=2*n+1);

  A).125 B).126 C).127 D).128

  12、 有以下语句:int a=6;a+=a-=a*a;printf(“%d”,a);输出结果( )

  A).–132 B).–60 C). -24 D). 0

  13、 为了连接两个字符串s1与s2,应当使用( )

  A). strcat( s1,s2 ) B). strcpy( s1, s2 ) C). strlen( s1, s2 ) D). strcmp( s1, s2 )

  14、 设int a,*p;则语句p=&a;中的运算符“&”的含义是( )

  A).位与运算 B).逻辑与运算 C).取指针内容 D).取变量地址

  15、 下面输出的结果为( )

  int a=13, b=64;

  printf(“%d ”, !a || (b>>3) ); A).13 B).64 C).1 D).0

  16、 下列定义正确的是( )

  A).enum t={a,b}x; B). enum t{1,2}x; C). enum {′+′,′-′}x; D). enum t{a,b}x;

  17、 设有定义:struct u{int a[4];float b[3]; char c[16];}aa;

  则printf(″%d ″,sizeof(aa));的输出是( ) A).32 B).36 C).12 D).8

  18、 数据-54.78在文本文件中占用的字节个数是( )

  A).4 B).5 C).6 D).8

  19、 在宏定义#define p(r) 3.14*r中,请问宏名是( )

  A). p B). p(r) C). 3.14*r D). p(r) 3.14*r 20、 要打开一个已存在的用于修改的非空二进制文件“hello.txt”,正确语句是( )

  A). fp=fopen( "hello.txt ","r" ) B). fp=fopen( "hello.txt ","ab+" ) C). fp=fopen( "hello.txt ","w" ) D). fp=fopen( "hello.txt ","r+" ) 密 封 线 内 答 题 无 效

  计算机二级《C语言》备考试题及答案 6

  (1)下面关于算法说法错误的是_______。

  a. 算法最终必须由计算机程序实现

  b. 为解决某问题的算法同为该问题编写的程序含义是相同的

  c. 算法的可行性是指指令不能有二义性

  d. 以上几个都是错误的

  (2)下面说法错误的是______.

  a. 算法原地工作的含义是指不需要任何额外的辅助空间

  b. 在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法

  c. 所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界

  d. 同一个算法,实现语言的级别越高,执行效率就越低

  (3)在下面的'程序段中,对x的赋值语句的频度为_____。

  for (int i; i

  { for (int j=o; j

  { x:=x+1;

  } }

  a. 0(2n) b. 0(n) c. 0(n2) d. O(log2n)

  (4)下面说法正确的是______。

  a. 数据元素是数据的最小单位;

  b. 数据元素是数据的最小单位;

  c. 数据的物理结构是指数据在计算机内的实际存储形式

  d. 数据结构的抽象操作的定义与具体实现有关

  (5)下面说法正确的是_______。

  a. 在顺序存储结构中,有时也存储数据结构中元素之间的关系

  b. 顺序存储方式的优点是存储密度大,且插入、删除运算效率高

  c. 数据结构的基本操作的设置的最重要的准则是,实现应用程序与存储结构的独立

  d. 数据的逻辑结构说明数据元素之间的顺序关系,它依赖于计算机的储存结构

【计算机二级《C语言》备考试题及答案】相关文章:

计算机二级《C语言》备考试题及答案06-18

计算机二级C语言试题及答案05-19

全国计算机二级《C语言》备考测试题及答案07-18

计算机二级《C语言》试题及答案201610-30

计算机二级C语言模拟试题及答案07-04

计算机二级《C语言》专项试题及答案09-02

计算机二级《C语言》操作试题与答案11-01

计算机二级《C语言》模拟试题及答案07-29

计算机二级备考习题及答案(C语言)201708-20

计算机二级C语言备考习题及答案201710-09