已知数据文件in. dat中存有10组每组20个四位数的数据,每个数据间用空格分隔,调用读函数ReadDat()把这10组数据存人数组aa中(其中,aa定义为 int aa[10][20])。请编制一函数jsVal(),其功能是;首先去掉每组中首尾位置的两

admin2009-02-15  66

问题 已知数据文件in. dat中存有10组每组20个四位数的数据,每个数据间用空格分隔,调用读函数ReadDat()把这10组数据存人数组aa中(其中,aa定义为 int aa[10][20])。请编制一函数jsVal(),其功能是;首先去掉每组中首尾位置的两个数,接着计算其余18个数的算术平均值,并将计算结果依次存人数组bb中(其中,数组 bb定义为float bb[10]),然后把数组bb中的值按从大到小的顺序进行排序,排序后结果仍存人数组bb中,最后调用写函数WriteDat()把结果bb输出到文件out. dat中。
   注意:部分源程序已给出。
   程序中已定义全局变量:aa[10][20]、bb[10]。
   请勿改动数据文件in. dat中的任何数据、主函数main()、读函数ReadDat()和写函数WriteDat()的内容。
   .试题程序
         # include <stdio. h>
        int aa[10][20]
        float bb[10]
        void jsVal()
       {


       }
       void ReadDat()
       {
            int i, j
            FILE * fP;
            fp = fopen("in.darn","r")
            for(i=0; i<10~;i++)
                for(j=0; j<20; j++) fscanf(fP,"%d", &aa[j])
            fclose({p)
       }
       void main()
       {
            int i
            ReadDat();    / * 读数据* /
            jsVal();      / * 按要求计算* /
       for(i=0; i<10; i++) /* 从屏幕输出结果* /
          printf("%6.2lf\n", bb);
      }
      WriteDat()
     {
        FILE * fp;
        int i;
        fp = fopen("out, dat", "w")
        for(i=0; i<10; i++)
           fprintf(fp,"%6.21f\n, bb)
        fclose(fp); }

选项

答案void jsVal() { int i,j,k,t,y; float sum=0; for(i=0; i<10; i++) { for(y=0; y<20; y++) sum=sum+aa[i][y] bb[i]=(sum-aa[i][0]-aa[i][19])/18; sum=0; } for(k=0; k<10; k++) for(i=0; i<10-k; i++) if(bb[i]<bb[i+1]) { t=bb[i]; bb[i]=bb[i+1]; bb[i+1]=t;} }

解析
转载请注明原文地址:https://kaotiyun.com/show/w2NZ777K
0

最新回复(0)