#include<stdio.h>int main(void){int a; scanf("%d",&a);int m;int sum = 0;m = a;while(m){sum = sum*10 + m%10;m /= 10; // m = m/10}if( sum == a)printf("是回文數(shù)!\n");elseprintf("不是回文數(shù)\n");return 0;}大神們給解釋下這個程序,,流程能看懂,但是判斷的思路不清楚。。我看網(wǎng)上還有一些判斷的程序,貌似比這個復(fù)雜些,能對比解釋下更好了。
1 回答

小怪獸愛吃肉
TA貢獻(xiàn)1852條經(jīng)驗 獲得超1個贊
原理:
任何一個數(shù)除以10的余數(shù)就是該數(shù)最后一位
任何一個數(shù)除以10的商就是排除掉最后一位后的數(shù)(因為 c++ 兩個整數(shù)相除結(jié)果還是整數(shù))
所以 ,一個數(shù)1234 就可以通過這種方法得到 123 和 4
接下來對 123 進(jìn)行同樣的操作,就得到 12 和 3
接下來得到 1 和 2
接下來得到 0 和 1
整個過程是個循環(huán),當(dāng)商不是 0 的時候就一直這么干
每次拿到一個余數(shù),都用來構(gòu)造新數(shù),新數(shù)=新數(shù)*10+余數(shù)
所以經(jīng)過四次循環(huán)后,我們得到新數(shù) 4321 ,如果是回文,那么新數(shù)應(yīng)該等于原數(shù),否則,說明不是回文。
- 1 回答
- 0 關(guān)注
- 991 瀏覽
添加回答
舉報
0/150
提交
取消