c语言二级考试真题

时间:2024-11-15 15:45:32 其它考试 我要投稿
  • 相关推荐

c语言二级考试真题

  欢迎参加 C 语言二级考试!本次考试真题将全面检验你的 C 语言编程能力。题目涵盖多种题型,从基础语法到复杂算法,挑战与机遇并存。认真审题,冷静作答,发挥出你的最佳水平。相信通过这次考试,你能更好地认识自己的实力,为未来的学习和职业发展打下坚实基

c语言二级考试真题

  一、单选题 ( 本大题 10 道小题 ,每小题 1.5 分,共15 分),从下面题目给出的A、B、C、D四个可供选择的答案中选择一个正确答案。

  1.下面标识符中,可以作为合法变量名的是( )。

  A.m@q

  B.Mo_day

  C.mn/5

  D.char

  2.设有如下语句:

  int s,num;

  s=1005;num=2;

  则表达式(float)s/num的值是()。

  A.502.000000

  B.502

  C.502.500000

  D.503.000000

  3.设有如下定义语句:

  chara[10]="ABC";

  则printf("%s" , a+1);的输出结果为( )。

  A.ABC

  B.C

  C.AB

  D.BC

  4.下列语句的输出结果是( )。

  inta=0123,b=0456;

  printf("%o ",b-a);

  A.0456

  B.0123

  C.333

  D.579

  5.以下的for语句循环执行的次数是()。

  for(x=0,y=0;(y!=20&&(x<20));x++);

  A.无限次

  B.不确定

  C.20次

  D.19次

  6.关于局部变量,下列说法正确的是( )。

  A.定义该变量的程序文件中的函数都可以访问

  B.定义处以下的任何语句都可以访问

  C.形式参数也是一种局部变量,可用于函数之间传递数据

  D.定义在复合语句中的局部变量,允许在该复合语句外访问

  7.有如下语句:

  chars[20]="welcome";

  char*ps=s;

  则不能引用字母c的表达式是( )。

  A.ps+3

  B.s[3]

  C.ps[3]

  D.ps+=3,*ps

  8.设有如下语句:

  int x,*p=&x;

  则*&x相当于( )。

  A.x

  B.p

  C.&x

  D.&*p

  9.若在fopen函数中使用文件的方式是"ab",该方式的含义是( )。

  A.为读/写打开一个文件

  B.向二进制文件尾增加数据

  C.为输出打开一个文本文件

  D.为读/写建立一个新的二进制文件

  10.建立了如下图所示的链表结构,p,q为指向结点的指针。p指向当前数据为M的结点,以下( )语句段能够输出p所指结点的直接后继结点的数据项。

  A.printf("%c",p->next);

  B.printf("%c",p->data);

  C.q=p->next; printf("%c",q);

  D.p = p->next;

  printf("%c",p->data);

  二、程序填空题 ( 本大题 2 道小题 ,每空 2.5 分,共20 分)。

  1.程序功能:从键盘输入一个整数,查找是否在数组中有相同的数值,如果有,则输出该值在数组中的位置,如果没有,则输出“not find”,结果请输出到文件out2.txt中。

  #include

  int main(void)

  {

  inta[10]={12,-5,0,45,100,-89,33,260,-1,92},i,x;

  FILE *fp;

  fp=fopen("out2.txt",_____(1)_____);

  printf("input x:");

  scanf("%d",_____(2)_____);

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

  if(x==a[i])

  _____(3)_____;

  if(i<10)

  fprintf(fp,"the pos of x is:%d ",i);

  else

  fprintf(fp,"no find ");

  _____(4)_____; /* 关闭文件 */

  return 0;

  }

  2.程序功能:输入一个包含数字的字符串,把字符串中的数字字符转换成数字,存放到数组中并输出。例如:输入aBcD123e45XYZ682,输出结果为:12345682。

  #include

  int fun(char s[],int arr[],int num)

  {

  inti,n=0;

  for(i=0;i

  {

  if(_____(1)_____ )

  {

  arr[n] = _____(2)_____;

  n++;

  }

  }

  return n;

  }

  int main(void)

  {

  charstr[80];

  int arr[80];

  intnum=0,n,i;

  printf("Enter a string: ");

  gets(_____(3)_____ );

  while(str[num]!=)

  num++;

  n = fun(_____(4)_____ );

  for(i=0;i

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

  return 0;

  }

  三、操作题

  (一)程序调试题(3小题,第1、2小题各3处错,第3小题4处错,每错误点3分,共30分)

  1. 程序调试题1

  调试要求:下列程序(C:KSC_2_1.c)包含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。将程序结果(包括C_2_1.c文件和C_2_1.EXE文件)保存到目录C:KS中。

  功能说明:输入某用户某一个月的用电度数,计算并输出该月份他应缴的电费。电费实施阶梯电价分段计算方法,具体为:月用电量不超过100度(含100度,以下同),单价为0.6元/度;月用电量超过100度但不超过200度的,超过部分的单价为0.7元/度;月用电量在200度以上的部分,单价为0.9元/度。

  运行示例:

  输入:请输入月用电量: 280

  输出:电费为: 202.00

  说明:月用电量280度中100度单价为0.6元,100度单价为0.7元,80度单价为0.9元。

  含错误源程序:

  #include

  int main(void)

  {

  float quantity;money;

  printf("请输入月用电量: ");

  scanf("%f", &quantity);

  if (quantity<=100) mquantity*0.6;

  else if (quantity<=200) m100*0.6+(quantity-100) 0.7;

  else money=100*0.6+ (quantity-200)*0.9;

  printf("电费为: %.2f ", money);

  return 0;

  }

  2. 程序调试题2

  调试要求:下列程序(C:KSC_2_2.c)包含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。将程序结果(包括C_2_2.c文件和C_2_2.EXE文件)保存到目录C:KS中。

  功能说明:自定义一个表示平面中点的结构体类型,在主函数中输入两个点的坐标,通过调用函数计算两个点的中点坐标,最后在主函数中输出计算的结果。

  运行示例:

  含错误源程序:

  #include

  struct

  { float x;

  float y;

  };

  struct point mid( struct point a,struct point b)

  { struct point c;

  c.x=(a.x+b.x)/2;

  c.y=(a.y+b.y)/2;

  return c;

  }

  int main(void)

  { struct point p1,p2,p0(0,0);

  printf("请输入第一个点坐标:");

  scanf("%f,%f",&p1.x,&p1.y);

  printf("请输入第二个点坐标:");

  scanf("%f,%f",&p2.x,&p2.y);

  p0=mid(p1,p2);

  printf("中点坐标为:(%6.1f,%6.1f) ", p0);

  return 0;

  }

  3. 程序调试题3

  调试要求:下列程序(C:KSC_2_3.c)包含4个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。将程序结果(包括C_2_3.c文件和C_2_3.EXE文件)保存到目录C:KS中。

  功能说明:输入两个由整型数构成的集合(元素个数均为5)分别放到数组A和B中,求这两个集合的并集(并集的元素由两个集合中的所有元素构成,但重复的元素只取一个),最后输出并集中的元素。

  运行示例:

  含错误源程序:

  #include

  int join(int s1[],int s2[],ints3[])

  int main(void)

  {

  int a[5],b[5],c[10];

  int i,n;

  printf ("请输入第一个集合内容,5个整型数 ");

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

  scanf("%d",&a[i]);

  printf ("请输入第二个集合内容,5个整型数 ");

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

  scanf("%d",&b[i]);

  n=join(a,b,c);

  printf ("A,B并集元素为: ");

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

  printf("%4d", &c[i]);

  printf(" ");

  return 0;

  }

  int join(int s1[],int s2[],ints3[])

  { int i ,j ,k=5;

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

  {

  s3[i]=s1[i];

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

  if (s2[i]==s1[j]) return ;

  if(j>=5) s3[k++]=s2[i] ;

  }

  return k;

  }

  (二)编程题(2小题,共35分,其中第1小题15分,第2小题20分)

  1.编程题1

  编程要求:请按题中的功能要求,编写程序并能得到正确的结果。将程序结果(包括C_4_1.c文件和C_4_1.EXE文件)保存到目录C:KS中。

  程序功能:按示例格式完成以下要求。

  (1) 输入10个整数(存入数组a),再输入整数x。

  (2) 数组元素向左偏移x个位置后循环输出。

  运行示例:

  输入:22 55 66 99 44 33 77 11 0 88 3

  输出:99 44 33 77 11 0 88 22 55 66

  说明:输入x=3,先输出a[3]至a[9],再输出a[0]至a[2]

  2.编程题2

  编程要求:请按题中的功能要求,编写程序并能得到正确的结果。将程序结果(包括C_4_2.c文件和C_4_2.EXE文件)保存到目录C:KS中。

  程序功能:按示例格式完成以下要求(验证西西弗斯串数学黑洞:任意一个数字串,连续进行特定运算,经有限步骤后,都无法逃逸123这个黑洞)。

  (1) 输入整数n,如果n为零、负数或超过9位数,输出"Error"并结束运行。

  (2) 拆分整数n的各个位数,统计各位数中的偶数位数、奇数位数和总位数,按"偶数位数-奇数位数-总位数"顺序组成一个新的整数(仍存为n),输出生成的新数。

  (3) 如果生成的新数等于123,则结束运行,否则重复步骤(2)与(3)。

  运行示例1:

  输入:1507

  输出:[1507] {1}134 {2}123

  说明:原始数字为1507,第1次生成的数为134,第2次生成的数为123。示例中{1}与{2}为生成的次数标记,[]、{}与间隔空格都必须保留。

  运行示例2:

  输入:0

  输出:Error

  说明:输入为0、负数或超过9位数,输出"Error"。

【c语言二级考试真题】相关文章:

最新计算机二级考试C语言预习自测题09-21

历年全国计算机等级考试二级C语言笔试填空完整版真题07-17

计算机二级C语言考试选择题(带答案)07-13

9月计算机二级C语言考试自测题08-17

C语言编程题06-15

3月计算机二级C语言真题及答案(完整版)08-26

计算机二级C语言考试技巧09-17

职称英语理工类c级考试真题06-12

职称英语卫生类c级考试真题及答案10-20

9月计算机二级考试C语言预习自测题07-23