我一直在用C ++编写一个小计算器项目,只是为了训练我的技能(希望能给我一种成就感),但我遇到了我的while循环问题。
本质上,程序会提示用户使用' mode' /命令(例如乘法,除法等),然后调用相应的命令。一旦它们完成,它应该将它们带回到开始(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;
}
无论如何,如果有人能提供帮助,我将不胜感激。此外,还有另外两个小问题,其中&lt;&lt;&#;;&#34; ....&#34;&lt;&lt; x&lt;&lt ;;,,为什么我必须包括&#34;&#34;最后它运行?我和他们一起犯了一个错误,为什么我不能把endl放在&#34;&#34;在cout线上?
谢谢!
答案 0 :(得分:1)
问题出在这里:
int main() { // main function start
do {
cMode();
} while (0);
}
它将执行do {}
部分,然后由于0
中的条件退出。 do-while
执行,直到条件计算为非零值。
您可能想要创建一个变量并存储来自cMode()
的返回值,然后执行以下操作:
int main() { // main function start
int ret=0;
do {
ret=cMode();
} while (ret);
}
顺便说一下,要使其工作,只有当用户选择模式6(退出)时,才需要确保cMode()
返回0。
NVM编辑了您的问题,因为这是一个代码格式化问题: 还有一件事,也许这是一个问题格式化问题,但您在 add()
内有main()
函数{1}}和I don't think that works in c++
。
答案 1 :(得分:0)
你应该这样做:
#include <iostream>
using namespace std;
int cMode(); // function prototypes
int add();
int sub();
int mult();
int divide();
int sqr();
int main() { // main function start
while (cMode() == 0); //This keep the loop
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(); //all functions should return 0 in success
}
if ( mode == 6) {
return 1; //returning 1 exits the loop
}
}
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;
}
问题是while(0)与while(false)相同,因此它的计算结果为false并结束...