试题 百分网手机站

9月计算机三级网络技术上机模拟题及答案

时间:2020-09-12 17:37:11 试题 我要投稿

9月计算机三级网络技术上机模拟题及答案

  已知在文件IN100.DAT中存有N个实数(N<200),函数ReadDat( )读取这N个实数并存入数组xx中。请编制程序CalValue( ),其功能要求:

  (1)求出这N个实数的平均值aver。

  (2)分别求出这N个实数的整数部分值之和sumint及其小数部分之和sumdec,最后调用函数WriteDat( )把所求的结果输出到文件OUT100.DAT中。

  注意:部分源程序已给出。

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

  试题程序:

  #include

  #include

  #define MAXNUM 200

  float xx[MAXNUM];

  int N=0;

  double aver=0.0;

  double sumint=0.0;

  double sumdec=0.0;

  int ReadDat( );

  void WriteDat( );

  void CalValue( )

  {

  }

  void main( )

  {

  system("CLS");

  if(ReadDat( ))

  {

  printf("数据文件IN100.DAT不能打开!\007\n");

  return;

  }

  CalValue ( );

  printf("文件IN100.DAT中共有实数%d个\n",N);

  printf("平均值=%.2lf\n",aver);

  printf("整数部分之和=%.2lf\n",sumint);

  printf("小数部分之和=%.2lf\n",sumdec);

  WriteDat( );

  }

  int ReadDat()

  {

  FILE *fp;

  if((fp=fopen( "in100.dat","r"))==NULL)

  return 1;

  while(!feof(fp))

  {

  fscanf(fp,"%f",&xx[N]);

  if (xx[N] >0.001) N++;

  }

  fclose(fp);

  return 0;

  }

  void WriteDat()

  {

  FILE *fp;

  fp=fopen("OUT100.DAT","w");

  fprintf(fp,"%d\n%.2lf\n%.2lf\n%.2lf\n",N,aver,sumint,sumdec);

  fclose(fp);

  }

  【参考答案】

  void CalValue( )

  {

  int i; /*定义循环控制变量*/

  double sum=0.0; /*定义存储所有数的'和值的变量*/

  for(i=0;i  {

  sumint+=(int)xx[i]; /*求整数部分之和*/

  sumdec+=(xx[i]-(int)xx[i]); /*求小数部分之和*/

  sum=sum+xx[i]; /*求N个数之和*/

  }

  aver=sum/N; /*求N个数的平均数*/

  }

  【解析】要将一个实数的整数部分和小数部分分开,这里使用的方法是强制类型转换法。强制类型转换是按照要求将表达式的值转换成指定的类型。将一个实数强制转换成整型数之后,其小数部分被去掉(不是四舍五入,而是直接删除)。用该实数减去转换后的整数,就得到了小数部分的值。

  在本题中,通过一个for循环分别计算整数和小数部分的累加和,以及这N个实数的和。最后求出这N个实数的平均值。

【9月计算机三级网络技术上机模拟题及答案】相关文章:

2017年9月计算机三级网络技术试题及答案09-26

计算机三级网络技术模拟题及答案10-01

2017年9月计算机三级网络技术测试题及答案09-24

2017年9月计算机三级网络技术考试强化题及答案09-26

2017年9月计算机三级考试网络技术试题及答案09-10

2017年9月计算机三级网络技术练习题及答案09-01

2017年9月计算机三级考试网络技术模拟题09-15

2017年9月计算机三级网络技术考试备考模拟题08-24

2017年9月计算机三级考试网络技术测试题及答案09-11

2017年9月计算机三级考试网络技术复备考题及答案09-04