模拟试题

3773考试网计算机等级考试模拟试题正文

2010年9月NCRE二级C语言上机模拟冲刺三

来源:fjzsksw.com 2010-9-14 13:37:38

 

模拟试题]2010年9月NCRE二级C语言上机模拟冲刺二 09-14
[模拟试题]2010年9月NCRE二级C语言上机模拟冲刺一

 

一、改错题

  【知识点】选择法排序、指针与字符串、程序的调试

  【解析】程序中的错误一般可以分为两类,一类是语法错误,即程序中有拼写错误,书写不符合C语言的规定等,此类错误可通过调试(按F9键),根据提示进行改正。另一类是逻辑错误,程序调试已通过(报success),但运行结果不正确,此类错误的修改必须要理解程序后方能改正。

  本题要求“从键盘上接受一个含有空格的字符串”,scanf是做不到的,它遇到第一个空格即认为读入完毕,故应替换成gets函数;程序中使用了strcpy函数,就必须在程序开头加上文件包含#include "string.h";根据选择法升序排序要领,每次找到一个“更小的字符”由r指着,直到指向最小的为止,而不是修改r所指字符的值,故if(*r>*q)*r=*q;应改为if(*r>*q) r=q;;当r与p所指不同时,交换二者所指字符的值,即使得p所指字符为每次的最小,故应将if(r/=p)改为if(r!=p)。

  【答案】①在程序开头加上文件包含#include "string.h"

  ②将原第五行的scanf("%s",str);改为gets(str);

  ③将原第八行的*r=*q; 改为r=q;

  ④将原第九行的if(r/=p)改为if(r!=p)

  二、编程题

  【知识点】二维数组的应用、数据文件的使用

  【解析】 关于“二维数组应用”的题目,一般都要仔细观察,找出规律后再编程。本题中原数组的任意一个元素a[i][j]旋转后,位置处于b中第3-j行i列。注意,按要求必须调用函数,且使用数据文件完成输出。使用数据文件有5大步骤:①#include ,②用FILE *定义指针,③用fopen("A:\\myf2.out","w")打开文件并赋值给指针,④用fprintf输出结果,⑤用fclose关闭文件。

  【注意】fopen("A:\\myf2.out","w")中盘符A:后要加双斜杠表示根目录,因为C语言用转义字符'\\'才能表达字符\;另外,文件的命名一定要严格按照规定处理,千万不要随便命名。

  【参考答案】

  #include "stdio.h"

  int rotate(int a[4][4],int b[4][4]);

  main()

  {FILE *fp;

  int i,j,x[4][4],y[4][4],s;

  fp=fopen("A:\\myf2.out","w");

  if(fp= =NULL){printf("Can't create file myf2.out!");

  exit(1);}

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

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

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

  s=rotate(x,y);

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

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

  fprintf(fp,"%d ",y[i][j]);

  fprintf(fp,"\n");

  }

  fprintf(fp,"sum=%d\n",s);

  fclose(fp);

  }

  int rotate(int a[4][4],int b[4][4])

  {int i,j,s=0;

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

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

  b[3-j][i]=a[i][j];

  for(i=0;i<4;i++) s+=b[i][i];

  return s; }

 

 

 

触屏版 电脑版
3773考试网 琼ICP备12003406号-1