目前的任务是计算每个湖泊的年平均温度,以及所有六个湖泊的年平均温度
放在一起。
文本需要从下面的文件中读取,当我将其保存到桌面上时,我确保删除所有行,不包括带有实际数据的行,因此我的文本文件中只有数字,从开始
Daily Lake Average Surface Water Temperature
From
Great Lakes Surface Environmental Analysis maps
--------------------------------------------------------
Surf. Water Temp. (degrees C)
Year Day Sup. Mich. Huron Erie Ont. St.Clr
--------------------------------------------------------
2017 001 3.88 4.36 4.00 3.06 5.03 2.06
2017 002 3.46 4.36 3.98 3.05 5.01 2.12
2017 003 3.33 4.36 3.94 3.01 5.00 2.14
...etc
我附上了我试过的代码,它在学校工作,但不在我的个人电脑上。
#include <stdio.h>
#include <math.h>
int main()
{
double line[365][8], sup, mich, huron, erie, ont, stclr, avesup, avemich, avehuron, aveerie, aveont, avestclr, ave;
int row, column;
FILE *fp;
fp = fopen("data.txt", "r");
for(row=1;row<=365;row++)
{
for(column=1;column<=8;column++)
{
fscanf(fp, "%lf", &line[row][column]);
}
}
for(row=1;row<=365;row++)
{
printf("%.0lf\t%.0lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\n",
line[row][1], line[row][2], line[row][3], line[row][4], line[row][5],
line[row][6], line[row][7], line[row][8]);
}
for(row=1;row<=365;row++)
{
sup = sup + line[row][3];
}
avesup = sup/365;
printf("%.2lf\n", avesup);
for(row=1;row<=365;row++)
{
mich = mich + line[row][4];
}
avemich = mich/365;
printf("%.2lf\n", avemich);
for(row=1;row<=365;row++)
{
huron = huron + line[row][5];
}
avehuron = huron/365;
printf("%.2lf\n", avehuron);
for(row=1;row<=365;row++)
{
erie = erie + line[row][6];
}
aveerie = mich/365;
printf("%.2lf\n", aveerie);
for(row=1;row<=365;row++)
{
ont = ont + line[row][7];
}
aveont = ont/365;
printf("%.2lf\n", aveont);
for(row=1;row<=365;row++)
{
stclr = stclr + line[row][8];
}
avestclr = stclr/365;
printf("%.2lf\n", avestclr);
ave = avesup + avemich + avehuron + aveerie + aveont + avestclr;
printf("%.2lf", ave);
fclose(fp);
return 0;
}
它在学校起作用了,平均来说很好,但现在不起作用了。
最佳答案
在所有的
for(行=1;行索引范围无效,必须是
for (row=0;row<365;row++)
当然还有同样的问题
for(column=1;column<=8;column++)
一定是谁的
for(column=0;column<8;column++)
阿尔索
printf("%.0lf\t%.0lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\n",
line[row][1], line[row][2], line[row][3], line[row][4], line[row][5],
line[row][6], line[row][7], line[row][8]);
必须是
printf("%.0lf\t%.0lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\t%.2lf\n",
line[row][0], line[row][1], line[row][2], line[row][3], line[row][4],
line[row][5], line[row][6], line[row][7]);
当你离开一个数组时的行为是未定义的,这就是为什么它(看起来)在某些平台上工作而不是在其他平台上
在数组中,索引从0开始,而不是从1开始
关于c - 相同的代码在另一台PC上运行,但不能在此PC上运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55551502/