用递归的方式输出各位数字
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);
}
浙公网安备 33010602011771号