做回文数用循环,哪里有错
#include
int main()
{
int a,b,c,e,q;
1<=a && a<=9;
1<=b && b<=9;
1<=c && c<=9;
1<=e && e<=9;
if(0<=q && q<=9)
printf("%d",q);
else if(10<=q &&q<=100)
printf("%d",q,q=a*10+b,a==b);
else if(100<=q && q<=1000)
printf("%d",q,q=a*100+b*10+c,a==c);
else if(1000<=q && q<=10000)
printf("%d",q,q=a*1000+b*100+c*10+e,a==e,b==c);
return 0;
}
------解决思路----------------------
附上代码供参考:
#include
/** 该函数 判断是否是回文数。返回值 0 表示 否, 1 表示是回文数 */
int isPalindrome(int value)
{
int sum = 0;
int i = 0;
int tmp = value;
while (0 != tmp)
{
sum = sum*10 + tmp%10;
tmp = tmp/10;
}
if (sum == value)
{
return 1;
}
return 0;
}
int main(int argc, char* argv[])
{
int iRet = 0; //用于存放函数返回值
int input_value = 0; //存放用户输入的值
scanf("%d", &input_value);
iRet = isPalindrome(input_value); //判断是否是回文数
if (1 == iRet)
{
printf("%d is a palindrome \n", input_value);
}
else
{
printf("%d is NOT a palindrome \n", input_value);
}
return 0;
}
------解决思路----------------------
这部分代码编译都过不去吧,1<=a && a<=9;
1<=b && b<=9;
1<=c && c<=9;
1<=e && e<=9;
这部分是伪代码?建议你通过自己首先把编译出错的问题去掉,然后通过打印的方法找到逻辑错误。这样进步更快吧~~~
------解决思路----------------------
上面打错了。应该是:
各个变量都是全局变量,都被系统清零。因此a=b=c=e=q=0
既然q=0,那么只有第一个if是真的,因此输出“0”。