★题目40(无忧id 43 整数统计运算题)
已知在文件IN.DAT中存有若干个(个数<200)四位数字的正整数,函数ReadDat()读取这若干个正整数并存入数组xx中。请编制函数CalValue(),其功能要求:
1、求出这文件中共有多少个正整数totNum;
2、求这些数中的各位数字之和是偶数的数的个数totCnt,
以及满足此条件的这些数的算术平均值totPjz,最后调用函数writeDat()把所求的结果输出到文件OUT.DAT中。
部分源程序存在文件prog1.c中。
请勿改动主函数main()、读函数ReadDat()和写函数writeDat()的内容。
#include <stdio.h>
#include <conio.h>
#define MAXNUM 200
int xx[MAXNUM];
int totNum=0; /*文件IN.DAT中共有多少个正整数*/
int totCnt=0; /*符合条件的正整数的个数*/
double totPjz=0.0; /*平均值*/
int ReadDat(void);
void writeDat(void);
void CalValue(void)
{ int i,qw,bw,sw,gw;
for(i=0;i<MAXNUM;i++)
if(xx[i]>0)
{ totNum++;
qw=xx[i]/1000;
bw=xx[i]/100%10;
sw=xx[i]%100/10;
gw=xx[i]%10;
if((qw+bw+sw+gw)%2==0) { totCnt++; totPjz+=xx[i];}
}
if(totCnt==0) totPjz=0;
else totPjz/=totCnt;
}
void main()
{
int i;
clrscr();
for(i=0;i<MAXNUM;i++)xx[i]=0;
if(ReadDat()){
printf("数据文件IN.DAT不能打开!/007/n");
return;
}
CalValue();
printf("文件IN.DAT中共有正整数=%d个/n",totNum);
printf("符合条件的正整数的个数=%d个/n",totCnt);
printf("平均值=%.2f/n",totPjz);
writeDat();
}
int ReadDat(void)
{
FILE *fp;
int i=0;
if((fp=fopen("IN.DAT","r"))==NULL) return 1;
while(!feof(fp)){
fscanf(fp,"%d,",&xx[i++]);
}
fclose(fp);
return 0;
}
void writeDat(void)
{
FILE *fp;
fp=fopen("OUT.DAT","w");
fprintf(fp,"%d/n%d/n%6.2f/n",totNum,totCnt,totPjz);
fclose(fp);
① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;
② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。