【发布时间】:2015-07-30 19:57:24
【问题描述】:
我正在尝试创建用户输入文件名的代码,然后程序将找到文件中数字的最小值、最大值和平均值。
这是用户将输入到程序中的文件示例(# 是 cmets,将被忽略):
#Data from field experiment 312A
#2015-01-12
35.6
3.75
#2015-01-13
9
#2015-01-14
43.43
7.0001
这就是我目前的代码,我尝试结合不同的方法,但担心我现在太迷失了。
#include <stdio.h>
#include <math.h>
int main()
{
char ch, file_name[25];
FILE *fp;
double average, num = 0, min = 0, max = 0, sum = 0, N;
int i;
printf("Please enter the name of the file to load:\n");
scanf(file_name);
fp = fopen(file_name, "r");
if (fscanf(fp, "%lf", &N) == 1)
{
for (i = 0; i < N; i++)
if (num < min || i == 0)
min = num;
if (num > max || i == 0)
max = num;
sum += num;
}
fclose(fp);
average = sum/N;
printf("Smallest: %7.2lf\n", min);
printf("Largest: %7.2lf\n", max);
printf("Average: %7.2lf\n", average);
return(0);
}
任何帮助将不胜感激。
【问题讨论】:
-
你应该提出一个明确的问题;什么不起作用,你得到什么输出,你期望什么。使代码最小化并且可以工作......
-
你使用调试器了吗?应该会很快给你所有你需要的答案。
-
代码符合要求,运行时我可以输入文件名,但随后收到分段错误(核心转储)错误。