数字的反转P1307 [NOIP2011 普及组] 数字反转

题目描述

给定一个整数 �N,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例 2)。

输入格式

一个整数 �N。

输出格式

一个整数,表示反转后的新数。

输入输出样例

输入 #1复制

123

输出 #1复制

321

输入 #2复制

-380

输出 #2复制

-83

说明/提示

【数据范围】

−1,000,000,000≤N≤1,000,000,000。

//数字反转
#include
int main()
{
    int old, new = 0;
    scanf("%d", &old);
    while (old)
    {
        new *= 10;
        new += old % 10;
        old /= 10;
    }
    printf("%d", new);
}/*二、代码逐行解释
int old, new = 0;:
声明了两个整数变量old和new。其中old用于存储用户输入的原始整数,new初始化为 0,将用于存储反转后的整数。
scanf("%d", &old);:
从标准输入读取一个整数,并将其存储到变量old中。
while (old):
这是一个循环条件,只要old不为 0,循环就会继续执行。因为当old变为 0 时,说明已经处理完了输入整数的所有位。
new *= 10;:
在每次循环开始时,将new乘以 10。这是为了在new的末尾腾出一个位置,以便将从old中取出的个位数字添加到new中。例如,第一次循环时new为 0,乘以 10 后仍为 0;第二次循环时如果上一次添加了数字 3,此时new为 3,乘以 10 后变为 30,为添加下一个数字做好准备。
new += old % 10;:
old % 10的作用是取old的个位数字。例如,如果old是 123,那么old % 10的结果是 3。然后将这个个位数字添加到new中。
old /= 10;:
将old除以 10,目的是去掉old的个位数字,以便在下一次循环中处理下一位数字。例如,old从 123 变为 12。
printf("%d", new);:
当循环结束后,输出反转后的整数new。
三、示例运行
假设输入整数为 1234。
第一次循环:
new *= 10后,new仍为 0。
new += old % 10,即new += 1234 % 10,结果为new = 4。
old /= 10后,old变为 123。
第二次循环:
new *= 10后,new变为 40。
new += old % 10,即new += 123 % 10,结果为new = 43。
old /= 10后,old变为 12。
第三次循环:
new *= 10后,new变为 430。
new += old % 10,即new += 12 % 10,结果为new = 432。
old /= 10后,old变为 1。
第四次循环:
new *= 10后,new变为 4320。
new += old % 10,即new += 1 % 10,结果为new = 4321。
old /= 10后,old变为 0,循环结束。
最后程序输出 4321。*/

数字的反转P1307 [NOIP2011 普及组] 数字反转_第1张图片

你可能感兴趣的:(算法,c语言)