已知数据文件IN.dat中存有300个四位数,并已调用读函数Rdata()把这些数存入数组a中,请编写函数Num
已知数据文件IN.dat中存有300个四位数,并已调用读函数Rdata()把这些数存入数组a中,请编写函数NumCal(),其功能是:求出千位上的数加个位上的数等于百位上的数加十位上的数的四位数的个数count,再求出所有满足此条件的四位数的平均值Ave1,以及不满足此条件的四位数的平均值Ave2。最后调用写函数Wdata(),把结果输出到OUT.dat文件中。
例如:6712,6+2=7+1,则该数满足条件,计算平均值Ave1,且个数count=count+1。8129, 8+9!=1+2,则该数不满足条件,计算平均值Ave2。
注意:部分源程序已经给出。程序中已定义数组a[300],已定义变量count、Ave1、Ave2。请勿改动主函数main()、读函数Rdata()和写函数Wdata()的内容。
include <stdio. h>
int a[300], count = 0;
double Ave1 = 0.0, Ave2 = 0.0;
void NumCal ()
{
}
void Rdata()
{ FILE *fp;
int i;
fp = fopen("IN. dat", "r");
for (i=0; i<300; i++)
fscanf( fp, "%d,", &a[i];
fclose (fp);
}
void Wdata ()
{ FILE *fp;
fp = fopen("OUT. dat", "w");
fprintf(fp, "%d\n%7.2f\n%7.2f\n", count, Ave1, Ave2);
fclose (fp);
}
main ()
{ Rdata ();
NumCal ( );
Wdata ();
printf ("count=%d\n 满足条件的平均值 Ave1=%7.2f\n 不满足条件的平均值Ave2=%7.2f\n", count, Ave1, Ave2);
}
void NumCal() { int i, n = 0, thou, hun, ten, data; for (i=0; i300; i++) { thou = a[i]/1000; hun = a[i]%1000/100; ten = a[i]%100/10; data = a[i]%10; if (thou+ data == hun+ ten) { count++; Ave1 += a[i]; } else { n++; Ave2 += a[i]; } } Ave1 /= count; Ave2 /= n; } [解题思路] 对于每一个四位数,用这个四位数除以1000,可得到这个四位数千位上的数字输给变量thou;这个四位数对1000求余数然后再除以100,可得到这个四位数百位上的数字输给变量hun;这个四位数对100求余数然后再除以10,可得到这个四位数十位上的数字输给变量ten;这个四位数对10求余数,可得到这个四位数个位上的数字输给变量data。 然后判断表达式thou+ data==hun+ ten是否成立,如果成立,则计数变量count加1,同时把这个数加到变量Ave1上;否则计数变量n加1,同时把这个数加到变量Ave2上。循环结束后,变量Ave1的值除以count,就得到所有满足此条件的四位数的平均值Ave1;变量 Ave2的值除以n,就得到有不满足此条件的四位数的平均值Ave2。
编写一个程序,给定一个正整数,判断它是否为素数,并输出判断结果.(要求:以面向对象程序设计的基本思 其他 2020-05-17 …
下列选项中,属于制造虚假信息的行为有( ) A.编制并传播影响证券交易的虚假信息B.证 财会类考试 2020-05-17 …
编写一个程序,其功能是:将两个两位数的正整数a,b合并成一个整数放在c中.合并的方式是:1、编写一 其他 2020-06-04 …
编写一个程序,其功能是:将两个两位数的正整数a,b合并形成一个整数放在c中.合并的方式是:将a数的 其他 2020-06-04 …
在项目法人责任制中,项目董事会的职权之一是负责( ) A.编制并组织实施项目年度投资 建筑工程类考试 2020-06-07 …
java上机训练题Java上机训练题1.编写程序,输入两个整数:1500和350,求出它们的商和余 其他 2020-07-17 …
已知为a实数,并且(2+i)/(3-ai)+1/4的实部与虚部相等,求a的值 数学 2020-07-30 …
以下关于简单程序设计的步骤和顺序的说法中正确的是().A.确定算法后,整理并写出文档,最后进行编码和 其他 2020-11-21 …
Matlab编写求解f(x)=x-tanx钱前十个正数零点函数,并绘图表示.Matlab编写求解f( 数学 2020-12-12 …
一道概率题从1-80随机选取选取20个数,并从小到大排列,编号1-20选取编号1-6的数字求和取个位 数学 2021-01-02 …