@[OrayRofn](/user/1203828) 你这……
看看我的
```cpp
#include<bits/stdc++.h>
using namespace std;
int a;
int main()
{
scanf ("%d" , &a);
if (a == 0)
{
printf ("0");
return 0;
}
int b;
while (a)
{
b = b * 10 + a % 10;
a /= 10;
}
printf ("%d" , b);
return 0;
}
```
by Y_QWQ_Y @ 2024-01-22 20:15:36
@[OrayRofn](/user/1203828) 你这个 fun 把中间的 0 都过滤掉了。
你测测 `-101`,看看你的是不是输出 `-11`
by Y_QWQ_Y @ 2024-01-22 20:17:15
```
过了过了过了! 递归里面把中间含0的也给去掉了(悲)优化好了
```
by OrayRofn @ 2024-01-22 20:21:58
@[OrayRofn](/user/1203828) 给你一组 hack,应该大致就知道问题在哪了(
### 输入
```
800000000
```
### 输出
```
8
```
### 错误输出
```
00008
```
明显你的方法尾 $0$ 没除干净(
```cpp
#include <stdio.h>
#include <stdlib.h>
void fun(int a) {
if (a == 0) return;
printf("%d", a % 10);
fun(a / 10);
}
int main() {
int a;
scanf("%d", &a);
if (a == 0) printf("0");
if (a < 0) {
printf("-");
a = -a;
}
while (a != 0 && a % 10 == 0) {
a /= 10;
}
fun(a);
return 0;
}
```
by Zemu_Ooo @ 2024-01-22 20:24:01
@[Y_QWQ_Y](/user/677091)
```
感谢!后来意识到了 在主函数里面想办法把中间有零的给排除掉了! 写递归还是复杂了...
```
by OrayRofn @ 2024-01-22 20:25:52
@[Zemu_Ooo](/user/467824)
```
感谢!后来意识到了已经解决了!
```
by OrayRofn @ 2024-01-22 20:30:13