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

史密斯

除了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个测试分数的学生,然后输入4587。我应该得到66.00,但是我得到22.50。对于第二个学生,我输入3个测试成绩100 55 87,我得到48.33。Waaayyy关闭。

我知道我做错了事,但我无法弄清楚,因为我以前曾做过,但是循环不会继续到第二位学生。

弗莱舍
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;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

bash读取超时仅针对用户输入的第一个字符

读取用户输入的第一个数字

Getline仅读取第一个单词

Javascript仅验证我的第一个输入

checkForm()仅输入第一个if()

强制ANTLR仅读取输入文件中的第一个注释部分,并跳过其余注释

为什么 scanf 总是给我第一个输入零?

使用XmlReader读取xml文件仅读取第一个元素

数字反转程序仅给出输出的第一个数字,而不是整数

仅返回列表的第一个输入但不继续输入的函数超出范围

输入第一个输入的数字后,int对象不可迭代

当我在输入中输入数字时,第一个功能启动

第一个bash脚本-仅输入一次root密码

按 Enter 后 ReadConsoleInput 仅读取第一个符号

使用迭代器映射的json,仅读取第一个键值

仅读取文件中每行的第一个字符

读取多维数组仅打印子数组的第一个字符

read.json仅读取Spark中的第一个对象

带有args的子流程调用仅读取第一个arg

尝试读取元素的文本仅显示第一个元素的文本

从Excel文件读取时for循环仅返回第一个值

Flutter:用于验证的for循环仅读取第一个索引,而不是所有索引

c#文件ReadAllText仅读取第一个Char

fscanf仅读取第一个字段C

使用 sed 仅匹配来自环境变量的第一个数字序列

仅提取gsub之后数字的第一个出现

如何仅获得列表中没有括号的第一个数字?

正则表达式仅获取第一个数字

从Python中的字符串中仅获取第一个数字