c++ - 1 到 10000 之间的回文数
问题描述
我想编写一个显示 1 到 10000 之间的回文数的程序,我编写了一个脚本,显示用户输入的数字是否是回文数,但是当我添加 for 循环时,它给了我错误的结果我的代码:
#include<iostream>
using namespace std;
int main()
{
int num, reverse = 0, remainder, temp;
for(num=0;num<1000;num++){
temp = num;
cout << "temp = " << temp << endl;
while( temp != 0)
{
remainder = temp % 10;
reverse = reverse * 10 + remainder;
temp = temp / 10;
cout << "remainder = " << remainder << endl;
cout << "reverse = " << reverse << endl;
cout << "temp = " << temp << endl;
}
cout << "Reversed number: " << reverse << endl;
if (num == reverse)
cout << "\n" << num << " is a palindrome number." << endl;
else
cout << "\n" << num << " is not a palindrome number." << endl;
}
return 0;
}
解决方案
我检查了您的程序并发现了一些缺陷:
1)所有 1 位数字都是回文,因为它们的反转是相同的。
---您的程序没有将它们显示为回文。
2)您不必显示所有详细信息,例如它们的余数和反向。
---显然回文的反转将与原版相同。我们不需要显示非回文。在某些情况下,反向也显示垃圾值。我找不到对用户有任何帮助的理由。
解决方案:-
#include<iostream>
using namespace std;
bool findPalindrome(const int);
int main()
{
for (int i = 0; i < 10000; i++) {
if (findPalindrome(i)) {
cout << "Number " << i << " is a Palindrome!" << endl;
}
}
return EXIT_SUCCESS; // Return EXIT_SUCCESS is my Specialty :D
}
bool findPalindrome(const int num) {
int temp = num;
int reve = 0;
while (temp != 0) {
reve = (reve * 10) + (temp % 10);
temp /= 10;
}
return (reve == num);
}
推荐阅读
- ios - iOS按比例缩放元素与视口的相对距离
- cakephp - 如何修复 Cakephp3 应用程序中的“加载的文件没有有效的 JavaScript MIME 类型”错误
- c# - 从 Mongo 异步获取用户产品
- google-apps-script - 链接公式更改时如何在谷歌表格中创建时间戳
- c# - 从本地系统帐户向不同帐户添加凭据
- sql - 提取月份编号并将其转换为 SQL Server 中的月份名称
- django - 我们可以自定义整个 Django 管理站点吗?
- entity-framework - 使用 dotnet ef 迁移创建数据库时如何设置字符集?
- angular - 角度形式不采用初始值
- instagram - cURL https://www.instagram.com/{USERNAME}/?__a=1 从生产服务器返回 Instagram 登录页面