Kevin_Sun_2007 2019-03-10 13:51 采纳率: 66.7%
浏览 1346
已采纳

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;
}
  • 写回答

1条回答 默认 最新

  • threenewbee 2019-03-10 14:08
    关注

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

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料