已知数据文件IN39.DAT中存有300个四位数,函数ReadData()负责把这些数存人数组inBuf[]中,请编制一函数findValue(),其功能是:求出这些四位数中是素数的个数count,再求出所有满足此条件的四位数的平均值averagel,以及

admin2021-04-30  85

问题 已知数据文件IN39.DAT中存有300个四位数,函数ReadData()负责把这些数存人数组inBuf[]中,请编制一函数findValue(),其功能是:求出这些四位数中是素数的个数count,再求出所有满足此条件的四位数的平均值averagel,以及所有不满足此条件的4位数的平均值average2,并通过函数WriteData()把结果输出到OUT.DAT文件中。
    例如:3191是素数.则该数满足条件,计算平均值average1,且个数count=count+1。
    1234是非素数。则该数不满足条件,计算平均值average2。
    注意:部分源程序已给出。
    程序中已定义数组:inBuf[300],outBuf[300],已定义变量:count。
    请勿改动主函数main()、读函数ReadData()和写函数WriteData()的内容。
  试题程序:
  #include
  #define NUM 300
  int inBuf[NUM],count=0;
  double average1=0,average2=0;
  void ReadData();
  void WriteData();
  void findValue()
  {
  }
  void main()
  {
    ReadData();
    findValue();
    WriteData();
    printf(“count=%d\naverag1=%7.2lf\naverag2=%7.
    2lf\n”,count,average1,average2);
    }
    void RcadData()
    {
    FILE*fp;
    int i;
    fp=fopen(“IN.DAT”,“r”);
    for(i=0;i    fscanf(fp,“%d.”,&inBuf);
    fclose(fp);
    }
    void WriteData()
    {
    FILE*fp;
    fp=fopen(“OUT.DAT”,“W”);
    Iprintf(fp,“count=%d\naverag1=%7.2If\Bayer
    ag2=%7.21f\n”,count,average1,average2);
    fclose(fp);
    }

选项

答案void findValue() { int i,j,flag,count_no=0; for(i=0;i
解析 本题主要考查素数的判断和平均值计算问题。
    ①判断是否为素数;素数的定义是:若一个数除了其自身和1再没有其他的除数,则该数就是素数。故用其定义可以很容易判断。在2到所判断教之间的数进行扫描,若有一个除数,则该数就不是素数。②求平均值,由于本题中的数据量比较大,若采用先将各个值加起来再除以总个数来取平均的话,会因变量不能存储那么大的数据而导致溢出。本题的程序采用的方法是:N个数的平均值=[前(N-1)个数的平均值*(N-1)+第N个数]/N,采用这种递推的方法就避免了将大的数据存入变量中而产生溢出。
转载请注明原文地址:https://jikaoti.com/ti/bGY7FFFM
0

最新回复(0)