“回文”是指正讀反讀都能讀通的句子,它是古今中外都有的一種修辭方式和文字游戲,如“我為人人,人人為我”等。在數學中也有這樣一類數字有這樣的特征,成為回文數(palindrome number)。?
設n是一任意自然數。若將n的各位數字反向排列所得自然數n1與n相等,則稱n為一回文數。例如,若n=1234321,則稱n為一回文數;但若n=1234567,則n不是回文數。?
注意:
1.偶數個的數字也有回文數124421
2.小數沒有回文數
方法一:數字
判斷輸入的數字和鏡像后的數字是否相等
?
#include<stdio.h>
int main()
{int x, mirror, input;while(scanf("%d", &x) != EOF){mirror = 0;input = x;do{mirror = mirror*10+x%10;x /= 10;} while(x > 0);if(input == mirror)printf("Yes\n");elseprintf("No\n");}return 0;
}
方法二:字符串
回文數關于中心對稱,只要比較對稱位置的數即可
#include<stdio.h>
#include<string.h>
int main()
{int i, length, flag = 1;char a[100];while(gets(a)){length = strlen(a);for(i=0; i <= length/2; i++){if(a[i] != a[length-i-1]){flag = 0;break;}}if(flag == 1)printf("Yes\n");elseprintf("No\n");}return 0;
}
運行結果與方法一相同
原文鏈接:C++筆試題之回文數的判斷-CSDN博客