hdu 4493 Tutor

题目:http://acm.hdu.edu.cn/showproblem.php?pid=4493

 

给你十二个月的工资,算平均数,保留两位,去除末尾的0

使用暴力解决,嘻嘻,但是这题主要是在进位这个地方要处理好,由于

要去除末尾0,采用一个数组来保存小数点后面的数,

当要进位时,从未到头查看是否是要进位

最后将整数部分输出,然后输出小数部分(满足要求的小数位输出)

 

代码:

#include <stdio.h>

int main()
{
    double x,sum;
    int t,i,j;
    scanf("%d",&t);
    while(t--)
    {
        i = 12;
        sum = 0.0;
        while(i--)
        {
            scanf("%lf",&x);
            sum += x;
        }
        sum = 1.0*sum / 12*1.0;

       if(sum - (int)(sum) < 0.0000001)
            printf("$%d\n",(int)sum);
        else
        {
           int w = (int)sum;
           int t1 = 0;
           int a[4] = {0,0,0,0};
           double k = sum - (int)sum;
           while(1)
           {
               if(t1 == 3) break;
               k *= 10*1.0;

               a[t1++] = (int)k % 10;
           }
           int tt = 0;
           if(a[2] > 4)
           {
              if(a[1]+1 > 9)
                {
                    tt = (a[1] + 1) / 10;
                    a[1] = (a[1] + 1) % 10;
                    if(a[0] + tt > 9)
                    {
                        tt = (a[0] + tt) / 10;
                        a[0] += 1 % 10;
                        w += tt;
                    }
                    else
                    a[0] += tt;
                }
              else
                a[1] += 1;
           }
           i = 2;
           while(i--)
            if(a[i]) break;
            printf("$%d",w);
            if(i >= 0)
            printf(".");
        for(j = 0; j <= i; j++)
            printf("%d",a[j]);
            printf("\n");
        }
    }
    return 0;
}

 

posted @ 2013-08-25 21:26  heity  阅读(290)  评论(0编辑  收藏  举报