当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
2015年计算机二级C语言上机题库及答案(39)
发布时间:2011/8/29 11:36:07 来源:城市学习网 编辑:ziteng
  一、填空题:函数fun的功能是:逆置数组元素中的值。例如:若a所指数组中的数据依次

  为:1、2、3、4、5、6、7、8、9,则逆置后依次为:9、8、7、6、5、4、3、2、

  1。形参n给出数组中数据的个数。

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

  注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构!

  给定源程序:

  #include

  void fun(int a[], int n)

  {int i,t;

  /**********found**********/

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

  {

  t=a[i];

  /**********found**********/

  a[i] = a[n-1-___2___];

  /**********found**********/

  ___3___ = t;

  }

  }

  main()

  {int b[9]={1,2,3,4,5,6,7,8,9}, i;

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

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

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

  printf("\n");

  fun(b, 9);

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

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

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

  printf("\n");

  }

  解题答案:

  /**********第一空**********/

  for (i=0; i

  /**********第二空**********/

  a[i] = a[n-1-i];

  /**********第三空**********/

  a[n-i-1] = t;

  ****************************************** [NextPage]   二、改错题:给定程序MODI1.C中函数fun的功能是:将一个由八进制数字字符组成的字符串转换为与其面值相等的十进制整数。规定输入的字符串最多只能包含5位八进制数字字符。

  例如,若输入:77777,则输出将是:32767。

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

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

  给定源程序:

  #include

  #include

  #include

  int fun(char *p)

  {int n;

  /**********found**********/

  n= *p-'o';

  p++;

  while(*p!=0) {

  /**********found**********/

  n=n*8+*P-'o';

  p++;

  }

  return n;

  }

  main()

  {char s[6]; int i; int n;

  printf("Enter a string (Ocatal digits): "); gets(s);

  if(strlen(s)>5){printf("Error: String too longer !\n\n");exit(0);}

  for(i=0; s[i]; i++)

  if(s[i]<'0'||s[i]>'7')

  {printf("Error: %c not is ocatal digits!\n\n", s[i]);exit(0);}

  printf("The original string: "); puts(s);

  n=fun(s);

  printf("\n%s is convered to integer number: %d\n\n",s,n);

  }

  解题答案:

  /**********found**********/

  n=*p-'0';

  /**********found**********/

  n=n*8+*p-'0';

  ******************************************

 [NextPage]   三、程序题:学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:函数返回指定学号的学生数据,指定的学号在主函数中输入。若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作

  为函数值返回。(用于字符串比较的函数是strcmp)。 注意: 部分源程序在文件PROG1.C中。

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

  给定源程序:

  #include

  #include

  #define N 16

  typedef struct

  {char num[10];

  int s;

  } STREC;

  STREC fun(STREC *a, char *b)

  {

  }

  main()

  {STREC s[N]={{"GA005",85},{"GA003",76}, {"GA002",69},{"GA004",85},{"GA001",91},{"GA007",72},{"GA008",64},{"GA006",87},{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},{"GA011",77},{"GA017",64},{"GA018",64},{"GA016",72}};

  STREC h;

  char m[10];

  int i;FILE *out ;

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

  for(i=0; i

  {if(i%4==0) printf("\n");

  printf("%s %3d ",s[i].num,s[i].s);

  }

  printf("\n\nEnter the number: ");gets(m);

  h=fun(s,m);

  printf("The data : ");

  printf("\n%s %4d\n",h.num,h.s);

  printf("\n");

  out = fopen("out.dat","w");

  h=fun(s,"GA013");

  fprintf(out,"%s %4d\n",h.num,h.s);

  fclose(out);

  }

  参考答案:

  STREC fun( STREC *a, char *b )

  {

  STREC c ;

  int i ;

  c.num[0] = '\0' ; /* 置初始空串 */

  c.s = -1 ; /* 置成绩为-1 */

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

  if(strcmp(a[i].num, b)==0) { /* 判断学号是否相等 */

  strcpy(c.num, a[i].num) ; /* 相等,则对学号进行赋值 */

  c.s=a[i].s; /* 相等,则对成绩进行赋值 */

  break ; /* 退出循环体 */

  }

  return c ; /* 返回结构体变量 */

  }

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