今天牛牛学到了回文串,他想在数字里面找回文,即回文数,回文数是正着读与倒着读都一样的数,比如1221,343是回文数,433不是回文数。请输出不超过n的回文数。
#include <stdio.h> int main() { int a[30]; int n = 0; scanf("%d", &n); //回文数相当于换位置,后面的数一直*10,得到得结果与原来的一样 for (int i = 1; i<=n; i++) { //i的值还要和sum比较 int tmp = i; //sum的值每次也需要变成0,不然初值就不为0 int sum = 0; while (tmp) { sum = sum*10+ tmp % 10; tmp /= 10; } if(sum == i) printf("%d\n",sum); } return 0; }
/* 思路 : 可以使用用数组存放数据的操作 将1-100000中所有的数字都遍历出来 然后判断数组的下标 是否相等 ------------------------------------------------ 操作起来有点复杂 还是用取模和取余运算吧 */ // # include <stdio.h> // int main () // { // int a,b,c,d,e,f; // return 0; // } # include <stdio.h> int main () { int n = 0; scanf("%d",&n); for(int i=1;i<=n;i++) { if (i<10) { printf("%d\n",i); } else if (i<100) { if (i%10==i/10) { printf("%d\n",i); } } else if (i<1000) { if (i%10==i/100) { printf("%d\n",i); } } else if (i<10000) { if (i%10==i/1000&&i/100%10==i/10%10) //9999 9889 包括这样 { printf("%d\n",i); } } else if (i<100000) { if (i%10==i/10000&&i/1000%10==i/10%10) //99999 98889 { printf("%d\n",i); } } } return 0; }
#include <stdio.h> int main() { int n = 0;//输入的整数 int m = 0;//每次判断的数 int j = 0;//倒着读判断的数 scanf("%d", &n); for (int i = 1; i <= n; i++) { m = i; while (m)//计算倒着读 { j *= 10; j += m % 10; m = m / 10; } if (i == j)//判断并输出 printf("%d\n", j); j = 0;//初始化数据 } return 0; }
#include <stdio.h> #include <math.h> void test(int arr1[], int i, int* px) { arr1[*px] = i % 10; (*px)++; if (i / 10 != 0) { test(arr1, i / 10, px); } } int main() { int n = 0; scanf("%d", &n); int arr1[6] = { 0 }; int arr2[6] = { 0 }; if (n >= 1 && n <= 100000) { int i = 0; for (i = 1; i < 10; i++) { if (i / 10 == 0 && i % 10 != 0) { printf("%d ", i); } } for (i = 10; i < n; i++) { int j = 0; int count = 0; test(arr1, i, &count); int k = 5; while (k) { if (i / ((int)pow(10, k)) != 0) { arr2[0] = i / ((int)pow(10, k)); for (j = 1; j <= count - 2; j++) { if (k > 1) { arr2[j] = (i % ((int)pow(10, k))) / ((int)pow(10, k - 1)); k--; } } arr2[count - 1] = i % 10; break; } k--; } int count1 = 0; for (j = 0; j < count; j++) { if (arr1[j] == arr2[j]) { count1++; } } if (count1 == count) { printf("%d ", i); } } } return 0; }
#include <stdio.h> #include <math.h> int main() { long n, tmp, tmp1, sum = 0, j = 0; while (scanf("%ld", &n) != EOF) { for (long i = 1; i <= n; i++) { tmp = i; tmp1 = i; while (tmp1) { tmp = tmp1 % 10; tmp1 /= 10; sum = sum * 10 + tmp; j++; } if (sum == i) { printf("%d\n", sum); } j = 0; sum = 0; } } return 0; }