已知在文件IN.dat中存有若干个(少于200个)四位数字的正整数,函数ReadDat()读取这若干个正整数并
已知在文件IN.dat中存有若干个(少于200个)四位数字的正整数,函数ReadDat()读取这若干个正整数并存入数组number中。请编写函数CalValue(),其功能要求是:①求出文件中共有的正整数个数totNum;②求这些数右移1位后,产生的新数是奇数的数的个数totCnt以及满足此条件的这些数(右移前的值)的算术平均值totAve。最后调用函数writeDat()把所求的结果输出到OUT.dat文件中。
注意:部分源程序已经给出。请勿改动主函数main()、读函数ReadDat()和写函数writeDat()的内容。
include <stdio.h>
include <conio. h>
define MAXNUM 200
int number [MAXNUM];
int totNum = 0; /* 文件IN.dst 中共有的正整数个数*/
int totCnt = 0; /* 符合条件的正整数的个数*/
double totAve = 0.0; /* 平均值 */
int ReadDat (void);
void writeDat(void);
void CalValue(void)
{
}
void main ()
{ int i;
for (i=0; i<MAXNUM; i++)
number [i] = 0;
if (ReadDat())
{ printf (" 数据文件 IN.dst 不能打开! \007\n");
return;
}
CalValue ();
printf(" 文件 IN.dst 中共有的正整数个数=%d个\n", totNum);
printf (" 符合条件的正整数的个数 =%d个\n", totCnt);
printf("平均值=%.2f\n", totAve);
writeDat ();
}
int ReadDat (void)
{ FILE *fp;
int i = 0;
if ((fp = fopen("IN.dat", "r")) == NULL)
return 1;
while (!feof(fp))
fscanf(fp, "%d,", &number [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, totAve);
fclose (fp);
}
void CalValue(void) { int i, data; for (i=0; iMAXNUM; i++) { if (!number[i]) break; if (number[i] > 0) totNum++; data = number[i]>>1; if (data%2) { totCnt++; totAve += number[i]; } } totAve /= totCnt; } [解题思路] 在for循环语句中,自变量i从0递增到MAXNUM对数组number中的每个数进行判断,如果number[i]的值大于0,说明number[i]的值为正整数,统计正整数个数的变量totNum加1;然后number[i]右移1位得到data的值;再对data的值除2求余数,如果其值为1,则统计变量totCnt加1,同时把number[i]的值加到totAve上,得到这些数的和。退出循环后,用totAve的值除以totCnt,就得到了这些数的算术平均值totAve。
含有“若” 这个字的网名.含有若的这个字的网名,比较拽的. 其他 2020-05-17 …
拉氏变换的问题这个题的拉氏变换有几个步骤不清楚,求详解:已知系统微分方程为d²x0(t)/dt²+ 数学 2020-05-23 …
关于常微分方程的一个问题王高雄版的《常微分方程》书上有个这样两个定理,①若x1(t),x2(2), 数学 2020-06-06 …
ν=3.5(t-14),上面的公式是不是指t减去14再乘以3.若t为20,即20-14=6,再用6 数学 2020-06-13 …
(理)设S是整数集Z的非空子集,如果∀a,b∈S有ab∈S,则称S关于数的乘法是封闭的.若T,V是 数学 2020-06-15 …
如图所示,在光滑竖直墙上,用轻绳悬挂一个重球,这时墙对重球的弹力为N,轻绳对球的拉力为T.若其它条 物理 2020-07-07 …
设t∈R,m,n都是不为1的正数,函数f(x)=mx+t•nx若m=2,n=12,且t≠0,请判断 数学 2020-08-01 …
物体自由落体运动方程为s(t)=12gt2,若limn→∞s(1+△t)−s(1)△t=g=9.8m 其他 2021-01-22 …
已知Ax=0的通解,如何求矩阵A例如A是2*4的矩阵,其基础解系为a1=(1,3,0,2)^T,a2 数学 2021-02-11 …
有关万有引力的问题若地球饶太阳运转轨道的半长轴为R地,周期为T地,月球饶地球运转轨道的半长轴为R月, 物理 2021-02-12 …