解题思路:
最关键的地方是如何将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语言训练-大、小写问题 (C语言代码)浏览:2334 |
C语言程序设计教程(第三版)课后习题10.5 (C语言代码)浏览:540 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:880 |
【金明的预算方案】 (C++代码)浏览:834 |
Cylinder (C语言描述,蓝桥杯)浏览:1214 |
1124题解浏览:590 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:566 |
C二级辅导-求偶数和 (C语言代码)浏览:670 |
2006年春浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:660 |
数组输出 (C语言代码)浏览:693 |