我试图制作一个循环,在该循环中输入30个或更少的学生GPA并得到:平均gpa,最高和最低gpa,调整后的平均值,查看是否输入了特定的gpa并显示数组的内容。但是运行代码时,我只能输入一个gpa ...
#include <stdio.h>
#include <stdlib.h>
#define GPA_COUNT 30
main(){
int gpa [GPA_COUNT];
int total = 0, i;
double average;
for(i = 0; i < GPA_COUNT; i++){
printf("Enter student %i's GPA: \n", i + 1);
scanf("%i", &gpa[i]);
}
for(i = 0; i < GPA_COUNT; i++){
total += gpa[i];
if(gpa[i] > 2.0){
printf("You need to study harder! \n");
}
else if(gpa[i] < 3.5){
printf("Nice work! \n");
}
}
average = (double)total / GPA_COUNT;
printf("The average GPA is: %.2lf \n", average);
system("pause");
}
我希望能够输入其余的gpa。
答案 0 :(得分:0)
正如Antii Haapala在他的评论中所说,您的问题是您已将gpa
初始化为一个整数,并使用printf
来扫描一个整数-但实际上是输入了一个双精度数。
要解决此问题,您只需要期望加倍即可:
double gpa [GPA_COUNT];
// -- snip --
scanf("%lf", &gpa[i]);
我假设您是一名学生,所以这里有一些其他说明可帮助您改进代码:
\n
中删除printf("Enter student %i's GPA: \n" i + 1);
,以使输入位于同一行。 strtod
的方式转换输入。