题目描述
某医院进行一项研究,想知道某项疾病是否与年龄有关。因此对以往的诊断记录进行整理,统计 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;
}