C语言逆序输出整数

目录

1.题目

2.分析

3.完整代码


1.题目

输入一个正整数,逆序打印这个整数的每一位。

例如:

输入:1234        输出:4321

输入:521          输出:125


2.分析

  1. 以1234为例,按照题目要求,我们需要先打印出4,再打印出3、2、1。
  2. 所以,我们先思考,如何打印出1234的最后一位数字4呢?
  3. 这个时候,我们可以联想一下,我们学过哪些运算符?
  4. 不难想到,我们所知的运算符有:+、-、*、/、%等等。
  5. 剧透一下,我们这道题,正是用 / 完成除法操作,用 % 完成取余操作。
  6. 1234÷10=123……4 表示1234除以10,等于123,余4。用代码表示:1234%10=4。
  7. 我们发现,进行一次取余数操作后,就轻松得到了1234的最后一位数字4
  8. 那么如何得到1234的倒数第二位数字3呢?
  9. 我们刚刚已经学会了获取1234的最后一位数字4的方法,那么我们肯定也能得到123的最后一位数字3。于是,当务之急就变成了,如何把1234变成123?
  10. 在C语言中,1234/10执行的是整数除法,会保留整数部分,而丢弃小数部分,即1234/10=123。
  11. 这样一来,我们就轻松得到了123,接下来,问题又变成了如何获取123的最后一位数字3。
  12. 获取最后一位数字的方法,我们早就学会了。当然是123÷10=12……3表示123除以10,等于12,余3。用代码表示:123%10=3。这样我们就轻松得到了123的最后一位数字3
  13. 接下来,问题转变为,如何把123变成12,然后获取12的最后一位数字2?
  14. 显然,123/10=12,12%10=2。轻松得到了12的最后一位数字2
  15. 同样的,问题又转变为,如何把12变成1,然后获取1的最后一位数字1?
  16. 显然,12/10=1,1%10=1。轻松得到了1的最后一位数字1

        不难发现,我们一直在进行2个操作,那就是先通过取余操作得到最后一位数字,再通过除法操作去掉最后一位数字,循环往复。

由此可见,循环往复地进行2个操作,当然要用循环语句了!

可是,循环什么时候停下来呢?我们如何去书写循环停止的条件表达式呢?请看如下说明:

1234%10=4

1234/10=123


123%10=3

123/10=12


12%10=2

12/10=1


1%10=1

1/10=0        //在C语言中,0表示假,那么程序来到这一步时,0刚好可以作为循环判断的表达式!


从代码的角度来看,我们需要先创建一个变量num,然后通过scanf函数传入一个整数给num:

int num = 0;
scanf("%d", %num);

在循环体中,先打印出取余操作后得到的最后一位数,再进行除法操作,使得原来的num变成去掉了最后一位数的num。同时,注意加上我们刚刚分析的判断条件:

while(num)
{
    printf("%d", num % 10);
    num = num / 10;
}

3.完整代码

int main()
{
	int num = 0;
	scanf("%d", &num);
	while (num)		//通过循环,在执行多次除法操作后,num会变成0,而0表示假,则循环终止
	{
		printf("%d", num % 10);		//例如:通过取余操作,得到1234的最后一位数字4
		num = num / 10;				//例如:通过除法操作,把1234变成123
	}
	return 0;
}

你可能感兴趣的:(C语言基础题,c语言)