C语言数据逆序显示问题

Description
输入一个任意长度的正整数,将该数逆序输出。如,输入正数237,则逆序显示的结果为732。如输入230,则逆序显示的结果为32。
Input
输入一个正整数。
Output
该数的逆序显示结果(数字最前面的0不显示,如340反转后。要求输出为43,而不是043)
Sample Input
123
Sample Output
321
========上面是问题,下面是我的解答,为什么不对?=========
#include <stdio.h>
int main()
{
int x,i=0;
scanf("%d",&x);
while(x!=0)
{
if(x%10!=0||i!=0)
{
printf("%d",x%10);
}
x=x/10;
i++;
}
printf("\n");
return 0;
}

你的if(x%10!=0||i!=0)只能去掉一个0,当数值后面有两个以上的0输出就不对了,建议
while(x!=0)
{
if(i==0 && x % 10 == 0)
{
x = x/10;
continue;
}
i = 1;

printf("%d",x%10);
x=x/10;
}

if(x == 0)return 1;
while(x%10 == 0) x /= 10; //把前面的0去掉
while(x != 0) //开始输出
{
printf("%d",x %10);

x /= 10;

}
printf("\n");

另外,既然只要求输出,你还不如存储成字符串类型,逆序很方便的。scanf("%s",num);
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-03-12
下面的试试
int main()
{
int x,y=0;
scanf("%d",&x);
while(x!=0)
{
y=y*10+x%10;

x=x/10;

}

if(y)
printf("%d",&y);
printf("\n");
return 0;
}
第2个回答  2015-03-12
正确,没有错
相似回答