下面的程序采用整数值并返回数字反转的数字。对于 6540063 或 675 或 9600012 之类的数字可以正常工作,但对于以 0 结尾的数字,对于 630 ,50 或 10 输出不正确。630 返回 36。我不明白为什么。你能建议我应该添加什么吗?这看起来像意大利面条代码,不是吗?
#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);
}