试题 百分网手机站

计算机二级C语言上机测试题附答案

时间:2020-11-11 19:17:41 试题 我要投稿

2017计算机二级C语言上机测试题附答案

  引导语:计算机上机考试要灵活应变,以下是百分网小编分享给大家的2017计算机二级C语言上机测试题附答案,欢迎测试!

2017计算机二级C语言上机测试题附答案

  1.程序填空

  给定程序的功能是判断字符ch是否与串str中的某个字符相同:若相同,什么也不做,若不同,则插在串的最后。

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

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

  试题程序:

  #include

  #include

  void fun(char*str, char ch )

  {  while ( *str && *str != ch ) str++;

  if( *str  1  ch )

  { str[0] =ch;

  2  = 0;

  }

  }

  main( )

  {  char s[81], c;

  printf( "\nPlease enter a string:\n" ); gets ( s );

  printf ("\n Please enter the character to search : " );

  c = getcharO;

  fun( 3  ) ;

  printf( "\nThe result is %s\n", s);

  2.程序修改

  【答案】

  (1)错误:第5行fun(int**a,int m)

  正确:fun(int a[][M],Int m)

  (2)错误:第9行 a[j][k]=k*j;

  正确:a[j][k]=(k+1)*(j+1);

  【评析】

  第5行:第二个形参m是用户输入的维数,没有别的名堂,第一个形参是为了指明在函数fun()中要产生的多维数组,"**a"是不能正确表示一个多维数组的,我们应当使用"int a[M][M]"。

  第9行:循环体的.内容是给m维的多维数组赋值,这个多维数组在列方向是由1开始的自然数,在行方向上是行首第一数的n倍数,显然,"a[j][k]=k*j;"不符合题意,我们应当使用"a[j][k]=(k+1)*(j+1);"。

  3.程序设计

  已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun,函数的功能是:找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分)。已给出函数的首部,请完成该函数。

  请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

  试题程序:

  #include

  #include

  #include

  #define N 10

  typedef struct ss

  { char num[10];int s;} STU;

  fun(STU a[],STU *s)

  {

  }

  main()

  {STU

  a[N]= { {"A01",81}, {"A02",89}, {"A03",66}, {"A04", 87}, {"A05",77}, {"A06",90}, {"A07",79}, {"A08",61}, {"A09",80 }, {"A10",71 }},m;

  int i;

  elrser();

  printf("***** The original data *****\n");

  for (i=0;i  fun(a,&m);

  printf("***** THE RESULT *****\n");

  printfCThe top : %s, %d\n",m.num,m.s);

  NON0( );

  }

  NON0( )

  {\*本函数用于打开文件,输入 数据,调用函数,输出数据,关闭文件。*/

  FILE *rf, *wf;

  STU a[N], m ;

  Int i;

  rf = fopen("bc09.in", "r,) ;

  wf= fopen("bc09.out", "w") ;

  for(i = 0 ; i < 10; i++) fscanf(rf, "%s %d", a[i].num, &a[i].s) ;

  fun(a, &m) ;

  fprintf (wf, "The top : %s, %d\n", m.num, re.s) ;

  fclose(rf) ;

  fclose(wf) ;

  }