当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
2015年计算机二级C语言上机操作题及答案(9)
发布时间:2011/6/30 11:14:02 来源:城市学习网 编辑:ziteng
  第9套
  填空题
  给定程序的功能是分别统计字符串中大写字母和小写字母的个数。
  例如,给字符串SS输入:AaaaBBb123CCccccd,则输出结果应为:upper=5, lower=9。
  请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。
  试题程序:#include <stdio.h>
  void fun(char  *s, int  *a, int  *b)
  {
  while (*s)
  {
  if (*s>=’A’ && *s<=’Z’)
  ___1___;
  if (*s>=’a’ && *s<=’z’)
  ___2___;
  s++;
  }
  }
  main()
  {
  char  s[100];
  int  upper = 0, lower = 0;
  printf("\nPlease a string :  ");
  gets(s);
  fun(s, &upper, &lower);
  printf("\n upper = %d  lower = %d\n", ___3___);
  }
  第1处填空:(*a)++或++(*a)或*a=*a+1或*a+=1
  第2处填空:(*b)++或++(*b)或*b=*b+1或*b+=1
  第3处填空:upper,lower [NextPage]   改错题
  下列给定程序中,函数fun的功能是:从n个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在行参aver所指的存储单元中。例如,若输入8名学生的成绩:
  80.5  60  72  90.5  98  51.5  88  64
  则低于平均分的学生人数为4(平均分为:75.5625).
  请改正程序中的错误,使程序能统计出正确的结果。
  注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
  试题程序:#include <conio.h>
  #include <stdio.h>
  #define  N 20
  int fun(float  *s, int  n, float  *aver)
  {
  float  ave, t = 0.0;
  int  count = 0, k, i;
  /********found********/
  for (k=0; k<n; k++)
  t = s[k];
  ave = t/n;
  for (i=0; i<n; i++)
  if (s[i] < ave)
  count++;
  /********found********/
  *aver = &ave;
  return count;
  }
  main()
  {
  float  s[30], aver;
  int  m, i;
  printf("\nPlease enter m: ");
  scanf("%d", &m);
  printf("\nPlease enter %d mark :\n ", m);
  for (i=0; i<m; i++)
  scanf("%f", s+i);
  printf("\nThe number of students : %d\n", fun(s, m, &aver));
  printf("Ave=%f\n", aver);
  }
  第1处:t=s[k];应改为t+=s[k];
  第2处:*aver=&ave;应改为*aver=ave;
 [NextPage]   编程题
  编写函数fun,它的功能是:根据以下公式求p的值,结果由函数值带回。M与n为两个正整数且要求m>n。
  P= 例如:m=12,n=8时,运行结果为495.000000
  注意:部分源程序给出如下。
  请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
  试题程序:#include <conio.h>
  #include <stdio.h>
  float fun( int m, int n)
  {
  }
  main()
  {
  FILE *out;
  printf("P=%f\n", fun(12,8));
  out = fopen("out.dat", "w");
  fprintf(out, "%f", fun(12,6));
  fclose(out);
  }
  答案是:
  float fun(int m,int n)
  {
  float p,t=1.0;
  int i;
  for (i=1;i<=m;i++)
  t=t*i;
  p=t;
  for(t=1.0,i=1;i<=n;i++)
  t=t*i;
  p=p/t;
  for(t=1.0,i=1;i<=m-n;i++)
  t=t*i;
  p=p/t;
  return p;
  }
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved