输入特定值停止循环,但输入非整数循环出错

如图,输入所有整数都没问题,输入字母或者小数就死循环
代码哪里错了吗?

img

img

img

1、加个-getchar();-试试

img


#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int main()
{
    int a;
    printf("输入0停止循环\n");
    scanf_s("%d", &a); // &a表示存储单元的地址
    
    while (a!=0)
    {
        if (a == 1)
            printf("周一:科技活动\n");
        else if (a == 2)
            printf("周二:科技活动\n");
        else if (a == 3)
            printf("周三:科技活动\n");
        else if (a == 4)
            printf("周四:科技活动\n");
        else if (a == 5)
            printf("周五:科技活动\n");
        else
            printf("输入有误\n");

        // 从上一个缓冲区拿值,如果输出的字符不是整数
        // 5.7在上一个缓冲区只会取到5的值
        // 所以a!=0,a!=0永远成立
        // 解决方法,加个
        getchar();
        scanf_s("%d", &a);
    }
    printf("\n");
    system("pause");
    return 0;
}

scanf_s()后面要加长度的吧
15行还有一个输入
a是你自己定义int

循环里面最后加getchar(); 试试 ,请采纳哦