描述:
某医院想统计一下某项疾病的获得与否与年龄是否有关,需要对以前的诊断记录进行整理,按照0-18、19-35、36-60、61以上(含61)四个年龄段统计的患病人数占总患病人数的比例。
输入:
共2行,第一行为过往病人的数目n(0 < n <= 100),第二行为每个病人患病时的年龄。
输出:
按照0-18、19-35、36-60、61以上(含61)四个年龄段输出该段患病人数占总患病人数的比例,以百分比的形式输出,精确到小数点后两位。每个年龄段占一行,共四行。
样例输入:
10
1 11 21 31 41 51 61 71 81 91样例输出:
20.00%
20.00%
20.00%
40.00%
算法:
#include <stdio.h> int main() { int a[511]; int n,i,s1=0,s2=0,s3=0,s4=0; double h1,h2,h3,h4; char c='%'; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d",&a[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 if(a[i]>=61)s4++; } h1=(s1*1.0)/n*100.0; h2=(s2*1.0)/n*100.0; h3=(s3*1.0)/n*100.0; h4=(s4*1.0)/n*100.0; printf("%.2lf%c\n%.2lf%c\n%.2lf%c\n%.2lf%c\n",h1,c,h2,c,h3,c,h4,c); return 0; }
这只是针对这个问题写的算法,那我们可以思考一下,如果年龄段有十个呢?是不是要定义十个变量,那就太麻烦了,那我们可以继续用数组保存计算出的结果啊,
改进的算法:
#include<stdio.h> int main() { int a[100]; int i,n; char c='%'; int sum[4]={0,0,0,0}; double jg[4]; scanf("%d", &n); for(i=0;i<n;i++){ scanf("%d", &a[i]); if(a[i]>=61) sum[3]++; else if(a[i]>=36) sum[2]++; else if(a[i]>=19) sum[1]++; else sum[0]++; } for(i=0;i<4;i++) { jg[i]=(sum[i]*1.0)/n*100.0; //jg[i]=(100*sum[i])/n; //会有精度丢失 printf("%.2f%c\n",jg[i],c); } return 0; }
年轻,那么短暂,那么迷茫。如果你不能给自己一张耀眼的文凭、一段荡气回肠的爱情,那么,你还可以给自己一个九成九会遭到嘲笑的梦想。因为,总有一天,它会让你闪闪发光。