回文数是正着读与倒着读都一样的数,比如1221,343是回文数,433不是回文数。
注意:
偶数个的数字也有回文数124421;
小数没有回文数。
1.请输出不超过n的回文数。
输入描述:
输入一个整数n(1 <= n <= 100000)
输出描述:
从1开始按从小到大的顺序输出所有回文数
示例1
输入:
10
输出:
1
2
3
4
5
6
7
8
9
解题思路:对每个数进行检验,检验方法为将该数反写,比较两数是否相同,相同则为回文数。
解法一
#include<stdio.h>
int main()
{
int n;
scanf("%d", &n);
int i = 0;
for(i = 1; i <= n; i++)
{
int j = 0, num = i;
while(num > 0)
{
j = j*10 + num % 10;
num = num / 10;
}
if(j == i)
printf("%d\n", i);
}
return 0;
}
解法二
#include <stdio.h>
int main()
{
int n,sum,k;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
k=i;
sum=0;
while(k)
{
sum=sum*10+k%10;
k=k/10;
}
if(sum==i)
{
printf("%d\n",sum);
}
}
return 0;
}
解法三
#include<stdio.h>
int main()
{
int n , i;
scanf("%d",&n);
for(i = 1 ; i <= n ; i++ )
{
//一位数中的全部回文数
if( i < 10 )
{
printf("%d \n",i);
continue;
}
//两位数中的全部回文数
else if( i < 100 )
{
int one = i % 10; //个位
int ten = i / 10; //十位
if( one == ten ) printf("%d \n",i); //百位
continue;
}
//三位数中的全部回文数
else if( i < 1000 )
{
int one = i % 10;
int hun = i / 100;
if( one == hun ) printf("%d \n",i);
continue;
}
//四位数中的全部回文数
else if( i < 10000 )
{
int one = i % 10;
int thou = i / 1000;
int hun = ( i - thou * 1000 ) / 100;
int ten = ( i - thou * 1000 - hun * 100 ) / 10;
if( one == thou && ten == hun ) printf("%d \n",i);
continue;
}
//五位数中的全部回文数
else if( i < 100000 )
{
int one = i % 10;
int ten_thou = i / 10000;
int thou = ( i - ten_thou * 10000 ) / 1000;
int ten = i % 100 / 10;
if( one == ten_thou && ten == thou ) printf("%d \n",i);
continue;
}
}
return 0;
}
2.从键盘上输入一个正整数,判断其是否是回文数。如果是回文数,则输出Yes,否则输出No。
for循环
用法如下:
for ( init; condition; increment )
{
statement(s);
}
下面是 for 循环的控制流:
init 会首先被执行,且只会执行一次。这一步允许您声明并初始化任何循环控制变量;
接下来,会判断 condition。如果为真,则执行循环主体。如果为假,则不执行循环主体,且控制流会跳转到紧接着 for 循环的下一条语句;
在执行完 for 循环主体后,控制流会跳回上面的 increment 语句。该语句允许您更新循环控制变量。该语句可以留空,只要在条件后有一个分号出现即可;
条件再次被判断。如果为真,则执行循环,这个过程会不断重复(循环主体,然后增加步值,再然后重新判断条件)。在条件变为假时,for 循环终止。
测试输入:123。预期输出:No。
测试输入:123321。预期输出:Yes。
#include<stdio.h>
#include<string.h>
int main()
{
int b,c,sum=0;
scanf("%d",&c);
b=c;
while(b)
{
sum=sum*10+b%10;
b/=10;
}
if(c==sum)
{
printf("Yes\n");
}
else
{
printf("No\n");
}
return 0;
}