**关键问题
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;
}