C语言程序设计-逆序的三位数

本文介绍了如何使用C语言通过整除与求余以及数码权值的知识,实现将任意位数的数字逆序并保持最低位为0的规则。提供了三种不同的代码示例,分别适用于不同位数的处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原问题来自MOOC《程序设计入门-C语言》:

        分析:利用C语言的整除与求余及十进制数的数码权值等知识分别将数字给“提取”出来。因为要求最低位为0时不将其输出,所以在将数字分解之后还需要将其合成为一个三位数字而不是作为三个独立的数码。

        基础知识:权值基数数码相关知识

代码1:从大到小一位一位的取

#include<stdio.h>
int main()
{
	//逆序三位数输出 
	//127 /100	%100/10	%100%10 %100%10/1..... 上一位求余这一位整除 
	int m,n,a,b,c;
	scanf("%d",&m);
	a = m/100;//取出百位数
	b = m%100/10;//取出十位数    
	c = m%100%10;//取出个位数   更加简便的是--m%10 
	n = c*100+b*10+a;
	printf("%d",n);
	return 0;
}

代码2:缩小整个数字,快速取:

抛去了冗余的步骤,写的代码显然比代码一少了。有两个特殊的位,最高位是直接整除它的权,最低位直接求余它上一位即十位的权。可以记作 x/本位权值%10.

拿976举例。对于7,976/10可以去掉7之后的位数,剩下97,97%10就取得了现在作为新数字个位数的7。

#include<stdio.h>
int main()
{
	int a,b,c,m,n;
	scanf("%d",&m);
	a = m/100;
	b = m/10%10;//本位整除10位求余   987 98 8   1234 123 3
	c = m%10;
	n = a + b * 10 + c * 100;
	printf("%d",n);
	return 0;
}

代码3:根据代码2可以得出求逆序n位数的办法,比如6位数的:

#include<stdio.h>
int main()
{
	//逆序6位数输出 100 0000-1=99 9999
	//127 /100	%100/10	%100%10 %100%10/1..... 
	int m,n,a,b,c,d,e,f;
	scanf("%d",&m);
	c = m%10;//取出个位数   
	b = m/10%10;//取出十位数  
	a = m/100%10;//取出百位数  
	d = m/1000%10;
	e = m/10000%10;
	f = m/100000;
	n =f+e*10+d*100+a*1000+b*10000+c*100000;
	printf("%d",n);
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值