当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
2015年计算机二级C语言上机操作题及答案(85)
发布时间:2011/7/25 8:42:15 来源:城市学习网 编辑:ziteng
  一填空题
  给定程序中,函数fun的功能是: 有N*N矩阵.以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素置为0.
  例如,若N=3,有下列矩阵:
  1    2    3
  4    5    6
  7    8    9
  计算结果为:
  1    0   0
  6    5   0
  10   14   9
  请勿改动主函数main和其它函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句.
  #include
  #define  N 4
  void fun(int  (*t)___1___)
  {
  int  i, j;
  for (i=1; i {
  for (j=0; j  {
  ___2___ = t[i][j]+t[j][i];
  ___3___ = 0;
  }
  }
  }
  main()
  {
  int  i, j, t[][N] =
  {21, 12, 13, 24, 25, 16, 47, 38, 29, 11, 32, 54, 42, 21, 33, 10};
  printf("\nThe original array:\n");
  for (i=0; i {
  for (j=0; j   printf("-  ", t[i][j]);
  printf("\n");
  }
  fun(t);
  printf("\nThe result is:\n");
  for (i=0; i {
  for (j=0; j   printf("-  ", t[i][j]);
  printf("\n");
  }
  }
  答案:
  第一处:[N]
  第一处:t[i][j]
  第三处:t[j][i] [NextPage]   二.改错题
  下列给定程序中,函数fun的功能是: 从字符串s中删除所有小写字母’c’.
  请改正程序中的错误,使它能计算出正确的结果.
  注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构!
  #include
  void fun(char  *s)
  {
  int  i, j;
  for (i=j=0; s[i]!='\0'; i++)
  /********found********/
  if (s[i] != 'c')
  s[j] = s[i];
  /********found********/
  s[i] = '\0';
  }
  main()
  {
  char  s[80];
  printf("Enter a string:    ");
  gets(s);
  printf("The original string :");
  puts(s);
  fun(s);
  printf("The string after deleted:");
  puts(s);
  printf("\n\n");
  }
  答案:
  1:s[j]=s[i];改为 s[j++]=s[i];
  2:s[i]=’\0’;改为 s[j]=’/0’;
 [NextPage]   三.编程题
  N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点.请编写函数fun,它的功能是:求出平均分,由函数值返回.
  例如,若学生的成绩是85,69,85,91,64,87;则平均分应当是78.625.
  请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句.
  #include
  #include
  #define    N   8
  struct  slist
  {
  double   s;
  struct  slist  *next;
  };
  typedef  struct  slist  STREC;
  double  fun ( STREC  *h )
  {
  }
  STREC * creat ( double *s )
  {
  STREC  *h, *p, *q;
  int  i=0;
  h=p=( STREC* ) malloc (sizeof (STREC ) );
  p->s=0;
  while ( i {
  q=( STREC* ) malloc (sizeof ( STREC ) );
  q->s=s[i];
  i++;
  p->next=q;
  p=q;
  }
  p->next=0;
  return  h;
  }
  outlist ( STREC *h )
  {
  STREC  *p;
  p=h->next;
  printf ( " head " );
  do
  {
  printf ( "->%4.1f", p->s );
  p=p->next;
  }
  while ( p!=0 );
  printf ( "\n\n" );
  }
  main ()
  {
  double  s[N]={85, 76, 69, 85, 91, 72, 64, 87},  ave;
  STREC  *h;
  FILE *out;
  h=creat ( s );
  outlist (h);
  ave=fun ( h );
  printf ( "ave= %6.3f\n", ave );
  out=fopen ("out.dat", "w");
  fprintf (out, "%6.3f", ave );
  fclose (out );
  }
  答案:
  double fun(STREC *h)
  {
  double aver=0.0;
  while (h!=null)
  {
  aver+=h->s;
  h=h->next;
  }
  aver/=N;
  return aver;
  }
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved