2464: 第六章:函数的使用《练习4:判断回文数》

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:5 解决:3

题目描述

给出一个四位数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