zoukankan      html  css  js  c++  java
  • c语言实战 逆序一个三位数

    题目:给定一个正的三位整数,比如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);        
    

      

    2018.9.13更新

    温故而知新,又写了一遍。

    int main()
    {
    	//用来保存用户输入的数据
    	int input = 0;
    	
    	//用来保存提取出来的三个位置的数据
    	int gewei = 0;
    	int shiwei = 0;
    	int baiwei = 0;
    	
    	//用来保存最后输出的那个三位数
    	int output = 0;
    
    	scanf_s("%d",&input);
    
    	gewei = input % 10;
    	shiwei = (input % 100) / 10;
    	baiwei = input / 100;
    
    	output = gewei * 100 + shiwei * 10 + baiwei * 1;
    
    	printf("%d",output);
    
    }
    

      

  • 相关阅读:
    Win10远程桌面 出现 身份验证错误,要求的函数不受支持,这可能是由于CredSSP加密Oracle修正 解决方法
    通过WifI开发调试Android设备
    js 什么是深拷贝问题?
    JavaScript 如何从引用类型(Array 、 Object)创建一个新的对象
    css ::selection 的妙用
    nodejs request gb2312乱码的问题
    echarts geo地图坐标转换为页面Offset坐标
    关于 Chrome Console 查看DOM详情细节的奇思淫巧
    ie11 下 input 默认有 X 关闭按钮的问题
    办公技巧:局域网内设置固定ip
  • 原文地址:https://www.cnblogs.com/yfish/p/9601890.html
Copyright © 2011-2022 走看看