用递归的方式输出各位数字

include <stdio.h>

include <stdlib.h>

void f(int n){
if(n<10){
printf("%d ",n);
return;
}//输出到最后一位

else{
    int r=0;int x=n;int k=0;//n是k位数
    while(x!=0){
        r=x%10;
        x=x/10;
        k++;
    }
    int sum=1;int jishu=1;
    while(jishu<k){
        sum=sum*10;
        jishu++;
    }
    printf("%d ",r);//r是第k位数

    int d=n%sum;//剩下的k-1位数

    if(d==0){//如果后面全是0,一次输出完,并结束
        for(int i=0;i<k-1;i++){
            printf("0 ");
        }
        return;
    }


    else if(d<(sum/10)){ //中间有0,不全为0
        int realk=0;int temp=d;
        while(temp!=0){//这k-1位实际上是realk位
            realk++;
            temp=temp/10;
        }
        for(int i=realk;i<k-1;i++){
            printf("0 ");
        }
    }

    f(d);
}

}

int main(){
int n;
scanf("%d",&n);
f(n);
}

posted @ 2025-11-15 18:14  Wang040404  阅读(0)  评论(0)    收藏  举报