为什么这个C程序完全跳过我的输入?

eve*_*veo 1 c

码:

#include <stdio.h>
main() {

    int nums[100], i;
    char answer;
    int count = 0;
    double avg;

    for (i = 0; i < 100; i++) {
        printf("Enter number %d: ", i + 1);
        scanf("%d", &nums[i]);
        printf("Another? ");
        scanf("%c", &answer);
        count += nums[i];
    }
}
Run Code Online (Sandbox Code Playgroud)

跑:

~> a.out
Enter number 1: 1
Another? Enter number 2: 2
Another? Enter number 3: 3
Another? Enter number 4: 4
Another? Enter number 5: 5
Another? Enter number 6: 6
Another? Enter number 7: 7
Another? Enter number 8: 8
Another? Enter number 9:
Run Code Online (Sandbox Code Playgroud)

它应该问我是否要输入另一个数字,但由于某种原因,scanf无效.此外,我需要这样做,以便用户可以输入100个数字,或者根据该数字输入任何数字,提示"你想输入另一个数字".如果答案为否,则终止,如果是,则继续.

cni*_*tar 6

您的第一个scanf在缓冲区中留下换行符.这是因为%d忽略了尾随空白而%c没有.使用这个便宜的技巧让第二个scanf吃掉空白:

scanf(" %c", &answer);
       ^
Run Code Online (Sandbox Code Playgroud)

这个问题很常见,您可以在C FAQ中阅读更多相关信息.