温馨提示:
如何输出%?
即两个%连写代表%,尝试输出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; }
方法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; }
方法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; }