求救 对了一半

P1307 [NOIP2011 普及组] 数字反转

@[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


|