hsk


私信TA

用户名:dotcpp0644469

访问量:3095

签 名:

有志者,事竟成

等  级
排  名 2721
经  验 2177
参赛次数 0
文章发表 23
年  龄 0
在职情况 学生
学  校 河南科技大学
专  业 新一代电子信息技术

  自我简介:

解题思路:

最关键的地方是如何将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 人评分

  评论区

  • «
  • »