【C语言】 正序分解整数

问题:正序分解整数

输入一个非负整数 , 正序输出它的每一位数字。例如输入 13526,则
输出 1 3 5 2 6

思路一

先将整数逆序然后在输出每一位

代码

//先逆序再分解 
#include
int main()
{
	int x;
	printf("请输入一个整数:");
	scanf("%d", &x);
    int t = 0;
    do {
    	int d = x%10;
    	x /= 10;
    	t = t*10 + d;
	} while( x>0);//将整数逆序 
	printf("t=%d\n", t);
	x = t;
	do { 
		int d = x%10;
		printf("%d", d);
		if (x>9){
			printf(" ");//防止输出最后一位时多一个空格 
		}
		x /= 10;
	} while(x > 0);//输出每一位
	printf("\n");
	return 0;
}

运行结果
【C语言】 正序分解整数_第1张图片
【C语言】 正序分解整数_第2张图片
当输入7000时程序出错了,是因为程序先将整数倒序时没有输出0,故而后续进行分解时也没有0

通过验证发现程序出错,需要改正!!!!!!!!

思路二

输入数 352, 这个数除以 100得到 3,再对100 取余得到52 ,52 再除以 10得到5 ,再对10 取余得到2 ,2再除以1得到2,对1取余得到 0。当余数为 0 时,程序结束。

代码

#include
int main()
{
	int x;
	printf("请输入一个整数:");
	scanf("%d", &x);
	int mask = 1;
	int t = x;
    while(t>9) {
		t /= 10;
		mask *= 10;
	}
	printf("mask=%d\n", mask);//根据输入整数位数n确定 10的n次方 
	
	do {
		int d = x/mask;
		printf("%d", d);
		if (mask>9) {
			printf(" ");//防止输出最后一位时多一个空格 
		}
		x %= mask;
		mask /= 10;
	} while (mask>0);
	printf("\n");
	return 0;
}

运行结果
【C语言】 正序分解整数_第3张图片
【C语言】 正序分解整数_第4张图片
【C语言】 正序分解整数_第5张图片

你可能感兴趣的:(C语言程序,c语言)