在程序下面取一个整数值并返回其数字反转的数字。对于像6540063或675或9600012这样的数字可以正常工作,但对于以0. 630返回36的数字输出630,50或10不正确。我不明白为什么。你能建议我应该添加什么吗?这看起来像意大利面条代码不是吗?
#include <stdio.h>
#include <math.h>
void getDigit(int number);
void getReverse(int number);
int main(void) {
int namba=630; //Enter here number to be reversed
getReverse(namba);
return 0;
}
void getDigit(int number) {
int div=1,reverse=0,count=0,i=0;
//to find max dividend
while (number>10*div){
div*=10;
++count;
}
while(div!=0&&i<=count){
printf("%d ",number/div);
number=number%div;
div/=10;
}
}
void getReverse(int number){
int div=1,reverse=0,count=0,i=0;
//to find max dividend
while (number>10*div){
div*=10;
++count;
}
while(div!=0&&i<=count){
reverse+=(number/div)*pow(10,i++); //to find reverse digits
number=number%div;
div/=10;
}
printf("Reverse is: %d\n",reverse);
getDigit(reverse);
}
答案 0 :(得分:7)
因为你正在失去领先的零。
036 = 36
答案 1 :(得分:2)
void getReverse(int number){
...
printf("Reverse is: %0*d\n",count + 1,reverse);
...
}