问题描述:输入一组正整数,判断输入的数字是否为回文数,是则输出该数。输入-1时结束。提示:若一个正整数(首位不为0),从左向右读与从右向左读是一样的,则称作回文数,例如1,11,121,1221,12321 等都是回文数。
例如:输入 121 1212 22 2,则输出结果为 121 22 2
提示:不需要输入全部数据之后再统一处理,例如,输入1212时,121已输出。
思路:将数字逐位拆分,首尾对照,全部相同输出。判定大多数情况下需要flag变量!!!
代码:
#include <stdio.h>
int main(){
int n,a[10];
while(scanf("%d",&n),n!=-1){
int k=n,i=0,j=0,flag=1;
while(k!=0){
a[i++]=k%10;//逐位拆分;
k/=10;
}
i--;//下标需要回退一位
while(i>j){
if(a[j++]!=a[i--])
flag=0;
}
if(flag){
printf("%d\n",n);
}
}
return 0;
}