是否回文数
Time Limit: 1 Sec Memory Limit: 128 MB 64bit IO Format: %lld
Description
编写程序判断输入正整数n是否回文数(回文数就是一个正整数从左到右和从右到左的值相等,例如121,145541)。
Input
包含多组测试数据,每组测试数据占一行,每行1个正整数。
Output
每组测试数据输出占一行,如果是回文数则输出YES,否则输出NO。
Sample Input
121
Sample Output
YES
题目分析:水题,但是可以找到很好的方法。
方法一:用 f 标志是否为回文数,是则 f=0 ,不是则 f=1
用字符串存储该数,设置两个指针 i 和 j ,一个从前往后一个从后往前判断。
#include<stdio.h>
#include<string.h>
int main()
{
int i,j,l,f;
char a[10000];
while(gets(a)!=NULL)
{
//getchar();
f=0;
l=strlen(a);
i=0;
j=l-1;
while(i<l && j>=0)
{
if(a[i]==a[j])
{
i++;
j--;
}
else
{
f=1;
break;
}
}
if(f==0)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
方法二:
只需要判断一半即可,代码如下:
#include<stdio.h>
#include<string.h>
int main()
{
int i,j,l;
char a[10000];
while(gets(a)!=NULL)
{
//getchar();
l=strlen(a);
i=0;
j=l-1;
while(i<j)
{
if(a[i]!=a[j])
break;
i++;
j--;
}
if(i<j)
printf("NO\n");
else
printf("YES\n");
}
return 0;
}