c++ - 反转数字 (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() {"
解决方案
你可以试试这个:
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
包含许多有用方法的标题,这些方法可以在开发程序时为您提供帮助。
推荐阅读
- xamarin - 在 stacklayout 中自动堆叠标签,没有边距
- oracle - 从 Netsuite 摘要保存的搜索中删除“总计”行
- java - 为什么这个多线程计数器会产生正确的结果?
- sql-server - SQL Server 2012 的 OPenQuery(SET FTMONLY OFF)问题
- xml - 如何在 xsd 中声明包含一系列嵌套子元素的照片元素?
- reactjs - 使用自定义 Route 组件时 React Router 匹配属性 null
- c++ - 在 Linux 上使用 SDL2 确定最大窗口大小
- python - Python 包在第一次尝试时未安装,但在第二次尝试时安装
- javascript - Node JS 异步/等待控制器问题
- mongodb - MongoDB - 查询集合以返回所有最新版本的文档