程序不会退出do-while循环

时间:2014-01-26 03:42:57

标签: c++ calculator do-while

我正在尝试用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循环时,它永远不会出现,它只是继续要求用户输入一个数字。我已经过几次了,我不知道问题是什么。有人可以帮忙吗?

3 个答案:

答案 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;
  }