解题思路:
最关键的地方是如何将double类型的数据四舍五入的输出,本代码采用cmath中round函数的方式
注意事项:
round函数可以对浮点型数据进行四舍五入处理,极其方便
默认保留0位小数,即只输出整数,即 cout<<round(23.3)<<endl; //则会输出23
如果想要保留一位小数,则可以对数据进行先*10再/10的操作
例如:cout<<round(1.25*10)/10<<endl; 可以输出1.3;
参考代码:
#include #include //四舍五入函数round的头文件 using namespace std; //主要是输出的格式 int main(){ int score; int n; cin>>n; int jige=0; int youxiu=0; for(int i=1;i>score; if(score>=60){ //及格人数加一 jige++; } if(score>=85){ youxiu++; } } //开始输出--采用输出保留0位小数的方式 double rate1 = 1.0*jige/n * 100; double rate2 = 1.0*youxiu/n * 100; cout<<round(rate1)<<"%"<<endl<<round(rate2)<<"%"<<endl; //可以被补充1的方式来代替这一行 return 0; }
补充:
1.可以采用setprecision(n)的方式来解决该问题
setprecison可以设置输出位的有效数字个数_以四舍五入的方式,在本题中将将参数设置为2,如下:
cout<<setprecision(2)<<rate1<<"%"<<endl<<rate2<<"%"<<endl; //设原数据为33.3,那么保留两位有效数字为33
2.可以采用+0.5的方式进行控制
首先我们要知道 double类型的数据转int数据时,会丢失小数部分,例如15.6或15.4转化为int类型时会变为15;
那么我们可以采用将原数据+0.5的方式,来间接的实现四舍五入的效果,例如源数据33.4+0.5=33.9,转化为 int 时会变为33,
而33.6+0.5=34.1,转化为int类型的数据时,会变为34,效果达成
但是需要注意的是,在这种条件下,我们要将rate1与rate2设置为int类型,然后直接输出即可;
而在以上两种方式下,rate1与rate2必须是double类型,不然会丢失小数部分,控制其输出格式会变得无意义;
0.0分
3 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复