欢迎来到图者知识网!

计算机二级c语言2013,2013计算机二级vf上机

计算机类 时间:2021-12-14

【www.tuzhexing.com--计算机类】

人才资讯网为大家收集整理了《2013计算机二级C语言上机练习题及答案(17)》供大家参考,希望对大家有所帮助!!!

填空题

  程序通过定义学生结构体数组,存储了若干名学生的学号、姓名和3门课的成绩。函数fun的功能是将存放学生数据的结构体数组,按照姓名的字典(从小到大)排序。

  请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。

  注意:源程序存放在考生文件夹下的BLANK1.C中。

  不得增行或删行,也不得更改程序的结构!

  给定源程序:

  #include

  #include

  struct student {

  long sno;

  char name[10];

  float score[3];

  };

  void fun(struct student a[], int n)

  {

  __1__ t;

  int i, j;

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

  for (j=i+1; j

  if (strcmp(__3__) > 0)

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

  }

  main()

  { struct student s[4]={{10001,"ZhangSan", 95, 80, 88},{10002,"LiSi", 85, 70, 78},

  {10003,"CaoKai", 75, 60, 88}, {10004,"FangFang", 90, 82, 87}};

  int i, j;

  printf("\n\nThe original data :\n\n");

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

  { printf("\nNo: %ld Name: %-8s Scores: ",s[j].sno, s[j].name);

  for (i=0; i<3; i++) printf("%6.2f ", s[j].score[i]);

  printf("\n");

  }

  fun(s, 4);

  printf("\n\nThe data after sorting :\n\n");

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

  { printf("\nNo: %ld Name: %-8s Scores: ",s[j].sno, s[j].name);

  for (i=0; i<3; i++) printf("%6.2f ", s[j].score[i]);

  printf("\n");

  }

  }

  解题思路:

  本题是对结构体数组中的姓名按升序进行排列。

  第一处:t是一个临时变量,主要是存放学生数据的结构变量,所以应填:struct student。

  第二处:利用两重for循环进行排序操作,排序的终止条件应该是总人数减1,所以应填:n-1。

  第三处:对姓名进行比较大小,所以应填:a[i].name,a[j].name。
 改错题

  给定程序MODI1.C中函数fun的功能是:在p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向后顺序移动。

  例如,调用fun函数之前给字符串输入:ABCDeFGH,

  调用后字符串中的内容为:eABCDFGH。

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

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

  给定源程序:

  #include

  fun( char *p )

  { char max,*q; int i=0;

  max=p[i];

  while( p[i]!=0 )

  { if( max

  { max=p[i];

  /

  q=p+i

P>  }

  i++;

  }

  wihle( q>p )

  { *q=*(q-1);

  q--;

  }

  p[0]=max;

  }

  main()

  { char str[80];

  printf("Enter a string: "); gets(str);

  printf("\nThe original string: "); puts(str);

  fun(str);

  printf("\nThe string after moving: "); puts(str); printf("\n\n");

  }

  解题思路:

  第一处:在语句后缺少分号,所应改为:q=p+i;。

  第二处:保留字while写错,所应改为:while(q>p)。

本文来源:http://www.tuzhexing.com/kaoshi/1124788/

推荐内容