gpt4 book ai didi

C++ while 循环不按预期/希望的方式运行

转载 作者:行者123 更新时间:2023-11-30 05:24:16 24 4
gpt4 key购买 nike

我一直在用 C++ 编写一个小的计算器项目来训练我的技能(并希望给我一种成就感),但是我的 while 循环遇到了问题。

本质上,程序会提示用户输入要使用的“模式”/命令(例如乘法、除法等),然后调用适当的命令。一旦他们完成,它应该让他们回到开始(while 循环,while 循环本质上是真的)并重新开始(返回 0),并可选择退出(返回 1)。但是,即使如此,它也会在第一次后立即退出。难道我做错了什么?我是否严重误解了 C++ 编程?或者是什么?这是我的代码:(删除了大部分功能)

#include <iostream>


using namespace std;

int cMode(); // function prototypes
int add();
int sub();
int mult();
int divide();
int sqr();

int main() { // main function start
do {
cMode();
} while (0);

return 0;
}

int cMode() { // mode selection func
int mode;
cout<<"Please select which mode you would like to avail from the following:\n";
cout<<"1. Addition\n2. Subtraction\n3. Multiplication\n4. Division\n5. Sqaure root finder\n6. Exit\n";
cin>>mode;
if ( mode == 1 ) {
return add();
}
}

int add() { // addition function
int x, y; // variables

cout<<"Please type the first number to add: ";
cin>>x;
cin.ignore();
cout<<"Please type the second number to add: ";
cin>>y;
x = x + y;
cout<<"The answer is "<< x <<".";
return 0;
}

无论如何,如果有人能提供帮助,我们将不胜感激。此外,还有两个关于 out<<"...."<< x <<; 的小问题,为什么我必须在末尾包含 ""才能运行?我遇到了错误,为什么我不能将 endl 放在 cout 行的“”末尾?

谢谢!

最佳答案

问题在这里:

int main() { // main function start
do {
cMode();
} while (0);
}

它将执行 do {} 部分,然后由于 while 中的条件为 0 它退出。 do-while 一直执行到条件的计算结果为非零值为止。

你可能想创建一个变量并存储 cMode() 的返回值,然后有类似的东西:

int main() { // main function start
int ret=0;
do {
ret=cMode();
} while (ret);
}

顺便说一句,要使其正常工作,您需要确保仅当用户选择模式 6(退出)时 cMode() 才返回 0。

NVM 编辑了您的问题,因为这是一个代码格式问题: 还有一件事,也许这是一个问题格式问题,但您有 add() main()I don't think that works in c++ 中的函数.

关于C++ while 循环不按预期/希望的方式运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38752230/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com