#include#include using namespace std; bool IsPalindromicNumber(int num); int main(){ int a, b, flag = 0; cin >> a; //上限 cin >> b; //下限 for (int i = a + 1; i < b; i++){ //这个循环主要用于输出我们输入的数a到数b这个范围的回文数 if (IsPalindromicNumber(i)){ cout << setw(8) << i; //使用setw输出 更好看点 flag++; if (flag % 5 == 0){ //限定每五个换行 cout << endl; } } } system("pause"); return 0; } bool IsPalindromicNumber(int num){ //判断一个数是否为回文数 int arr1[100] = { 0 }, weishu = 0, biaozhi1, biaozhi2; weishu = 0; //位数,可用于从数组中取元素来比较 for (int i = 1, num1 = num, shuzu = 0; num / i; i = (i * 10)) { //这个循环用于获得num的每一位,当num/i==0时结束,i每过一次循环都会大10倍 //当num为一位时 循环进行一次 当num为两位 两次 三位 三次 arr1[shuzu] = num1 % 10; //依次获得从个位开始的每一位 num1 = num1 / 10; weishu++; //循环进行一次,表明位数需要加一 shuzu++; //并且使它存到数组的下一位 } biaozhi1 = 0; biaozhi2 = 0; for (int i = 0, j = weishu - 1; j>i;){ biaozhi1++; //循环进行一次,标志1加一 if (arr1[i] == arr1[j]){ //比较数组arr1中的对应位是否相等 biaozhi2++; //相等则标志2加一 } else{ break; } i++; j--; } if (biaozhi1 == biaozhi2){ //下结论num是回文数 return true; } return false; }



