2464: 第六章:函数的使用《练习4:判断回文数》
题目描述
给出一个四位数n,判断是否回文数(顺着读和倒着读都是一样的),如果是就是输出yes,否则输出no。1221是回文数,1231不是回文数,2222是回文数,2221不是,1551是回文数等等,你应该懂什么是回文数了吧。要用函数。
非函数版本:
#include<cstdio>
using namespace std;
int main()
{
int n;
scanf("%d",&n);
int x1,x2,x3,x4;
x1=n%10;//取个位
x2=n/10%10;//取十位
x3=n/100%10;//取百位
x4=n/1000;//取千位
if( x1==x4 && x2==x3) //如果个位等于千位,并且十位等于百位
{
printf("YES\n");
}
else
{
printf("NO\n");
}
return 0;
}
函数版本:
#include<cstdio>
using namespace std;
int panduan(int x)
{
int x1,x2,x3,x4;
x1=x%10;//取个位
x2=x/10%10;//取十位
x3=x/100%10;//取百位
x4=x/1000;//取千位
if( x1==x4 && x2==x3)//如果个位等于千位,并且十位等于百位
{
return 1;
}
else
{
return 0;
}
}
int main()
{
int n,k;
scanf("%d",&n);
k=panduan(n);
if(k==1)
{
printf("YES\n");
}
else
{
printf("NO\n");
}
return 0;
}
练习:输入n(n可以是3位数,也可以是4位数,也就是n的范围是[100,9999]),输出1~n所有的回文数,注意:三位数也有回文数,比如151,242,353等等都是。要写3个函数,一个用来判断两位数,一个用来判断三位数,一个用来判断四位数。
#include<cstdio>
using namespace std;
int panduan2(int x)
{
int x1,x2,x3,x4;
x1=x%10;//取个位
x2=x/10%10;//取十位
if( x1==x2) return 1;
else return 0;
}
int panduan3(int x)
{
int x1,x2,x3,x4;
x1=x%10;//取个位
x2=x/10%10;//取十位
x3=x/100%10;//取百位
if( x1==x3 )return 1;
else return 0;
}
int panduan4(int x)
{
int x1,x2,x3,x4;
x1=x%10;//取个位
x2=x/10%10;//取十位
x3=x/100%10;//取百位
x4=x/1000;//取千位
if( x1==x4 && x2==x3) return 1;
else return 0;
}
int main()
{
int n,i;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
if(i<10)
{
printf("%d\n",i);
}
else if(i<100)
{
if( panduan2(i)==1)
{
printf("%d\n",i);
}
}
else if(i<1000)
{
if( panduan3(i)==1)
{
printf("%d\n",i);
}
}
else
{
if( panduan4(i)==1)
{
printf("%d\n",i);
}
}
}
return 0;
}
样例输入 复制
1221
样例输出 复制
yes