当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
2015年计算机等级考试二级C:上机习题7
发布时间:2010/9/13 11:38:06 来源:www.xue.net 编辑:城市总裁吧

  第七套上机试卷

  一、改错题

  含有错误的源程序如下:

  #include

  #include

  struct T

  {char name [20],num[20];

  };

  void sort(struct T items[],int low,int high)

  {struct T temp;

  int k,j;

  for(k=low;k

  for(j=low;j

  if(items[j].name>items[j+1].name)            ②

  {temp=items[j];items[j]=items[j+1];items[j+1]=temp;}

  }

  void main(void)

  {struct T stu[4]={"Wang","6723","Cai","2106","Zhang",     ③

  "5129","Chang","4512","An","6868"};

  int k;

  sort(stu,0,4);

  printf("The Sorted Array:\n");

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

  printf("name:%s,num:%s\n",stu[k]->name,stu[k]->num);    ④

  }

  【知识点】冒泡排序、结构体数组、程序的调试

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

  本题使用起泡法完成排序,①处j

  【答案】加下划线的部分改为:

  ①j

  ②if(strcmp(items[j].name, items[j+1].name)>0)

  ③stu[5]

  ④stu[k].name, stu[k].num

 二、编程题

  【知识点】字符串处理、函数调用、数据文件的使用

  【解析】编程题的结果一般都是客观的,这样便于老师主观阅卷评分,虽然考生个人的准考证号是各异的,对评阅老师却是可以通过所交磁盘标签直接观察到,故必须如实输入,不能直接套用题中例子。注意,按要求必须调用函数,且使用数据文件完成输出。使用数据文件有5大步骤:①#include ,②用FILE *定义指针,③用fopen("A:\\myf2.out","w")打开文件并赋值给指针,④用fprintf输出结果,⑤用fclose关闭文件。

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

  【参考答案】

  #include

  #include

  #include

  void count(char a[],char w[][10],int n,int b[])

  {int i=0,j,k=0;char s[10];

  for(i=0;a[i]!=0;i++)

  {if(isalpha(a[i]))s[k++]=a[i]; /* isalpha函数用于判断字符是否为字母*/

  /*此句将连续字母组成的一个单词存放于s中,便于与二维数组中的某一行进行比较*/

  else

  {s[k]= '\0'; /*加上'\0'才能使s中存放的是字符串,才能使用strcmp函数进行比较*/

  for(j=0;j

  if(strcmp(s,w[j])= =0){b[j]++;break;}

  k=0; /*让s重新存放另一个单词*/

  }

  }

  }

  main()

  {FILE *fp;

  char line[80]="this is a book,that is an apple",word[6][10]={"this","that","is","a","an","book"};

  /*按要求初始化,用二维字符数组的一行存放一个单词便于后面比较处理*/

  int c[6]={0},m;

  count(line,word,6,c);fp=fopen("A:\\myf2.out","w");

  if(fp= =NULL){printf("Can't open file");exit(1);}

  for(m=0;m<6;m++)fprintf(fp,"%s:%d",word[m],c[m]);

  fprintf(fp,"\nmy exam number is:%s","0112400123"); /*注意输入实际准考证号*/

  fclose(fp);

  }

广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved