班上有学生若干名,已知每名学生的成绩(整数),求班上所有学生的平均成绩,保留到小数点后两位。同时输出该平均成绩整数部分四舍五入后的数值。 第一行有一个整数n(1<= n <= 100),表示学生的人数。其后n行每行有1个整数,表示每个学生的成绩,取值在int范围内。
标签:
班上有学生若干名,已知每名学生的成绩(整数),求班上所有学生的平均成绩,保留到小数点后两位。同时输出该平均成绩整数部分四舍五入后的数值。 第一行有一个整数n(1<= n <= 100),表示学生的人数。其后n行每行有1个整数,表示每个学生的成绩,取值在int范围内。
2 12 14
13.00 10
2
12
14
13.00 10
要输出浮点数、双精度数小数点后2位数字,可以用下面这种形式:
printf("%.2lf", num);
思路:我交了几次,得出了比较特殊的数据。。比如说是平均成绩sum是94.994……应该输出的是94.99 90,如果平均成绩sum是94.995……的话,应该输出95.00 100 int copy=int(sum);
所以我想出了对 平均成绩+0.005+5 与 (copy/10+1)*10比较,如果小于的话,就输
出copy/10*10,否则输出(copy/10+1)*10;
感觉这道题还是挺难的,发现这个做法感觉挺好。。。
#include<iostream> #include<stdio.h> using namespace std; int main() { int n,i,copy; double a[100],sum; while(scanf("%d",&n)!=EOF) { sum=0; for(i=0;i<n;i++) { cin>>a[i]; sum+=a[i]; } sum=sum/n; copy=int(sum); printf("%.2lf ",sum); if(sum+5+0.005<(copy/10+1)*10) cout<<copy/10*10<<endl; else cout<<(copy/10+1)*10<<endl; } return 0; }
标签:
原文地址:http://blog.csdn.net/zuguodexiaoguoabc/article/details/44452765