年龄与疾病-神一样的内存与速度-今天又学到了一招

**关键问题
1、C语言如何输入百分比函数用的是两个%表示**
2、如何输入一行数字显示规定输入多少个,然后用for循环,再用sanf函数,解决数字都在一列,占了好少的内存,厉害了!

总时间限制: 1000ms 内存限制: 65536kB
描述
某医院想统计一下某项疾病的获得与否与年龄是否有关,需要对以前的诊断记录进行整理,按照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 <iostream>
#include <cstdio>
using namespace std;
int main(){
    int n,a[100],i=0,value;
    scanf("%d",&n);
    int k = i,m1=0,m2=0,m3=0,m4=0;
    for(int j =0;j<n;j++){
        scanf("%d",&value);
        if(value>0&&value<=18)
          m1=m1+1;
        else if(value>=19&&value<=35)
          m2 = m2 +1;
        else if(value>=36&&value<=60)
          m3 = m3 +1;
        else if(value>=61)
          m4 = m4 +1;     
    };
    float n1=n;
    printf("%.2f%%\n%.2f%%\n%.2f%%\n%.2f%%\n",(m1/n1)*100,(m2/n1)*100,(m3/n1)*100,(m4/n1)*100);
    return 0;
}

内存较大的方法-慎用for循环呀

#include <iostream>
#include <cstdio>
using namespace std;
int main(){
    int n,a[100],i=0;
    scanf("%d",&n);
    if (n<0||n>100)
       exit(0);
    while(scanf("%d",&a[i++]))
    {
        if(getchar()=='\n')
        break;
    };
    int k = i,m1=0,m2=0,m3=0,m4=0;
    for(int j =0;j<k;j++){
        if(a[j]>0&&a[j]<=18)
          m1=m1+1;
        else if(a[j]>=19&&a[j]<=35)
          m2 = m2 +1;
        else if(a[j]>=36&&a[j]<=60)
          m3 = m3 +1;
        else if(a[j]>=61)
          m4 = m4 +1;     
    };
    float n1=n;
    printf("%.2f%%\n%.2f%%\n%.2f%%\n%.2f%%\n",(m1/n1)*100,(m2/n1)*100,(m3/n1)*100,(m4/n1)*100);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/u011644858/article/details/80041359