繁体   English   中英

c 中 while 循环的基本问题,带有 or 运算符,用于从用户那里获取选择

[英]Basic problem of while loop in c with or operator, using to get choice from user

所以问题很简单,但我不知何故搞砸了。 我用这段代码创建了一个菜单:

#include<stdio.h>
int main(){
    int n;
    int choice;
        printf("\nMENU:\n");
        printf("\n1- Add new student");
        printf("\n2- Print student List");
        printf("\n3- Find max average grade");
        printf("\n4- Find a student by name");
        printf("\n5- Delete student by ID");
        printf("\n6- Export data file");
        printf("\n0- Quit\n");
        printf("\nPlease enter your choice: ");
        scanf("%d", &choice);
        fflush(stdin);
        while(choice!=1 || choice!=2 || choice!=3 || choice!=4 || choice!=5 || choice!=6 || choice!=0){
            printf("Please enter again: ");
            scanf("%d", &choice);
            fflush(stdin);
        }
}

while 循环强制用户只输入 1 到 6 或 0 退出。 但是,当我输入这些值时,循环也会执行。 我搞砸了什么?

我知道这是 c 中的一个基本概念,我已经多次使用它,但这是我第一次看到它。

养成大声/在脑海中朗读 C 表达式的习惯,然后再运用常识。

“如果选择不是 1 或者不是 2...”等等,这没有意义。
“如果选择不是 1 且不是 2……”这是有道理的。

也相关并且对程序员通常有帮助: De Morgan's Laws


与您的问题无关,告诉您使用fflush(stdin)的学习来源很糟糕,需要退役和更换。 请参阅 使用 fflush(stdin)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM