1、三级网络技术机试-247 及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.请编制函数 ReadDat()实现从文件 in.dat中读取 1000个十进制整数到数组 xx中;请编制函数Compute()分别计算出 xx中奇数的个数 odd,奇数的平均值 avel,偶数的平均值 ave2以及所有奇数的方差 totfc的值,最后调用函数 WriteDat()把结果输出到 out.dat文件中。计算方差的公式如下:(分数:100.00)_三级网络技术机试-247 答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:10
2、0.00)1.请编制函数 ReadDat()实现从文件 in.dat中读取 1000个十进制整数到数组 xx中;请编制函数Compute()分别计算出 xx中奇数的个数 odd,奇数的平均值 avel,偶数的平均值 ave2以及所有奇数的方差 totfc的值,最后调用函数 WriteDat()把结果输出到 out.dat文件中。计算方差的公式如下:(分数:100.00)_正确答案:(int ReadDat(void)FILE*fp;int i,j;if(fp=fopen(“iN.DAT“,“r“)=NULL)return 1; for(i=0;i100;i+)for(j=0;j10;j+)fs
3、canf(fp,“%d,“,%xxi*10+j);fscanf(fp,“/n“);if(feof(fp)break;fclose(fp);return 0;void Compute(void)int i,aaMAx;for(i=0;i1000;i+)if(xxi%2)/*若 xxi是奇数*/odd+;/*奇数计数值增 1*/avel+=xxi;/*将 xxi累加到 avel中*/aaodd-1=xxi;/*将 xxi顺序放入临时数组 aa中*/else/*若 xxi是偶数*/even+:/*偶数计数值增 1*/ave2+=xxi:/*将 xxi累加到 ave2中*/avel/=odd;/*求奇
4、数的平均值*/ave2/=even;/*求偶数的平均值*/for(i=0;iodd;i+)/*求方差*/totfc+=(aai-avel)* (aai-avel)/odd;)解析:解析 本题主要考查的是方差问题,同时考查了学生读入输出数据的函数。本题要注意读入函数的格式输入符后面一定要加上逗号,因为文件 IN.DAT里面的数据是用逗号隔开的,对于 100行 10列的二维数组中的数据读入 xx一维数组时,其下标变为 i*10+j,feof()函数用来判断是否已经到达文件的末尾。Compute()函数首先使用 for循环对数组 xx遍历,遇到奇数 odd增 1,并将该数累加到 avel且将此数存入临时数组 aa中,遇到偶数 even增 1,并且将该数累加到 ave2,遍历完以后分别求出奇数和偶数的平均值,根据方差公式,使用 for循环求出数组 aa的方差,即得到奇数的方差。