题目描述
某医院进行一项研究,想知道某项疾病是否与年龄有关。因此对以往的诊断记录进行整理,统计 0-18 、19-35 、36-60、61及以上这四个年龄段的患者人数占总患者人数的比例。
输入格式
输入共 22 行。
第一行包含一个整数 N(0<n≤100),表示总患者人数。
第二行包含 N 个整数,代表这 N 个患者就诊时的年龄。
输出格式
输出共4行。
第1行包含一个百分数,这个百分数保留小数点后2位,代表 0−18岁这个年龄段的患者人数占总患者人数的比例。
第2行包含一个百分数,这个百分数保留小数点后2位,代表 19−35岁这个年龄段的患者人数占总患者人数的比例。
第3行包含一个百分数,这个百分数保留小数点后2位,代表 36−60岁这个年龄段的患者人数占总患者人数的比例。
第4行包含一个百分数,这个百分数保留小数点后2位,代表 61岁及以上这个年龄段的患者人数占总患者人数的比例。
输入输出样例
输入#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%
运行代码
import java.util.*;
public class Main {
public static void main(String[]args){
Scanner s=new Scanner(System.in);
int N=s.nextInt();
double sum18=0;
double sum35=0;
double sum60=0;
double sum=0;
for(int i=1;i<=N;i++){
int age=s.nextInt();
if(age>=0 && age<=18){
sum18++;
}
else if(age>=19 && age<=35){
sum35++;
}
else if(age>=36 && age<=60){
sum60++;
}
else if(age>=61){
sum++;
}
}
System.out.printf("%.2f%%\n",sum18/N*100);//百分数要*100
System.out.printf("%.2f%%\n",sum35/N*100);
System.out.printf("%.2f%%\n",sum60/N*100);
System.out.printf("%.2f%%\n",sum/N*100);
}
}
小结
输入两个百分号%%可以输出百分符号%
当我写完循环提交AC后,发现这道题给的标签是数组,然后我就用数组再写了一个。其实解题的思路是一样的,只不过是将每个年龄段储存在数组里,在输入数据时直接判断年龄,最后进行一个统计。优点是运用数组写的代码会更少一些,不需要额外定义其他的变量。
import java.util.*;
public class Main {
public static void main(String[]args){
Scanner s=new Scanner(System.in);
int N=s.nextInt();
double[]a=new double[10];
for(int i=1;i<=N;i++){
int age=s.nextInt();
if(age<=18){
a[1]++;
}
if(19<=age && age<=35){
a[2]++;
}
if(36<=age && age<=60){
a[3]++;
}
if(age>=61){
a[4]++;
}
}
System.out.printf("%.2f%%\n",(a[1])/N*100);
System.out.printf("%.2f%%\n",(a[2])/N*100);
System.out.printf("%.2f%%\n",(a[3])/N*100);
System.out.printf("%.2f%%\n",(a[4])/N*100);
}
}