题目:
给你十二个月的工资,算平均数,保留两位,去除末尾的0
使用暴力解决,嘻嘻,但是这题主要是在进位这个地方要处理好,由于
要去除末尾0,采用一个数组来保存小数点后面的数,
当要进位时,从未到头查看是否是要进位
最后将整数部分输出,然后输出小数部分(满足要求的小数位输出)
代码:
#includeint 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;}