c++保留小数输出出现问题

我的输出都是0,望指导。

题目:某医院想统计一下某项疾病的获得与否与年龄是否有关,需要对以前的诊断记录进行整理,按照0-18、19-35、36-60、61以上(含61)四个年龄段统计的患病人数占总患病人数的比例。

输入:
共2行,第一行为过往病人的数目n(0<n<=100),第二行为每个病人患病时的年龄。
输出:
按照0-18、19-35、36-60、61以上(含61)四个年龄段输出该段患病人数占总患病人数的比例,以百分比的形式输出,精确到小数点后两位。每个年龄段占一行,共四行。

#include<iostream>
#include<cstdio>
using namespace std;
int patient[100];
int main(){
    int number,a=0,b=0,c=0,d=0;
    double aout,bout,coutt,dout;
    cin>>number;
    for(int i=1;i<=number;i++){
        cin>>patient[i];
    }
    for(int i=1;i<=number;i++){
        if(patient[i]>=0&&patient[i]<=18)   a++;
        if(patient[i]>=19&&patient[i]<=35)  b++;
        if(patient[i]>=36&&patient[i]<=60)  c++;
        if(patient[i]<=61)                  d++;
    }
    aout=a*100/number;
    bout=b*100/number;
    coutt=c*100/number;
    dout=d*100/number;
    printf("%2d",aout);
    cout<<"%"<<endl;
    printf("%2d",bout);
    cout<<"%"<<endl;
    printf("%2d",coutt);
    cout<<"%"<<endl;
    printf("%2d",dout);
    cout<<"%"<<endl;
    return 0;
}
c++

1个回答

aout=a*100/number;
->
aout=a*100/(double)number;

printf("%2d",coutt);
->
printf("%4.2lf",coutt);

Kevin_Sun_2007
Kevin_Sun_2007 谢谢
一年多之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复Kevin_Sun_2007: 问题解决的话,请点我回答左上角的采纳,谢谢
一年多之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复Kevin_Sun_2007: patient[i]<=61 错了,是patient[i]>=61
一年多之前 回复
Kevin_Sun_2007
Kevin_Sun_2007 您好,为什么按样例输入10 1 11 21 31 41 51 61 71 81 91,输出dout为70.00% ?
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问