一、做题思路:
此题注意,这一题是将一个数个各个位上的数字逆序并形成一个新的数字,而并非仅仅只是将其逆序打印。
1.出现各个位数上的数字
出现数字4 | 1234 % 10 | (1234 / 10=123) |
出现数字3 | 123 % 10 | (123 / 10=12) |
出现数字2 | 12 % 10 | (12 / 10=1) |
出现数字1 | 1 % 10 |
需要掌握:取余操作符与除以操作符
2.由上面的数字生成新的数
现在已经得出了每个位上的数字,那么如果得到新的数呢?
就比如说需要得到4321,那么就应如下:
4321=4000+300+20+1,所以我们就需要分别得到4000、300、20以及1。
4000 | (1234 % 10)* 1000 |
300 | (123 % 10)* 100 |
20 | (12 % 10)* 10 |
1 | (1 % 10)*1 |
理清了思路,但是注意的是,我们写的代码是为了方便,而不可能是将这么繁琐的程序写出来。所以利用循环语句写代码。
需要掌握:循环语句。
利用循环的思想考虑:如何才能利用一个到两个的程序就运行出这个最终的值呢?我们先考虑一下它的循环条件:1234一共有4位数,那么循环次数肯定便是4次。所以很容易就可以写出for循环:
for(int i = 0;i <= 4;i ++)
此时,循环四次就是为了分别得到各个数。然后再思考,再循环过程中,我们每得到一个位的数字,我们要怎么做呢?这道题其实就是为了求和算出逆序后的值,所以其实就是求和。
接着假设这个起始值是a,最终值是sum;先令sum=0,那么 sum=sum*10+a%10 ,我们便可以求出4。而在第二趟循环中,再给a / 10,再令 sum=sum*10+a%10 ,便可以得到43。同理循环四次,最终可以得到4321这个数。
二、扩充知识点:
1.操作符
/ | 除 | 675/10==6 |
% | 取模(求余数) | 675%10==7 |
2.循环语句
while 语法结构
while(表达式)
循环语句;
for 语法结构
for(表达式1;表达式2;表达式3)
循环语句;
表达式1:初始化部分,用于初始化循环变量。
表达式2:条件判断部分,用于判断循环时候终止。
表达式3:调整部分,用于循环条件的调整。
do while 语法结构
do
循环语句;
while(表达式);
三、最终代码:
//从键盘输入一个整形:输出逆序结果
#include <stdio.h>
int main()
{
int a = 0;
scanf("%d", &a);
int i = 0;
int sum = 0;
for (i = 0; a > 0; i++)
{
sum = sum * 10 + a % 10;
a = a / 10;
}
printf("%d\n", sum);
return 0;
}
好了今天的学习就到这里啦,如果有什么错误,望指正,谢谢大家啦!祝大家天天向上!