今天牛牛学到了回文串,他想在数字里面找回文,即回文数,回文数是正着读与倒着读都一样的数,比如1221,343是回文数,433不是回文数。请输出不超过n的回文数。
#include<stdio.h>
int main()
{
int k = 0;
int i = 0;
//int j = 0;
int gw = 0;
int sw = 0;
int bw = 0;
int qw = 0;
int ww = 0;
scanf("%d", &k);
for (i = 1; i <= k; i++)//产生0~k所有的数字
{
if (i < 10)
{
printf("%d\n", i);
}
if (i >= 10 && i < 100)
{
gw = i % 10;
sw = i / 10 % 10;
if (gw == sw)
{
printf("%d\n", i);
}
}
if (i >= 100 && i < 1000)
{
gw = i % 10;
sw = i / 10 % 10;
bw = i / 100 % 10;
if (gw == bw)
{
printf("%d\n", i);
}
}
if (i >= 1000 && i < 10000)
{
gw = i % 10;
sw = i / 10 % 10;
bw = i / 100 % 10;
qw = i / 1000 % 10;
if (qw == gw && sw == bw)
{
printf("%d\n", i);
}
}
if (i >= 10000 && i < 100000)
{
gw = i % 10;
sw = i / 10 % 10;
bw = i / 100 % 10;
qw = i / 1000 % 10;
ww = i / 10000 % 10;
if (ww == gw && sw == qw)
{
printf("%d\n", i);
}
}
}
return 0;
} #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;
}