计算机等级考试三级机试C语言编程详细解析三

出处:Examlink收集整理 作者:罗志中 日期:2007年06月08日 15时19分
   三、正整数排序求平均值(包括将数拆散、求最大最小值)

  已知数据文件IN.DAT中存有300个四位数,并已调用读函数ReadDat()把这些数存入数组a中,请编制一函数jsValue(),其功能是:求出千位数上的数加个位数等于百位数上的数加十位数上的数的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz2,最后调用写函数把结果输出到OUT.DAT文件。

  例如:6712,6+2=7+1,则该数满足条件计算平均值pjz1,且个数cnt=cnt+1。8129,8+9<>1+2,则该数不满足条件计算平均值pjz2.

  部分源程序已给出。

  程序中已定义数组:a[300],已定义变量:cnt,pjz1,pjz2

  请勿改动主函数main()、读函数ReadDat()和写函数writeDat()的内容。


  #include
  int a[300],cnt=0;
  double pjz1=0.0,pjz2=0.0;
  jsValue()
  {
  }
  main()
  {
  int i;
  readDat();
  jsValue();
  writeDat();
  printf("cnt=%d\n满足条件的平均值pzj1=%7.21f\n不满足条件的平均值pjz2=%7.21f\n" ,cnt,pjz1,pjz2);
  }

  readDat()
  {
  FILE *fp;
  int i;
  fp=fopen(" in.dat" ," r" );
  for(i=0,i<300;i++)fscanf(fp,"%d" ,&a[i]);
  fclose(fp);
  }
  writeDat()
  {
  FILE *fp;
  int i;
  fp=fopen(" out.dat" ," w" );
  fprintf(fp," %d\n%7.21f\n%7.21f\n" ,cnt,pjz1,pjz2);
  fclose(fp);
  }

  注:该题的关键在于会不会取出一个数的个、十、百、千位上的数。a[i]%10对10求余结果为个位数,a[i]%100/10先对100求余得出后两位数然后再除10,由于为整数因此得出上一个后两位数的第一位。依此类推。*/


  jsvalue()
  {
  int i,g,s,b,q,k=0;
  for(i=0;i<300;i++)
  {g=a[i]%10;
  s=a[i]%100/10;
  b=a[i]/100%10;
  q=a[i]/1000;
  if((q+g)==(s+b)) {cnt++;pjz1+=a[i];}
  else {k++;pjz2+=a[i];}
  }
  pjz1/=cnt;
  pjz2/=k;
  }

最后更新时间:2008-05-28 11:52:47
文章评论
共有 0 位网友发表了评论
用户名: 新注册) 密码: 匿名评论 [查看所有评论]

评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
您可以用以下几种方式找到此文章

考试全流程