c语言进行整数分解(高级)

c语言整数分解-进阶篇

之所以说是进阶篇,我们这里用到一个不同的思路来完成这件事情,在上一篇文章中,我们一直用的方法是首先对数据进行取余,这样我们可以得到数据的最后以为,但是我们的题目确实正序的进行分解,所以就有了先倒过来的方法。但是我们可以从新考虑一下,我们是否可以进行正序的分解,我们先来看下面的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
int main()
{
x = 13425;
int cut = 0;
double sum = 0;
int d = 0
int mask = 10000;
while (mask > 0) {
d = x / mask;
printf("%d" ,d);
x %= mask;
mask /= 10;
}
}

上面的代码,我们设x的值为13425;定义了一个mask变量为10000;当我们使用x来除mask的值我们就得到了最左面的数字,然后用x来对mask进行取余这样我们就丢掉了最左面的数据,然后mask进行除10,来适合下一次的循环。

通过上面的方法我们可以来进行正序的输出,可是我们还需要解决另外一个问题,现在的x是5位数,所以我们使用的mask的值为10000,当我们输入其他的值显然,这个程序就不适用了,所以我们需要一个循环来计算出mask的值

1
2
3
4
5
6
7
8
int main()
{
int mask = 1;
while (x > ) {
x /= 10;
mask *= 10;
}
}

使用上面的程序之后我们就可以让mask变成适合的值,然后我们就实现了正序的进行输出,然后我们可以写出下面的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
/*
关于程序的整体思路
x = 12345
12345 / 10000 = 1
12345 % 10000 = 2345
10000 / 10 = 1000

2345 / 1000 = 2
2345 % 1000 = 345
1000 /10 = 100

345 /100 = 3
345 %100 = 45
100 / 10 = 10

45 / 10 = 4
45 % 10 = 5
10 /10 = 1

5 / 1 =5
5 % 1 =5
1 / 10 =0
我们的开始是五位数 所以我们让mask的值为10000,当我们不知道x的值是多少时,
可以用循环来知道x的位数,然后使用相应mask的值

*/
#include <stdio.h>
int main()
{
int x;
int d,h;
scanf("%d",&x);
int mask = 1;
//判断x的位数,计算mask的值
int t;
t = x;
while (t > 9)
{
t /= 10;
mask *= 10;
}

//printf("%d\n" ,mask);
while (mask > 0)
{
d = x / mask;
printf("%d",d);
if (mask > 9)
{
printf(" ");
}

x %= mask;
mask /= 10;
}

return 0;
}
你的支持是我最大的动力!
0%