HDU 4493 Tutor 水题的收获。。

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

题意我都不好意思说,就是求12个数的平均数。。。

但是之所以发博客,显然有值得发的。。。

这个题最坑的地方就是结果精确到便士,也就是小数点后2位,不输出后缀0,所以需要处理一下输出格式。

一开始我是用c语言这样写的:

 1 #include <stdio.h>
 2 #include <string.h>
 3 
 4 int main()
 5 {
 6     int t;
 7     scanf("%d", &t);
 8     while(t--)
 9     {
10         double x, sum = 0;
11         for(int i = 0; i < 12; i++)
12         {
13             scanf("%lf", &x);
14             sum += x;
15         }
16         char str[50];
17         sprintf(str, "%.2lf", sum/12.0);
18         int len = strlen(str);
19         while(str[len-1] == '0')
20             len--;
21         if(str[len-1] == '.')
22             len--;
23         str[len] = 0;
24         printf("$%s\n", str);
25     }
26     return 0;
27 }
C语言版

总感觉硬生生的修改字符数组不舒服,不便于封装,然后发现了java的DecimalFormat类,这个类很强大,可以定义浮点数输出格式,直接就能A掉这一题,所以记录一下,以免日后忘了。

 1 import java.text.DecimalFormat;
 2 import java.util.Scanner;
 3 
 4 public class Main {
 5     private static Scanner input;
 6     public static void main(String[] args){
 7         input = new Scanner(System.in);
 8         int t;
 9         DecimalFormat f = new DecimalFormat("#.##");
10         
11         t = input.nextInt();
12         while(t-- > 0) {
13             double x, sum = 0;
14             for(int i = 0; i < 2; i++) {
15                 x = input.nextDouble();
16                 sum += x;
17             }
18             System.out.println('$' + f.format(sum / 2.0));
19         }
20     }
21 }
Java版

 

posted @ 2013-11-26 21:38  Anti-Magic  阅读(209)  评论(0编辑  收藏  举报