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

整数分解并输出

相信很多人在学习c语言的时候一定遇到过,这样的一个题目输入一个整数,然后将整数分解输出,我们先来看下面的代码

1
2
3
4
5
6
7
8
do {
int d = x%10;
printf("%d" ,d);
if (x > 9) {
pirntf(" ");
}
x /= 10;
} while (x>10)

上面的代码可以将数据x进行一个倒序的输出,其中的if判断是为了来判断是否为最后一个数 ,当到输出最后一个数的时候就不在输出空格了。现在问题来了,如果我们想正序输出应该怎么做呢?其中的一个做法便是,在此之前就可以先将数据进行倒置我们来看下面的代码

1
2
3
4
5
6
int t = 0;
do {
int d = x%10;
t = t*10 + d;
x /= 10;
} while (x > 0);

以上的代码首先对数据进行取余,取出数据的最右面数据,我们将数据加到t中,因为t初始值为0,在经过上面的语句之后,t的值就会变为数据最右面的值,而当下一次进入循环时,t的值会乘以10,这样我们第一次得到的d的值就会向做移动,而第二次得到的值就会被加到后面,下面以521这个数据来进行举列

x d t
521 1 1
52 2 12
5 5 125

最后我们可以得到如下的代码

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
#include <stdio.h>
int main()
{
int x;
scanf("%d",&x);

//下面代码先把数据倒过来
int t = 0;
do
{
int d = x%10;
t = t*10 + d;
x /= 10;
} while ( x > 0);

x = t;

// 下面的代码只能实现逆序进行输出,我们可以提前先把数据给倒过来
do {
int d = x%10; //取出最右面的数
printf("%d", d);
if (x>=10) //判断x是否为个位数
{
printf(" ");
}

x /= 10; //去掉最右面的数据
} while ( x>0 );

return 0;
}

先将数据进行倒置,然后再进行倒叙输出,经过这样的两次反转,我们就实现了正序的输出一个数据,事实上我们这样做非常的麻烦,可以有更好的方法来完成这件事。请查看高级篇

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