if(qw+bw==sw+gw&& qw+bw==(gw-qw)*10)
{ cnt++; sum+=i; } /*统计满足条件的数的个数并对其求和*/ } }
54.已知在文件IN54.DAT中存有N个(个数<200)实数,函数ReadDat()读取这N个实数并存入数组xx中。请编制函数Calvalue(),其功能要求:(1)求出这N个实数的平均值aver;(2)分别求出这N个实数的整数部分之和sumint以及小数部分之和sumdec,最后调用函数WriteDat()把所求的结果输出到文件OUT54.DAT中。
注意:部分源程序已给出。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 【参考答案】
void Calvalue(void) {
int i;
double x,sum=0;
for (i=0;i sumint=sumint+(int)xx[i]; x=xx[i]-(int)xx[i]; sumdec=sumdec+x; sum=sum+xx[i]; } aver=sum/N; } 55.已知在文件IN55.DAT中存有若干个(个数<200)四位数字的正整数,函数ReadDat()读取这若干个正整数并存入数组xx中。请编制函数Calvalue(),其功能要求:(1)求出文件中共有多少个正整数totNum;(2)求出这些数中的各位数字之和是偶数的数的个数totCnt,以及满足此条件的这些数的算术平均值totPjz,最后调用函数WriteDat()把所求的结果输出到文件OUT55.DAT 注意:部分源程序已给出。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 【参考答案】 void Calvalue(void) { int i,thou,hun,ten,data; int ab; float sum=0; for(i=0;i if(xx[i]>0) totNum++; /*求正整数的个数*/ else break; thou=xx[i]/1000; /*求四位数的千位数字*/ hun=xx[i]00/100; /*求四位数的百位数字*/ ten=xx[i]0/10; /*求四位数的十位数字*/ data=xx[i]; /*求四位数的个位数字*/ ab=thou+hun+ten+data; if (ab%2==0) { totCnt++; sum=sum+xx[i]; } /*统计各位数字之和是奇数的个数并累加求和*/ } totPjz=sum/totCnt; /*求满足条件的数的平均值*/ } 56.已知在文件IN56.DAT中存有若干个(个数<200)4位数字的正整数,函数ReadDat()是读取这若干个正整数并存入数组xx中。请编制函数CalValue(),其功能要求是:(1)求出这个文件中共有多少个正整数totNum。(2)求出这些数中的各位数字之和是奇数的个数totCnt,以及满足此条件的这些数的算术平均值totPjz。最后,调用函数WriteDat()把所有结果输出到文件OUT56.DAT中。 注意:部分源程序已给出。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 【参考答案】 void CalValue(void) { int i,thou,hun,ten,data,ab; for(i=0;i if(!xx[i]) break; if(xx[i]>0) totNum++; /*求正整数的个数*/ thou=xx[i]/1000; /*求四位数的千位数字*/ hun=xx[i]00/100; /*求四位数的百位数字*/ ten=xx[i]0/10; /*求四位数的十位数字*/ data=xx[i]; /*求四位数的个位数字*/ ab=thou+hun+ten+data; if(ab%2) { totCnt++; totPjz+=xx[i]; } /*统计各位数字之和是奇数的个数并累加求和*/ } totPjz/=totCnt; /*求满足条件的数的平均值*/ } 57.已知在文件IN57.DAT中存有若干个(个数<200)4位数字的正整数,函数ReadDat()是读取这若干个正整数并存入数组xx中。请编制函数CalValue(),其功能要求是:(1)求出这个文件中共有多少个正整数totNum。(2)求这些数右移一位后,产生的新数是奇数的数的个数totCnt,以及满足此条件的这些数(右移前的值)的算术平均值totPjz。最后调用函数WriteDat()把所有结果输出到文件OUT57.DAT中。 注意:部分源程序已给出。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 【参考答案】 void CalValue(void) { int i,data; for(i=0;i if(!xx[i]) break; if(xx[i]>0) totNum++; /*统计正整数的个数*/ data=xx[i]>>1; /*将数右移一位*/ if(data%2) /*如果产生的新数是奇数*/ { totCnt++; totPjz+=xx[i]; } /*统计满足条件的数的个数并求和*/ } totPjz/=totCnt; /*计算满足条件的数的平均值*/ } 58.已知在文件IN58.DAT中存有若干个(个数<200)四位数字的正整数,函数ReadDat()读取这若干个正整数并存入数组xx中。请编制函数Calvalue(),其功能要求:(1)求出这个文件中共有多少个正整数totnum;(2)求这些数右移1位后,产生的新数是偶数的数的个数totcnt,以及满足此条件的这些数(右移前的值)的算术平均值totpjz,最后调用函数WriteDat()把所求的结果输出到文件OUT58.DAT中。 注意:部分源程序已给出。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 【参考答案】 void Calvalue(void) { int i,data; for(i=0;i if(!xx[i]) break; if(xx[i]>0) totNum++; /*统计正整数的个数*/ data=xx[i]>>1; /*将数右移一位*/ if(data%2==0) /*如果产生的新数是偶数*/ { totCnt++; totPjz+=xx[i]; } /*统计满足条件的数的个数并求和*/ } totPjz/=totCnt; /*计算满足条件的数的平均值*/ } 59.请编制函数ReadDat(),实现从文件IN59.DAT中读取1 000个十进制整数到数组xx中;请编制函数Compute()分别计算出xx中偶数的个数even、奇数的个数odd、奇数的平均值ave1、偶数的平均值ave2以及所有偶数的方差totfc的值,最后调用函数WriteDat()把结果输出到OUT59.DAT文件中。 计算方差的公式如下: 设N为偶数的个数,xx[i]为偶数,ave2为偶数的平均值。 原始数据文件存放的格式是:每行存放10个数,并用逗号隔开(每个数均大于0且小于等 于2 000)。 注意:部分源程序已给出。请勿改动主函数main()和输出数据函数WriteDat()的内容。 【参考答案】 void Compute(void) { int i, yy[MAX]; for(i=0;i<1000;i++) if(xx[i]%2==0) { even++; ave2+=xx[i]; yy[even-1]=xx[i]; } else { odd++; ave1+=xx[i]; } ave1/=odd; /*求数组xx中所有奇数的平均值*/ ave2/=even; /*求数组xx中所有偶数的平均值*/ for(i=0;i totfc+=(yy[i]-ave2)*(yy[i]-ave2)/even;/*计算所有偶数的方差*/ } 60.请编制函数ReadDat(),实现从文件IN60.DAT中读取1 000个十进制整数到数组xx中;请编制函数Compute()分别计算出xx中奇数的个数odd、奇数的平均值ave1、偶数的平均值ave2及所有奇数的方差totfc的值。最后调用函数WriteDat()把结果输出到OUT60.DAT文件中。 计算方差的公式如下: 设N为奇数的个数,xx[i]为奇数,ave1为奇数的平均值。 原始数据的存放格式是:每行存放10个数,并用逗号隔开(每个数均大于0且小于等于2 000)。 注意:部分源程序已给出。请勿改动主函数main()和输写函数WriteDat()的内容。 【参考答案】 void Compute(void) { int i,yy[MAX]; for(i=0;i<1000;i++) if(xx[i]%2!=0) { odd++; ave1+=xx[i]; yy[odd-1]=xx[i]; } else { even++; ave2+=xx[i]; } ave1/=odd; /*求数组xx中所有奇数的平均值*/ ave2/=even; /*求数组xx中所有偶数的平均值*/ for(i=0;i totfc+=(yy[i]-ave1)*(yy[i]-ave1)/odd; /*计算所有奇数的方差*/ } 61.请编制函数ReadDat(),实现从文件IN61.DAT中读取1 000个十进制整数到数组xx中;请编制函数Compute(),分别计算出xx中奇数的个数odd、偶数的个数even、平均值aver及