1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
#include<stdio.h>
int reverse(int x);
int main(){
printf("%d", reverse(-2147483648));
return 0;
}
//-2147483648~2147483647 10位
int reverse(int x){
int b[10] = {2, 1, 4, 7, 4, 8, 3, 6, 4, 7}; //这是大于0情况的
int a[10] = {0};//初始化,不然当x=0是会出现bug
int ifPositive = 1;//这个参数是为了记录该数为正或为负
int result = 0;
printf("%d\n", x);
if (x < 0){
x=-x;
ifPositive = 0;
}
printf("%d\n",x);
int i = 0;
while (x){ //x不为0
a[i] = x % 10;
x /= 10;
i++;
} //出来后i的最大值为10
if (i == 10){ //不要判断溢出
printf("判断溢出\n");
for(int j=0;j<10;j++)
printf("a[%d]:%d\n",j,a[j]);
int j = 0;
for (; j < 9; j++){ //比较除个位以外的数
if (a[j] == b[j]){ //相同,继续循环判断
printf("continue:%d\n",j);
continue;
}
else if (a[j] > b[j]){ //异常 返回
printf("return:%d\n", j);
return 0;
}
else{ //出现一次即代表 可以跳出循环
printf("break:%d\n", j);
break;
}
}
if (j == 9){ //继续判断
if (a[9] > b[9] - ifPositive){
return 0;
}
}
}
result = a[0];
for (int j = 1; j < i; j++)
{
result *= 10;
result += a[j];
}
return ifPositive ? result : -result;
}
|