实验4-2-8 输出整数各位数字

本题要求编写程序,对输入的一个整数,从高位开始逐位分割并输出它的各位数字。

输入格式:

输入在一行中给出一个长整型范围内的非负整数。

输出格式:

从高位开始逐位输出该整数的各位数字,每个数字后面有一个空格。

输入样例:

123456

输出样例:

1 2 3 4 5 6

方案1:常规方法

#include <stdio.h>
#include<math.h>

int main()
{
    long a;
    scanf("%ld", &a);
	long x=a;
	int i=0;
	if(!a)printf("%d ",a);
	else{
		while(x){
	    	x/=10;
			i++;//i表示数字位数
		}
		int number=1;//用于表示数字每一位
		while(a){//a末位为0时会提前结束循环
			number=a/(pow(10,--i));
			printf("%d ",number);
			a=a-number*(pow(10,i)); 
		}	
	}
	for(i;i>0;i--)//循环提前结束,i不为0。若循环正常结束,则i=0
		printf("%d ",0);

    return 0;
}

方案2:使用递归函数,此法无须考虑n末位是否为0

#include <stdio.h>

void reverse(int a); 
int main()
{
    long a;
    scanf("%ld", &a);
	reverse(a);

    return 0;
}
void reverse(int n)
{
	if(n<10)
		printf("%d ",n);
	else {
		reverse(n/10);依次调用n的每一位
		printf("%d ",n%10);
	}
}
posted @ 2022-01-22 17:13  下_冰雹  阅读(112)  评论(0)    收藏  举报