/*给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形
式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零.*/
输入负数和开头为1的数就是错的,哎哎哎哎哎
#include<stdio.h>
#include<math.h>
int jisuan(double t)
{
int n=0;
int b;
do
{ b = t/10;
t=b;
n++;
}while(b>1);
return n;
}
main()
{
double t;
double b;
int n=0;
int x;
int s;
int gw;
int gongshu = 0;
int i=0;
scanf("%lf", &t);
n=jisuan(t);
// 问题:1,1开头!2,负数!
if(t>0)
{
for(;n>0;n--)
{
x = pow(10, n-1);
s = t/x;
printf("s=%d\n", s);
gw = s * pow(10, i);
printf("gw=%d\n", gw);
t = t - s* pow(10, n-1);
i++;
gongshu = gw + gongshu;
}
printf("%d", gongshu);
}
else
{
t=0-t;
for(;n>0;n--)
{
x = pow(10, n-1);
s = t/x;
printf("s=%d\n", s);
gw = s * pow(10, i);
printf("gw=%d\n", gw);
t = t - s* pow(10, n-1);
i++;
gongshu = gw + gongshu;
}
printf("-%d", gongshu);
}
}
我感觉你想得太复杂了,不知道这个符不符合你的要求:
int main() {
int i = 0, oldNumber, newNumber = 0;
scanf("%d", &oldNumber);
while(oldNumber != 0){
newNumber *= 10;
newNumber += oldNumber % 10;
oldNumber /= 10;
}
printf("sum = %d", newNumber);
return 0;
}
当然,这个整数是不能大于int的最大值2147483647,有哪里看不懂的可以继续问我。