年龄与疾病

描述:

某医院想统计一下某项疾病的获得与否与年龄是否有关,需要对以前的诊断记录进行整理,按照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;
}

       

       年轻,那么短暂,那么迷茫。如果你不能给自己一张耀眼的文凭、一段荡气回肠的爱情,那么,你还可以给自己一个九成九会遭到嘲笑的梦想。因为,总有一天,它会让你闪闪发光。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值