请你写一段程序,统计各类数字的占比。
提示:输出%时需要用%%才能输出。
输入格式:
只有一行,为用空格分隔的若干整数,最后一个整数为0。测试用例保证输入中只包含这一个0。
输出格式:
共三行,依次分别输出3、5、7的倍数的占比(如果某个数同时为多个数的倍数,如15,70等,则不参与统计,但要计到总数中)。占比采用百分数形式,且保留2位小数。这里的占比指的是这类数字的数量跟所有数字的总数(不包括最后的0)比。测试用例保证所有整数可以用int存储
#include <stdio.h>
int main()
{
int a=0;
int y=0;
int x=0;
int z=0;
int i=0;
double X,Y,Z;
scanf("%d",&a);
while (a != 0){
scanf("%d",&a);
i=i+1;
if(a%3==0&&a%5!=0&&a%7!=0)
x=x+1;
else if(a%3!=0&&a%5==0&&a%7!=0)
y=y+1;
else if(a%3!=0&&a%5!=0&&a%7==0)
z=z+1;}
X=x*100/i;
Y=y*100/i;
Z=z*100/i;
printf("%.2lf%%\n",X);
printf("%.2lf%%\n",Y);
printf("%.2lf%%\n",Z);
return 0;
}
修改如下,供参考:
#include <stdio.h>
int main()
{
int a,y=0,x=0,z=0,i=0;
double X,Y,Z;
while (scanf("%d",&a)==1 && a != 0)
{
if(a%3==0&&a%5!=0&&a%7!=0) x++;
else if(a%3!=0&&a%5==0&&a%7!=0) y++;
else if(a%3!=0&&a%5!=0&&a%7==0) z++;
i++;
}
X=1.0*x/i*100;
Y=1.0*y/i*100;
Z=1.0*z/i*100;
printf("%.2lf%%\n",X);
printf("%.2lf%%\n",Y);
printf("%.2lf%%\n",Z);
return 0;
}