请写一个C程序,从一个文件中读取400个INT 数字,然后显示出他们的平均值
如果条件改为从一个文件中读取任意长的数字(文件中有多少个数字就读多少),然后显示他们的平均值,怎么写?谢谢
本题一个完整的c程序如下,win-tc和Dev-c++下已调试通过.
#include<stdio.h>
#include<conio.h>
int a[1000],b;/*设定数据不超过1000个*/
long sum;
main()
{
readDat();
writeDat();
printf("\n Press any key to quit...");
getch();
}
readDat()
{
FILE *fp;
int i=0;
fp=fopen("IN.dat","r");
while(!feof(fp)) /*不超过1000个,有多长读多长*/
fscanf(fp,"%d",&a[i++]);
b=i;
for(i=0;i<b;i++)
sum+=a[i];
fclose(fp);
}
writeDat()
{
FILE *fp;
int i;
clrscr();
fp=fopen("OUT.dat","w");
printf("Average of %d numbers is:\n%10.2f",b,(float)sum/b);
fprintf(fp,"%5.2f",(float)sum/b);
fclose(fp);
}
程序计算结果是:200 5158.00
这里设文件IN.dat内容为200个整数:
1001 2001 1012 1034 1067 1111 1166 1232 1309 1397
1496 1506 1527 1559 1602 1656 1721 1797 1884 1982
2091 2111 2142 2184 2237 2301 2376 2462 2559 2667
2786 2816 2857 2909 2972 3046 3131 3227 3334 3452
3581 3621 3672 3734 3807 3891 3986 4092 4209 4337
4476 4526 4587 4659 4742 4836 4941 5057 5184 5322
5471 5531 5602 5684 5777 5881 5996 6122 6259 6407
6566 6636 6717 6809 6912 7026 7151 7287 7434 7592
7761 7841 7932 8034 8147 8271 8406 8552 8709 8877
9056 9146 9247 9359 9482 9616 9761 9917 8084 8262
8451 8551 8662 8784 8917 1061 1216 1382 1559 1747
1946 2056 2177 2309 2452 2606 2771 2947 3134 3332
3541 3661 3792 3934 4087 4251 4426 4612 4809 5017
5236 5366 5507 5659 5822 5996 6181 6377 6584 6802
7031 7171 7322 7484 7657 7841 8036 8242 8459 8687
8926 9076 9237 9409 9592 9786 9991 8207 8434 8672
8921 1081 1252 1434 1627 1831 2046 2272 2509 2757
3016 3186 3367 3559 3762 3976 4201 4437 4684 4942
5211 5391 5582 5784 5997 6221 6456 6702 6959 7227
7506 7696 7897 8109 8332 8566 8811 9067 9334 9612
#include<stdio.h>
#include<conio.h>
int a[1000],b;/*设定数据不超过1000个*/
long sum;
main()
{
readDat();
writeDat();
printf("\n Press any key to quit...");
getch();
}
readDat()
{
FILE *fp;
int i=0;
fp=fopen("IN.dat","r");
while(!feof(fp)) /*不超过1000个,有多长读多长*/
fscanf(fp,"%d",&a[i++]);
b=i;
for(i=0;i<b;i++)
sum+=a[i];
fclose(fp);
}
writeDat()
{
FILE *fp;
int i;
clrscr();
fp=fopen("OUT.dat","w");
printf("Average of %d numbers is:\n%10.2f",b,(float)sum/b);
fprintf(fp,"%5.2f",(float)sum/b);
fclose(fp);
}
程序计算结果是:200 5158.00
这里设文件IN.dat内容为200个整数:
1001 2001 1012 1034 1067 1111 1166 1232 1309 1397
1496 1506 1527 1559 1602 1656 1721 1797 1884 1982
2091 2111 2142 2184 2237 2301 2376 2462 2559 2667
2786 2816 2857 2909 2972 3046 3131 3227 3334 3452
3581 3621 3672 3734 3807 3891 3986 4092 4209 4337
4476 4526 4587 4659 4742 4836 4941 5057 5184 5322
5471 5531 5602 5684 5777 5881 5996 6122 6259 6407
6566 6636 6717 6809 6912 7026 7151 7287 7434 7592
7761 7841 7932 8034 8147 8271 8406 8552 8709 8877
9056 9146 9247 9359 9482 9616 9761 9917 8084 8262
8451 8551 8662 8784 8917 1061 1216 1382 1559 1747
1946 2056 2177 2309 2452 2606 2771 2947 3134 3332
3541 3661 3792 3934 4087 4251 4426 4612 4809 5017
5236 5366 5507 5659 5822 5996 6181 6377 6584 6802
7031 7171 7322 7484 7657 7841 8036 8242 8459 8687
8926 9076 9237 9409 9592 9786 9991 8207 8434 8672
8921 1081 1252 1434 1627 1831 2046 2272 2509 2757
3016 3186 3367 3559 3762 3976 4201 4437 4684 4942
5211 5391 5582 5784 5997 6221 6456 6702 6959 7227
7506 7696 7897 8109 8332 8566 8811 9067 9334 9612
温馨提示:答案为网友推荐,仅供参考
第1个回答 2008-12-05
给你思路,你自己写代码
只有这样你才能提高
第一:打开文件 如何打开,请查资料解决
第二:如何读取 查资料
第三:存储进数值中
第四:累加然后求出平均值
只有这样你才能提高
第一:打开文件 如何打开,请查资料解决
第二:如何读取 查资料
第三:存储进数值中
第四:累加然后求出平均值