我需要循环这个,并在给出字符串 -1 时让程序终止

I need to loop this through and have the program terminate when the string -1 is given

本文关键字:字符串 终止 程序 循环      更新时间:2023-10-16
#include <iostream>
#include <cmath>
using namespace std;
int main (){
//Written By: Hannah Stang
//Reads a Binary number and converts it to a decimal
long decimal = 0, remainder, number, base = 1;
long bin;
    cout << "Enter a binary number: ";
    cin >> number;
    bin = number;
    while (number > 0)
    {
        remainder = number % 10;
        decimal = decimal + remainder * base;
        base = base * 2;
        number = number / 10;
    }
cout << "Conversion to decimal: " << decimal << endl;
return 0;
}

我遇到的主要问题是试图让程序运行不止一次。我需要它不断重复,直到我输入 -1 作为值。

您可以执行以下操作:

#include <iostream>
#include <cmath>
using namespace std;
int main (){
//Written By: Hannah Stang
//Reads a Binary number and converts it to a decimal
  long decimal = 0, remainder, number, base = 1;
  long bin;
  cout << "Enter a binary number: ";
  cin >> number;
  while (number != -1)
  {
    bin = number;
    while (number > 0)
    {
        remainder = number % 10;
        decimal = decimal + remainder * base;
        base = base * 2;
        number = number / 10;
    }
    cout << "Conversion to decimal: " << decimal << endl;
    cout<< "Enter a binary number: ";
    cin>> number;
  }
  return 0;
}

换句话说,只需将主代码嵌入到一个循环中,其条件是数字不等于 -1

请注意,我正在读取循环主体末尾的数字,因此如果用户输入 -1,他会立即退出。

尝试移动 while 循环并从初始化为 1 的number开始:

long decimal = 0, remainder, number=1, base = 1;
while (number > 0)
{
    cout << "Enter a binary number: ";
    cin >> number;
    bin = number;
    remainder = number % 10;
    decimal = decimal + remainder * base;
    base = base * 2;
    number = number / 10;
    cout << "Conversion to decimal: " << decimal << endl;
}

或者你可以做这样的事情:

while (1)
{
    cout << "Enter a binary number: ";
    cin >> number;
    if(number == -1)
    {
        cout<<"Program exiting.";
        break;
    }
    bin = number;
    remainder = number % 10;
    decimal = decimal + remainder * base;
    base = base * 2;
    number = number / 10;
   cout << "Conversion to decimal: " << decimal << endl;
}