gpt4 book ai didi

c - scanf() 仅读取第一个输入(数字)

转载 作者:行者123 更新时间:2023-12-03 03:16:21 24 4
gpt4 key购买 nike

我无法真正解释它,除了 scanf() 仅读取第一个值,然后根据该值进行计算。

int main() {
int i, students = 0;
char name[20];
int tests;
float test_score;
int test_sum = 0;
char letter_grade;
double test_average;

printf("Number of students: ");
scanf("%d", &students);

for (i = 0; i < students; i++) {
printf("\nStudent name %d: ", i + 1);
scanf(" %s", &name);
fflush(stdin);

printf("Number of test(s) for %s: ", name);
scanf("%d", &tests);
fflush(stdin);

printf("Enter %d test score(s) for %s: ", tests, name);
if (i < students) {
scanf("%f", &test_score);
test_sum += test_score;
test_average = test_sum / (float)tests;
}
printf("Average test score: %.2f", test_average);

fflush(stdin);

}
return 0;
}

假设我输入 2 个学生,第一个学生有 2 个测试成绩,然后输入 45 87。我应该得到 66.00,但我得到了 22.50。对于第二个学生,我输入 3 个测试分数 100 55 87,得到 48.33。太棒了。

我知道我做错了什么,但我无法弄清楚,因为我之前可以正常工作,但循环不会继续到第二个学生。

最佳答案

if (i < students) {
scanf("%f", &test_score);
test_sum += test_score;
test_average = test_sum / (float)tests;
}

应该是:

test_sum = 0;
for (int j = 0; j < tests; j++) {
scanf("%f", &test_score);
test_sum += test_score;
}
test_average = test_sum / (float)tests;

关于c - scanf() 仅读取第一个输入(数字),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36805618/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com