C语言小错误跪求大神指教

求一个数的逆序数,本来1234算出来应该是4321,可是算出来是4364#include<stdio.h>#include<math.h>longmain(void){i... 求一个数的逆序数,本来1234算出来应该是4321,可是算出来是4364

#include <stdio.h>
#include <math.h>
long main(void)
{
int a,count,i,d;
long res,number;
scanf("%d", &number);
if (number<0){
number=fabs(number);
count=0;
a=number;
while (a!=0){
a=a/10;
count=count++;
}
res=0;
for(i=count;i>=1;i=i-1){
res=res+(number/pow(10,i-1))*pow(10,count-i);
d=pow(10,i-1);
number=number % d;
}
res=-res;
}
else if (number==0){
res=0;
}
else{
count=0;
a=number;
while (a!=0){
a=a/10;
count=count++;
}
res=0;
for(i=count;i>=1;i=i-1){
res=res+(number/pow(10,i-1))*pow(10,count-i);
d=pow(10,i-1);
number=number % d;
}
}
printf("%ld\n", res);

}
展开
 我来答
czy7812
2014-04-11 · TA获得超过2668个赞
知道小有建树答主
回答量:518
采纳率:88%
帮助的人:183万
展开全部
要求一个数的倒序,只需如下就可以了,为什么被你弄得这么复杂呢?

while(num)
{
sum = sum*10 + num%10;
num =num/10;
}
追问
可是我还是想知道为什么错了TT
追答
你错在这里:res=res+(number/pow(10,i-1))*pow(10,count-i);

你要把这一句分成两步写就对了。
a=number/pow(10,i-1);
res=res+a*pow(10,count-i);

为什么呢?因为 你写成一句的话,在(number/pow(10,i-1))这里不会取整,而是等你乘完后半句的时候才会取整。比如当你执行第二轮的时候,你希望的是得到2*10的结果,但事实是你得到的是2.34*10=23.4,然后加上刚才的1,得到24.4然后才取整,最终得到的是24。同理,第三轮你得到的不是300,而会是340,再加上24,就会得出364,最后一轮得到4000,所以最终的结果是4364.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式