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);
} 展开
#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);
} 展开
1个回答
展开全部
要求一个数的倒序,只需如下就可以了,为什么被你弄得这么复杂呢?
while(num)
{
sum = sum*10 + num%10;
num =num/10;
}
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.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询