请你写一段程序,统计各类数字的占比。
提示:输出%时需要用%%才能输出。
输入格式:
只有一行,为用空格分隔的若干整数,最后一个整数为0。测试用例保证输入中只包含这一个0。
输出格式:
共三行,依次分别输出3、5、7的倍数的占比(如果某个数同时为多个数的倍数,如15,70等,则不参与统计,但要计到总数中)。占比采用百分数形式,且保留2位小数。这里的占比指的是这类数字的数量跟所有数字的总数(不包括最后的0)比。测试用例保证所有整数可以用int存储。
样例">输入样例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 0
输出样例:
25.00%
15.00%
10.00%
代码如下:
#include<stdio.h>
int main()
{
int n;
int s = 0, s3 = 0, s5 = 0, s7 = 0;
//s为总数,s3为3的倍数
scanf("%d", &n);
while (n != 0)
{
if (n % 3 == 0 && n % 5 == 0)
s++;
else if (n % 3 == 0 && n % 7 == 0)
s++;
else if (n % 5 == 0 && n % 7 == 0)
s++;
else if (n % 3 == 0 && n % 5 == 0 && n % 7 == 0)
s++;
else
{
if (n % 3 == 0)
s3++;
else if (n % 5 == 0)
s5++;
else if (n % 7 == 0)
s7++;
s++;
}
scanf("%d", &n);
}
printf("%.2f%%\n", (float)s3*100 / s);
printf("%.2f%%\n", (float)s5*100 / s);
printf("%.2f%%\n", (float)s7*100 / s);
}
这是之前写的错误代码!!!
没有考虑到n同时使3 5 7 的倍数
#include<stdio.h>
int main()
{
int n;
int s = 0, s3 = 0, s5 = 0, s7 = 0;
//s为总数,s3为3的倍数
scanf("%d", &n);
while (n != 0)
{
if (n % 3 == 0 && n % 5 == 0)
s++;
else if (n % 3 == 0 && n % 7 == 0)
s++;
else if (n % 5 == 0 && n % 7 == 0)
s++;
else
{
if (n % 3 == 0)
s3++;
else if (n % 5 == 0)
s5++;
else if (n % 7 == 0)
s7++;
s++;
}
scanf("%d", &n);
}
printf("%.2f%%\n", (float)s3*100 / s);
printf("%.2f%%\n", (float)s5*100 / s);
printf("%.2f%%\n", (float)s7*100 / s);
}
希望大家能订阅这个专栏,我会在这个专栏里持续更新北邮的计算机导论作业,与大家分享优质题目!!!