题目: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;
}