文件IN.DAT中存有N个实数(N0.000001)N++; } fclose(fp); return 0; } void WriteData() { FILE*fp; fp=fopen("OUT.DAT","w");

admin2011-06-14  27

问题 文件IN.DAT中存有N个实数(N<200),函数ReadData()负责将这N个实数读人数组inBuf[]中。请编制程序calculate(),其功能要求;
    (1)求出这N个实数的平均值aver。
    (2)分别求出这N个实数的整数部分值之和sumint及其小数部分之和sumdec,最后调用函数WriteData()把所求的结果输出到文件OUT.DAT中。
注意;部分源程序已给出。
请勿改动主函数main()、读函数ReadData()和写函数writeData()的内容。
试题程序;
#include
#include
#define MAX 200
float inBuf[MAX]={0};
int N=0;
double aver=0.0;
double sumint=0.0;
double sumdec=0.0;
int ReadData();
void WriteData();
void calculate()
{
}
void main()
{
  system("CLS");
  if(ReadData())
  {
    printf("数据文件IN.DAT不能打开!\007\n");
    return;
    }
    calculate();
    printf("real amount=%d\n",N);
    printf("average=%.21f\n",aver);
    printf("int=%.21f\n",sumint);
    printf("dec=%.21f\n",sumdec);
    WriteData();
}
int ReadData()
{
  FILE*fp;
  if((fp=fopen("IN.DAT","r"))==NULL)
  return 1;
  while(!feof(fp))
  {
fscanf(fp,"%f",&inBuf[N]);
if(inBuf[N]>0.000001)N++;
}
    fclose(fp);
    return 0;
}
void WriteData()
{   
  FILE*fp;
  fp=fopen("OUT.DAT","w");
  fprintf(fp,"real=% d\naverage=".2If\nint=%.21f\ndec=%.21f\n",N,aver,sumint,sumdec);
  fclose(fp);
}

选项

答案   void caJcuJate() { int INT,i; float DEC; for(i=0;i
解析 本题可以看做是将一个实数进行整数部分和小数部分进行分开的数位分解。将浮点型数进行数据类型转换强制转换成整型数据,这样便可以得到一个实数的整数部分。用实数再减去整数部分,便可以得到小数部分。
转载请注明原文地址:https://kaotiyun.com/show/duaZ777K
0

最新回复(0)