C++ 同时循环澄清

C++ While Loop Clarification

本文关键字:循环 C++      更新时间:2023-10-16

这是我对while循环的编码,我想要的只是让程序询问用户是否要重新运行该程序。应该输入(是/否)。但是,每次我运行程序时,它都会持续运行 main() 函数,即使我为 ans 变量输入 N 或 n 个字符也是如此。任何帮助将不胜感激。

cin>>ans;
        while((ans !='N')||(ans !='n')) {
        return main();
        }
        return 0;
}

在你的while语句中,"||"表示"或"。只要其中一个条件为真,while 语句就会继续运行。您需要使用"and"语句"&&"。

条件(ans !='N')||(ans !='n')始终true。要么ansN,要么ansn.一方总是true.将其更改为 while (ans !='N')&&(ans !='n'),然后如果 ans 等于 Nans等于 n,则循环终止。注意 A || B!(!A && !B) 相同。

正确的方式

int askAgain() {
    do {
        // Do your work
        // But never call main(), people will laugh
        cin>>ans;
    } while((ans !='N') && (ans !='n'));
    return 0;
}

有更好的方法来完成你想要做的事情。尽管有可能让它与 return main() 一起工作,但它的效率非常低。

让循环运行到用户输入键(在本例中为"N")的一种方法是:

int main()
{
    char ans = '?';
    while (ans != 'N' && ans != 'n')
    {
        cin >> ans;
    }
    return 0;
}

目的是在与条件不匹配时不断提示用户输入值。我还将"answers"设置为值"?",以便在第一次运行循环时不会遇到错误。您也可以将其转换为:do-while循环并删除初始化以完成相同的操作。

希望这足以为您解释。