温馨提示:

如何输出%?

即两个%连写代表%,尝试输出printf(“%%”)

方法1:先存储数据再处理,定义4个变量记录4个年龄段的人数,初值为0

#include<cstdio>
int a[110];
int main(){
    int n;
    scanf("%d",&n);
    int temp;
    for (int i=1;i<=n;i++)
        scanf("%d",&a[i]);
    int x=0,y=0,z=0,t=0;
    for (int i=1;i<=n;i++){
        if  (a[i]>=0&&a[i]<=18) x++;
        if  (a[i]>=19&&a[i]<=35) y++;
        if  (a[i]>=36&&a[i]<=60) z++;
        if  (a[i]>=61) t++;
    } 
    
    a[0]=x+y+z+t;//a[0]记录总人数 
    
    printf("%.2lf%%\n%.2lf%%\n%.2lf%%\n%.2lf%%\n",double(x)/a[0]*100,double(y)/a[0]*100,double(z)/a[0]*100,double(t)/a[0]*100);// double(x)将输出结果强制转换成double,即两个%连写代表% 
    return 0;
}
View Code

 

方法2:边读边处理,定义4个变量记录4个年龄段的人数。

//定义4个变量记录4个年龄段的人数,边读边处理 
#include<cstdio>
int main(){
    int n,x=0,y=0,z=0,t=0,sum;//x,y,z,t分别记录每个年龄段的人数 
    scanf("%d",&n);
    int temp;
    for (int i=1;i<=n;i++){
        scanf("%d",&temp);
        if  (temp>=0&&temp<=18) x++;
        if  (temp>=19&&temp<=35) y++;
        if  (temp>=36&&temp<=60) z++;
        if  (temp>=61) t++;
    } 
    sum=x+y+z+t;
    printf("%.2lf%%\n%.2lf%%\n%.2lf%%\n%.2lf%%\n",double(x)/sum*100,double(y)/sum*100,double(z)/sum*100,double(t)/sum*100);// double(x)将输出结果强制转换成double,即两个%连写代表% 
    return 0;
}
View Code

方法3:定义数组记录4个年龄段的人数和总人数

#include<cstdio>
int a[10];
int main(){
    int n;
    scanf("%d",&n);
    int temp;
    for (int i=1;i<=n;i++){
        scanf("%d",&temp);
        if  (temp>=0&&temp<=18) a[1]++;
        if  (temp>=19&&temp<=35) a[2]++;
        if  (temp>=36&&temp<=60) a[3]++;
        if  (temp>=61) a[4]++;
    } 
    a[0]=a[1]+a[2]+a[3]+a[4];
    printf("%.2lf%%\n%.2lf%%\n%.2lf%%\n%.2lf%%\n",double(a[1])/a[0]*100,double(a[2])/a[0]*100,double(a[3])/a[0]*100,double(a[4])/a[0]*100);// double(x)将输出结果强制转换成double,即两个%连写代表% 
    return 0;
}
View Code