码迷,mamicode.com
首页 > 编程语言 > 详细

c语言实战 逆序一个三位数

时间:2018-09-06 23:58:06      阅读:408      评论:0      收藏:0      [点我收藏+]

标签:print   位置   整数   怎么办   等于   bsp   情况   十分   scan   

题目:给定一个正的三位整数,比如123,输出321,但如果是700,输出必须是7不能是007

思路是怎么样的呢?

假设这个正三位数是m,它的百分位是c,十分位是b,个位是a,那么就存在下面的等式。

m=c*100+b*10+a*1

现在已知了m,只要知道c、b、a这三个数的值,那么我们直接按abc的顺序输出不就给逆序了吗?

那么怎么知道这三个数的值呢?

首先c是最好求的

c=m/100   //整除的结果就是百位数

利用相似的思路b的值也比较好求。

b=(m%100)/10  //m对100取余之后剩下的就是十位数和个位数的和,和在整除10就是十位数了。

一个等式三个未知数,知道了其中两个,那么第三个就知道了。

a=m-c*100-b*10

恩,解决了啊,写程序。

 

    int m = 0;
    int a = 0;
    int b = 0;
    int c = 0;

    scanf_s("%d",&m);

    c = m / 100;
    b = (m % 100) / 10;
    a = m - (c*100)-(b*10);

    printf("%d%d%d",a,b,c);

 

运行之后,发现没有什么大问题,只是针对700这种情况,输出的还是007,怎么办?怎么办,很急,我一开始还想利用字符输出的,程序崩溃了,没成功。后来一想,既然已经知道了三个位置的数值了,那么直接三个位置的数加一下就行了嘛,反正结果没变,比如输入700,那么c等于7 b等于0 a等于0,那么逆序之后的这个数不就是0*100+b*10+c*1,那么结果不就是7嘛,

最后改成这样就可以了。

        int m = 0;
	int a = 0;
	int b = 0;
	int c = 0;

	scanf_s("%d",&m);

	c = m / 100;
	b = (m % 100) / 10;
	a = m - (c*100)-(b*10);

	printf("%d",a*100+b*10+c);        

  

c语言实战 逆序一个三位数

标签:print   位置   整数   怎么办   等于   bsp   情况   十分   scan   

原文地址:https://www.cnblogs.com/yfish/p/9601890.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!