首页 > 解决方案 > 反转数字 (C++)

问题描述

我是 C++ 的新手,正在尝试制作一个简单的程序来确定用户输入的整数是否为四位数字,如果是,则反转所述数字的顺序并打印该输出。

我有一个(大部分)工作程序,但是当我尝试时,会发生以下两种情况之一:

a) 如果第 16 行被注释掉并且第 17 行处于活动状态,那么程序会打印出无数个反转的数字并且 IDE(在本例中为 repl.it)崩溃;或者

b) 如果第 17 行被注释掉并且第 16 行处于活动状态,那么程序会打印出一个正确的行,但下一行是“你的号码太短......再次”(请看下面的代码)

#include <iostream>
using std::string;
using std::cin;
using std::cout;
using std::endl;

int main() {
  int n, reversedNumber, remainder;
  bool loopControl;
  char userFinalResponse;
  reversedNumber=0;

  cout<<"Input a 4 digit integer and press Return\n"<<endl;
  cin>>n;
  while (loopControl=true){
    //if ((n>9999)||(n<1000))
    if ((n>9999)||((n<1000)&&(n>0)))
    {
      cout<<"Your number is too short or too long. Please try again.\n"<<endl;
      cin>>n;
      loopControl=false;
    } else {
      while(n != 0)
      {
        remainder = n%10;
        reversedNumber=reversedNumber*10+remainder;
        n /= 10;
        loopControl=true;
      }//closing brace for reversal loop
      cout<<"Your reversed number is "<<reversedNumber<<"\n"<<endl;
    }//closing brace for else
  }//closing brace for "while (loopControl>0){"
  return 0;
}//closing brace for "int main() {"

标签: c++c++14

解决方案


你可以试试这个:

int number = 1874 //or whatever you need
auto str = std::to_string(number);

if (str.length() == 4) {
    std::reverse(str.begin(), str.end());
    std::cout << str << std::endl;
}

我建议您看一下algorithm包含许多有用方法的标题,这些方法可以在开发程序时为您提供帮助。


推荐阅读