解题思路:
最关键的地方是如何将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 人评分
A+B for Input-Output Practice (V) (C++代码)浏览:485 |
C语言程序设计教程(第三版)课后习题5.8 (C语言代码)浏览:613 |
Pascal三角 (C语言代码)格式错误浏览:551 |
P1001 (C语言代码)浏览:836 |
WU-printf基础练习2 (C++代码)浏览:2061 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:701 |
字符逆序 (C语言代码)浏览:706 |
1157题解浏览:769 |
1124题解浏览:630 |
C语言程序设计教程(第三版)课后习题12.3 (C语言代码)浏览:587 |