描述
读入n(1 <= n <= 10000)个整数,求它们的和与均值。
输入
输入第一行是一个整数n,表示有n个整数。
第2~n+1行每行包含1个整数。每个整数的绝对值均不超过10000。
输出
输出一行,先输出和,再输出平均值(保留到小数点后5位),两个数间用单个空格分隔。
样例输入
4 344 222 343 222
样例输出
1131 282.75000
源码
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
int data;
double sum=0,avg;
/*这里要注意精度问题,如果为float,尽管运行结果与样例一样,但是会显示wrong answer,改为double就对了*/
for(int i=0; i<n; i++){
scanf("%d",&data);
sum = sum + data;
}
avg = sum/n;
printf("%d %.5lf\n",(int)sum,avg);
return 0;
}
在网上查了下得到如下结论:
float:浮点型数据类型,FLOAT 数据类型用于存储单精度浮点数或双精度浮点数。此表示形式为 float 类型提供了一个大约在 -3.4E+38 和 3.4E+38 之间的范围。
double(双精度浮点型)是计算机使用的一种资料型别。它可以表示十进制的15或16位有效数字,负值取值范围为 -1.7976E+308 到 -4.94065645841246544E-324,正值取值范围为 4.94065645841246544E-324 到 1.797693E+308。
double精度高,有效数字16位,float精度7位。但double消耗内存是float的两倍,double的运算速度比float慢得多。
详细地参见https://zhidao.baidu.com/question/373903669.html