洛谷B2090 年龄与疾病

题目描述

某医院进行一项研究,想知道某项疾病是否与年龄有关。因此对以往的诊断记录进行整理,统计 0-18 、 19-35 、 36-60、 61 及以上这四个年龄段的患者人数占总患者人数的比例。

输入格式

输入共 22 行。

第一行包含一个整数 NN(0<n≤1000<n≤100),表示总患者人数。

第二行包含 NN 个整数,代表这 NN 个患者就诊时的年龄。

输出格式

输出共 44 行。

第 11 行包含一个百分数,这个百分数保留小数点后 22 位,代表 0−180−18 岁这个年龄段的患者人数占总患者人数的比例。

第 22 行包含一个百分数,这个百分数保留小数点后 22 位,代表 19−3519−35 岁这个年龄段的患者人数占总患者人数的比例。

第 33 行包含一个百分数,这个百分数保留小数点后 22 位,代表 36−6036−60 岁这个年龄段的患者人数占总患者人数的比例。

第 44 行包含一个百分数,这个百分数保留小数点后 22 位,代表 6161 岁及以上这个年龄段的患者人数占总患者人数的比例。

输入输出样例

输入 #1复制

10
1 11 21 31 41 51 61 71 81 91

输出 #1复制

20.00%
20.00%
20.00%
40.00%

输入 #2复制

12
10 19 86 94 58 57 34 19 88 69 5 13

输出 #2复制

25.00%
25.00%
16.67%
33.33%

同样,算法分析!!!

        首先,我们简单的输入输出这种简单的东西就不多费口舌了。我们可以先定义四个变量:s1,s2,s3,s4来记录次数,其实是为了后面的除以n做一个计数,接下来就可以进行一个for循环来判断,这也是这道题的核心代码,如下:

for(int i=1;i<=n;i++){
		if(a[i]>=0&&a[i]<=18) s1++;
		else if(a[i]>=19&&a[i]<=35) s2++;
		else if(a[i]>=36&&a[i]<=60) s3++;
		else s4++;
	}

虽然此时就可以直接输出,但本人建议用double类型存放o1,o2,o3,o4(用来输出)所以这道题的思路提供到此。

代码!!!!:

#include <bits/stdc++.h>
using namespace std;
#define se setprecision(2)
#define fi fixed
int main(){
	int n,a[100000];
	double s1=0;//0-18
	double s2=0;//19-35
	double s3=0;//36-60
	double s4=0;//61+
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	for(int i=1;i<=n;i++){
		if(a[i]>=0&&a[i]<=18) s1++;
		else if(a[i]>=19&&a[i]<=35) s2++;
		else if(a[i]>=36&&a[i]<=60) s3++;
		else s4++;
	}
	double o1,o2,o3,o4;
	o1=s1/n*100.0;
	o2=s2/n*100.0;
	o3=s3/n*100.0;
	o4=s4/n*100.0;
	cout<<fi<<se<<o1<<'%'<<endl;
	cout<<fi<<se<<o2<<'%'<<endl;
	cout<<fi<<se<<o3<<'%'<<endl;
	cout<<fi<<se<<o4<<'%'<<endl;
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值