zoukankan      html  css  js  c++  java
  • poj3077---进位

    #include <stdio.h>
    #include <stdlib.h>
    #include<string.h>
    char str[100000000];
    int ar[100000000];
    int main()
    {
        int n,len,i;
        scanf("%d",&n);
        while(n--)
        {
            scanf("%s",str);
            len=strlen(str);
            for(i=0;i<len;i++)
            {
                ar[i]= str[i] - '0';
            }
            for(i=len-1; i >= 1; i--)//至少是两位才会经过这个循环
            {
                if(ar[i] >= 5)
                    ar[i-1]++;
                ar[i]=0;
            }
            for(i=0; i<len; i++)
                printf("%d",ar[i]);
            printf("
    ");
        }
        return 0;
    }
    View Code
    题意:给一个数字,然后从最后一位开始进位,满5进1,小于5变成0,比如 12345 -> 12350->12400->12000->10000;
    实际上:>=10的数,除第一位以外都会变成0,只需要看第一个数最后是多少
    int main()
    {
        int n;
        double tmp;
        scanf("%d",&n);
        while(n--)
        {
            int count=0;
            scanf("%lf",&tmp);
            while(tmp >= 10)
            {
                tmp/=10;
                tmp=(int)(tmp+0.5);
                cout++;
            }
            for(i=0;i<count;i++)
            {
                tmp*=10;
            }
        }
    }
    View Code

    323/10=32.3+0.5

    取整得32

    32/10=3.2+0.5=3.7

    取整得3

    四舍五入的方法是(int)(x + 0.5)

    这道题关键是对于一个数的每一位来说,四舍五入,>=5进,<5舍,进到第一位就行,后面再添0

  • 相关阅读:
    JDBC
    SQL语法(3)
    数据库设计和三大范式
    SQL语法(2)
    SQL语法(1)
    数据库的概念以及MYSQL的安装和卸载
    IO流(下)
    IO流(上)
    bash: javac: command not found...
    R语言绘制地图
  • 原文地址:https://www.cnblogs.com/gabygoole/p/4589432.html
Copyright © 2011-2022 走看看