题目简介:
Problem Description
Larry graduated this year and finally has a job. He’s making a lot of money, but somehow never seems to have enough. Larry has decided that he needs to grab hold of his financial portfolio and solve his financing problems. The first step is to figure out what’s been going on with his money. Larry has his bank account statements and wants to see how much money he has. Help Larry by writing a program to take his closing balance from each of the past twelve months and calculate his average account balance.
Input
The input will be twelve lines. Each line will contain the closing balance of his bank account for a particular month. Each number will be positive and displayed to the penny. No dollar sign will be included.
Output
The output will be a single number, the average (mean) of the closing balances for the twelve months. It will be rounded to the nearest penny, preceded immediately by a dollar sign, and followed by the end-of-line. There will be no other spaces or characters in the output.
Sample Input
100.00 489.12 12454.12 1234.10 823.05 109.20 5.27 1542.25 839.18 83.99 1295.01 1.75
Sample Output
$1581.42
这道题的关键在于最后的四舍五入并保留两位小数,我采用的办法是:令av为每月余额的总和,先用保留最近整数的round()函数求出av*100四舍五入后的整数,再将此整数除以100,就得到保留两位小数的四舍五入值啦!本来在for循环之前还加了while(1),结果因为没有终止循环的代码而时间超限,去掉之后就好啦。
AC代码如下:
#include<iostream>
#include<math.h>
using namespace std;
double round(double r)
{
return (r > 0.0) ? floor(r + 0.5) : ceil(r - 0.5);
}
int main()
{
double a[12],t=0,av;
for(int i=0;i<12;i++){
cin>>a[i];
t+=a[i];
}
av=t/12;
av=round(av*100);
cout<<"$"<<av/100<<endl;
t=0;
}
关于四舍五入函数的原理:http://blog.csdn.net/hankai1024/article/details/7887415