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