码迷,mamicode.com
首页 > 其他好文 > 详细

poj3077---进位

时间:2015-06-19 19:59:24      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:

技术分享
#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("\n");
    }
    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

poj3077---进位

标签:

原文地址:http://www.cnblogs.com/gabygoole/p/4589432.html

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