永发信息网

C++求是否是回文数,我想知道设计思路

答案:2  悬赏:0  手机版
解决时间 2021-02-19 04:07
#include
using namespace std;
bool IsPalindromeNum(int num) {
char s[10], i = 0, j;
while (num > 0) {
s[i] = num % 10 + '0';
num = num / 10;
i++;
}
s[i] = '\0';
i--;
for (j = 0; j < (i + 1) / 2; j++) if (s[j] != s[i - j]) return false;
return true;
}
void main() {
int number;
cout << "输入一个整数:";
cin >> number;
if (IsPalindromeNum(number)) cout << number << " : 是回文数" << endl;
else cout << number << " : 不是回文数" << endl;
}
复制的,不懂这个程序的设计理念,大神大概讲下
最佳答案
把一个整数的各个数位分离出来转换成字符数组:比如1234转换成{'1', '2' ,'3', '4'}
然后对这个数组进行比较,第1个元素和最后一个元素比较,第2个和倒数第2个比较,一旦不相等,就return false
这个思路其实有些复杂了,给你提供一种更简单的方法:
仍然是分离1个整数的各个数位,但是把这些数位逆序加起来,即将一个数转换成它的逆序,如果和原来的数相等,那么就是回文。
比如1234,逆序是4321,和原来不相等,则不是回文
全部回答
#include  using namespace std; bool IsPalindromeNum(int num) { char s[10], i = 0, j; while (num > 0) { s[i] = num % 10 + '0'; // 取个位+'0'转换成0-9的数字 num = num / 10;   // 向前移一位(如个位变十位,十位变百位) i++; } s[i] = '\0'; i--;  // 由头和尾部收缩两两对比。 另外这个程序不严谨。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
为什么爱奇艺有的可以看小说有的不行
臻滋味这个地址在什么地方,我要处理点事
【兴业宝】某客户的兴业宝(大成增利)持仓份额
欧陆风云4什么垃圾游戏
鑫宇建材有限公司怎么去啊,有知道地址的么
【扫弦怎么扫】...和不用拨片时的大拇指和食
我想问一下关于笔记本电脑的一些问题,显卡GT
白酒添加除苦济有害吗?
国内众筹项目有哪些类别
鑫天宾馆地址在什么地方,想过去办事
请帮我写一篇初中英语作文,以My invention为
质量为m的物体沿倾角为θ斜面下滑,t秒内下滑
周柏豪的歌词有一句是 我犯了同样的错 约会时
微信怎么查加入的群
台湾有哪些风景名胜?
推荐资讯
舞阳县漯河舞阳县文化馆公益少儿读书会怎么去
起点中文网如何推书
如何识别地弹簧的好坏
父的偏旁有什么字
中国邮政储蓄银行杨士营业所这个地址在什么地
为什么衰变产生的粒子会对人有害?求详细解释
有100只兔子,还有一百元钱,兔子有三种,小
用镜头焦距为50MM的相机拍照,摁快门的同时不
我的名字改动过一个字,不过是同音不同字。我
小龙人幼儿园地址在什么地方,想过去办事
意外险是不是不在五险之内,单位给上一个月多
【同义句转换:The boy was born in the 1940
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?