频道栏目
首页 > 资讯 > 网络技术 > 正文

计算机等级考试三级网络技术上机练习题及答案12

13-05-30        来源:[db:作者]  
收藏   我要投稿
  请编制程序,要求:将文件IN98.DAT中的200个整数读入数组xx中,求出数组xx中最大数max及最大数的个数cnt和数组xx中值能被3整除或能被7整除的数的算术平均值pj(保留两位小数),结果max,cnt,pj输出到out98.dat中。
  部分程序、读函数read_dat(int xx[200])及输出格式已给出。
  试题程序:
  #include <stdlib.h>
  #include <stdio.h>
  #define N 200
  void read_dat(int xx[N])
  {
  int i,j;
  FILE *fp;
  fp=fopen("IN98.DAT","r");
  for(i=0;i<20;i++)
  {
  for(j=0;j<10;j++)
  {
  fscanf(fp,"%d,",&xx[i*10+j]);
  printf("%d ",xx[i*10+j]);
  }
  printf("n");
  }
  fclose(fp);
   }
   void main()
  {
  int i,k,cnt,xx[N],max;
  float pj;
  FILE *fw;
  long j=0;
  system("CLS");
  fw=fopen("out98.dat","w");
   read_dat(xx);
   printf("nnmax=%d,cnt=%d,pj=%6.2fn",max,cnt,pj);
  fprintf(fw,"%dn%dn%6.2fn",max,cnt,pj);
  fclose(fw);
  }

  【答案】
  void main()
  {
  int i,k,cnt,xx[N],max;
  float pj;
  FILE *fw;
  long j=0;
  clrscr();
  fw=fopen("out92.dat","w");
  read_dat(xx);
  max=xx[0];
  for(i=1,k=0;i<N;i++)
  { 来源:考
  if(xx[i]>max)
  max=xx[i]; /*求出数组xx中最大数max*/
  if(xx[i]%3==0 ||xx[i]%7==0)
  {
  j+=xx[i]; /*求出数组xx中值能被3整除或能被7整除的数的总和*/
  k++;
  }
  }
  for(i=0,cnt=0;i<N;i++)
  if(xx[i]==max)
  cnt++; /*求出数组xx中最大数max的个数*/
  pj=(float)(j*100/k)/100;
  /*求出数组xx中值能被3整除或能被7整除的数的平均值*/
  printf("nnmax=%d,cnt=%d,pj=%6.2fn",max,cnt,pj);
  fprintf(fw,"%dn%dn%6.2fn",max,cnt,pj);
  fclose(fw);
  }
  【解析】根据题意得,要编写的代码应该具有两个功能,一是求出数组中的最大数以及最大数的个数;二是求出数组xx中值能被3整除或能被7整除的数的平均值。
  首先,要找出数组中最大的元素。先定义第1个元素为最大值max,然后依次和后面的元素比较,每次比较完成后都将较大的数保存入max中。
  接着,被3整除和被7整除两个条件满足一个即可,所以两个条件之间用"或"运算。本题要求对平均值的计算结果保留两位小数。因为运算符"/"在这里的含义是整除,而我们要保留小数,所以要使用强制类型转换将结果转换为浮点型,这样就可以实现保留两位小数。

相关TAG标签
上一篇:2009年全国计算机等级考试四级应用题解析
下一篇:计算机等级考试三级pc精选试题及答案22
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站