我正在尝试用C ++制作一个简单的计算器。以下是代码的一部分:
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
int main()
{
int math;
int a1;
int a2 = 0;
int a3 = 1;
int answer;
int amount = 0;
int achecker = 1;
cout << "Welcome to my calculator! Type '1' to add, type '2' to subtract, "
"type '3' to multiply, type '4' to divide, and type '5' to exit."
<< endl;
cin >> math;
while (math = 1)
{
cout << "Input how many numbers you wish to add:" << endl;
cin >> amount;
achecker = amount;
do
{
cout << "Input the number you wish to add:" << endl;
cin >> a1;
answer = a1 + a2;
a2 = a1;
achecker = achecker - achecker + 1;
} while (achecker < amount);
cout << answer;
}
我遇到的问题是,当程序进入do-while循环时,它永远不会出现,它只是继续要求用户输入一个数字。我已经过几次了,我不知道问题是什么。有人可以帮忙吗?
答案 0 :(得分:1)
你在while循环中检查错误。
match=1
是赋值操作而不是相等检查,这是您要执行的操作。赋值总是返回1(真),因此你有一个无限循环。
将match=1
替换为match==1
,以使您的代码正常工作
答案 1 :(得分:1)
achecker = achecker - achecker + 1;
总是等于1.所以我认为你在那一行有错误。
答案 2 :(得分:0)
首先,你应该写而(math == 1) sicnce math = 1 是一个赋值运算符而不是一个检查运算符。
其次,取代而,使用 if ,因为您只想进行一次加法计算,将其置于而循环将使它成为无限循环。
第三,在 do - while循环中,条件应该是而(achecker&gt; = 0),因为你的条件总是给出一个真值。所以,实际上,不需要achecker,只需为每次循环运行减少一个量,并将条件保持为 while(amount&gt; = 0)。
我想建议一个更多的改进,虽然不是必需的 - 将回答声明为 int answer = 0; 。对于每个循环运行,接受a1中的新值,然后添加,写入 answer = answer + a1 。这应该符合你的目的。
所以,根据我编辑的代码应该是 -
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
int main()
{
int math;
int a1;
int a3 = 1;
int answer = 0;
int amount = 0;
int achecker = 1;
cout << "Welcome to my calculator! Type '1' to add, type '2' to subtract, type '3' to multiply, type '4' to divide, and type '5' to exit." << endl;
cin >> math;
if(math == 1){
cout << "Input how many numbers you wish to add:" << endl;
cin >> amount;
do{
cout << "Input the number you wish to add:" << endl;
cin >> a1;
answer = answer + a1;
amount = amount - 1;
}while(amount>=0);
cout << answer;
}