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

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  阅读(15)  评论(0)    收藏  举报