首先你a在判断位数的时候已经被改掉了,接下来的读取每一位的数字的时候就会出错。
新开个变量int b = a吧。
if (b=1)永远都是返回true的 因为这是一个赋值语句
应该是if (b == 1)
初学的时候经常会犯这个错误。
建议如果判断一个变量等于一个常量的时候把常量写前面,
如 (1 == b)
这样万一你少打一个等号, 编译器会报错
这样写也可以:
/**
2012年5月3日11:23:50
功能:判断一个数是否是回文数;
*/
#include
int main(void)
{
int val;
int m,sum = 0;
printf("请输入数字: ");
scanf("%d",&val);
m = val;
while(m)
{
sum = sum*10 + m%10;
m /=10;
}
if (val == sum)
printf("yes!\n");
else
printf("no!\n");
return 0;
}
/**
结果:
请输入数字: 1221
yes!
*/
不是if(b=1)而是if(b==1)
111