#include<stdio.h> int main() { int x,newed,t,n; while(scanf("%d",&x)!=EOF) { newed=0; n=x; do { newed=newed*10+x%10; x/=10; }while(x>0); if(n==newed) printf("Yes\n"); else printf("No\n"); } return 0; }
方法二:
试用情景,处理大数字。使用字符串处理方式。因为回文数关于中心对称,只要比较对称的数即可。
#include<stdio.h> #include<string.h> int main() { int i,length,flag=1; char a[100]; gets(a); length=strlen(a); for(i=0;i<=length/2;i++) { if(a[i]!=a[length-i-1]) { flag=0; break; } } if(flag==1) printf("yes"); else printf("no"); return 0; }
方法三:
试用情景,处理大数字。使用栈的思想。和字符串处理方式类似,这里是比较出栈元素与串中字符,如不等,则是no。
#include<stdio.h> #include<string.h> #define StackSize 100 typedef struct { char data[StackSize];//开栈为100; int top=0; }SeqStack; int main() { SeqStack s; char str[100]; scanf("%s",str); int len=strlen(str); int i,flag=1; for(i=0;i<len/2;i++)//将一半字符入栈 s.data[s.top++]=str[i]; if(len%2) i++; //奇数时自动跳过中间的数字,如121,跳过2,比较1 while(s.top)//相当于EmptyStack(&s),判断是否栈空. {
// 每弹出一个字符与相应字符比较 char temp=s.data[--s.top]; if(temp!=str[i]){ flag=0; }else{ i++; } } if(flag==0){ printf("no\n"); }else{ printf("yes\n"); } return 0; }
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233045.html原文链接:https://javaforall.net