原题链接:题目72 - ACM在线评测系统

描述

拉里今年毕业了,并且最终有了一份工作。他正在大量赚钱,但不知怎么地从来没有满足。拉里已经决定,把持住他在财政上的投资组合,并且解决他的理财问题。第一步是解决:他的钱怎么样了。拉里有他银行账户的报表,并想看到他有多少钱。写一个程序帮助拉里从过去十二个月中的每月做结算,并计算他账户里余额的平均值。

输入

输入十二行。每行将包含一个特定月份:银行账户的结算。每个数将是正数并且精确显示到美分。不包含美元符号。

输出

这里输出将是一个单独的数字,表示这十二个月结算得到的平均值(均值)。近似到美分,前有美元符号(linux命令行提示符),后跟行尾。输出中没有其他空格或字符。

样例输入

100.00

489.12

12454.12

1234.10

823.05

109.20

5.27

1542.25

839.18

83.99

1295.01

1.75

样例输出

1581.42

解题思路:

思路很简单,就是求十二个数的均值。

用C语言描述也不复杂,精度修饰符让你指定想要的小数位数,%.2f将会显示带有2位小数的浮点数,精确到美分。

可是用C++怎么表示精度呢?查询C/C++语言参考,发现precision()函数,设置或返回当前要被显示的浮点变量的位数。例如,下面的代码:

    float num = 314.15926535;
    cout.precision( 5 );
    cout << num;

显示结果是:314.16。可是这里并没有指明小数的位数,只有寻找其他方法。

在c++程序里面经常见到下面的头文件#include <iomanip>,io代表输入输出,manip是manipulator(操纵器)的缩写。使用setprecision(n)可控制输出流显示浮点数的数字个数。C++默认的流输出数值有效位是6。如果setprecision(n)与setiosflags(ios::fixed)合用,可以控制小数点右边的数字个数。setiosflags(ios::fixed)是用定点方式表示实数。具体用法见参考代码。

注意事项:

precision函数通常优先显示浮点数的整数部分

参考代码:

#include<stdio.h>
int main(){
	int b=12;
	float a,c=0;
	while(b--){
		scanf("%f",&a);
		c+=a;//累加
	}
	printf("%.2f\n",c/12);//精确到美分
}

优秀代码

#include<iostream>
#include<iomanip>
using namespace std;

int main()
{
	double sum=0,a;
	for(int i=0;i<12;i++)
	{
		cin>>a;
		sum+=a;
	}
	cout<<fixed<<setprecision(2)<<sum/12.0<<endl;
}


点赞(2)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论