整数逆序输出

整数逆序输出(C语言)

要求输入任意一正整数,把这个正整数以逆序的方式输出。

输入:123
输出:321

我们以上面这对数据举例,输入数123,输出数321。
通过观察,我们可以发现,输入数和输出数的位数相同,输入数的百位1在输出数中作为个位,输入数的个位3作为输出数的个位。

也就是说整数逆序本质上是数位的颠倒

所以我们只需要判断输入数是几位数,然后获取输入数各数位的值,拼凑出输出数就可以了。

三位数举例:

int x;  //用于存放输入数
int units, tens, hundreds;  //用于存放个、十、百位的值
int result;  //用于存放结果

printf("请输入一个三位正整数:");
scanf("%d", &x);

//获取各数位的值
hundreds = x/100;
tens = x % 100 / 10;
units = x % 10;

//拼凑结果
result = units*100 + tens*10 + hundreds;

printf("%d", result);

这种方法的缺点是要根据输入数的位数的不同制定不同的运算策略,不够聪明。

于是我们用第二种方法:利用循环逐一输出其各数位

也就是先输出它的个位,再输出它的十位,,以此类推,在输出结果上是效果一样的。

int x;
scanf("%d", &x);
while (x != 0)
{
	printf("%d", x%10);
	x /= 10;
}

上面的程序利用一个循环,依次获得输入数的个位、十位、百位……并即时输出。

但有一个小瑕疵,类似于输入1000时,输出是0001。程序只是对输入数的各数位值进行了机械的输出,并没有利用其得到真实的结果。

我们可以对其进行优化:综合上面两种方法的特点

方法一的特点是用各数位的值拼凑出结果数
方法二的特点是用循环依次获得数位的值

int Reverse_Output(int x)
{
	int result = 0;
    while (x != 0)
    {
	    result = result*10 + x%10;
	    x /= 10;
    }
    return result;
}

大家在纸上跑一遍这个程序, 就能很快理解核心部分。

  • 34
    点赞
  • 143
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值