主题:【大虾求助】文本操作类问题
sunsongyeah
[专家分:0] 发布于 2011-11-12 20:28:00
最近刚学到文本操作~~
拜请各位大虾帮忙指导下小题:[em8]
[size=5]给定n数,2<n<20,计算大小居中的(n-2)个数的平均值。
数据输入:文件input.txt的第一行是n,第二行是n个实数
结果输出:把计算的结果写到文件output.txt中。[/size]
输入文件示例:
4
1 2 3 4
输出文件示例:
2.5000
谢谢哦。
回复列表 (共3个回复)
沙发
cfltdf [专家分:0] 发布于 2011-11-13 00:47:00
读入n
读入n个数,放在数组中
求和、最大值、最小值
(和-最大值-最小值)除以(n-2)
输出结果
以上
板凳
羽翼灵动 [专家分:80] 发布于 2011-11-13 11:32:00
代码不够简洁,仅能完成任务。可以看一下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp_in,*fp_out;
int m,sum=0,n,i=1;
float ave=0;
if((fp_in=fopen("e:\\input.txt","r"))==NULL) //打开要读取数据的文件
{
printf("can't open input file.");
exit(1);
}
if((fp_out=fopen("e:\\output.txt","w+"))==NULL) //打开要输入数据的文件
{
printf("can't open output file.");
exit(1);
}
fscanf(fp_in,"%d\n",&n); //读取第一行的数据并赋值给n
while(i<n) //读取前n个数据,这里是“n==3"
{
if(i>=2) //若数据是从第二个开始,使他们相加,否则仅读取
{
fscanf(fp_in,"%d ",&m);
sum+=m;
}
else
fscanf(fp_in,"%d ",&m);
i++; //i用来控制读取数据个数的限制
}
ave=sum/(float)(n-2); //求平均数
fprintf(fp_out,"%.4f",ave); //将平均数输入到文件output.txt文件中
fclose(fp_in); //关闭文件
fclose(fp_out);
return 0;
}
3 楼
sunsongyeah [专家分:0] 发布于 2011-11-13 15:34:00
谢谢各位大虾。
我来回复