小韦老师@神犇营-my0027-中奖率
题目:
描述
码猿星球举办了三场抽奖活动,请你写程序分别统计一下这三场抽奖活动的中奖率。
比如某一场抽奖活动的总人数为 100,中奖人数为 30,则中奖率为 30%。
某一场抽奖活动的人数大于等于10000,小于等于100,000,000,000,000,000。
输入
输入分三行。每一行为两个数字,分别表示该场抽奖活动的总人数和未中奖人数。
输出
输出三行,每一行是对应的那一场抽奖活动的中奖率,保留3位小数。
输入样例1
100 50
100 30
100 60
输出样例1
50.000%
70.000%
40.000%
题解:
破题:
对于每一场而言,中奖率 = 中奖人数 / 总人数,而题目中只给出了未中奖人数,所以中奖人数 = 总人数 - 未中奖人数。
思路:
总共有三场抽奖活动,每一场输入的数据有总人数和未中奖人数,所以每一场需要两个变量来保存所输入的数据,总共有三场,所以总共需要六个变量来保存输入的数据。可以用整数型的变量,但是注意两点:
1° 这里输入的数据的范围已经超过 int 能表示的范围,所以如果用整型的变量,可以选用 long long 类型的。
2° 考虑到最后算出来的中奖率会是浮点数,而整数除整数会是整除,处理起来比较麻烦,所以这里可以将变量定义为浮点型的。
因此定义六个变量,用来分别存储输入的数据:
// 定义浮点型的变量用来分别存三场抽奖活动的总人数和未中奖人数
double s1, p1, s2, p2, s3, p3;
定义好变量之后,现在需要输入数据:
// 分别输入
cin >> s1 >> p1;
cin >> s2 >> p2;
cin >> s3 >> p3;
现在按照我们分析的思路将结果算出来,并且输出:
计算的公式为:中奖人数 / 总人数 = (总人数 - 未中奖人数)/ 总人数
因为最后要输出的是百分之多少,所以还要乘上 100。
这里用 C 语言的 printf 来控制保留小数点的位数,这里是保留三位小数。用 printf 来输出百分号(%)时,必须是在双引号内输入两个百分号,不然就不能正确输出百分号。
// s1 - p1是中奖人数,除以总人数,再乘以100,就是中奖率
// 输出的时候要保留三位小数,并且要输出%,输出%的时候要写两个%
printf("%.3f%%\n", (s1 - p1) / s1 * 100);
printf("%.3f%%\n", (s2 - p2) / s2 * 100);
printf("%.3f%%\n", (s3 - p3) / s3 * 100);
或者也可以用以下方式输出:
// s1 - p1是中奖人数,除以总人数,再乘以100,就是中奖率
// 输出的时候要保留三位小数,并且要输出%,输出%的时候要写两个%
printf("%.3f", (s1 - p1) / s1 * 100);
cout << "%" << endl; // 输出百分号并且换行
printf("%.3f", (s2 - p2) / s2 * 100);
cout << "%" << endl; // 输出百分号并且换行
printf("%.3f", (s3 - p3) / s3 * 100);
cout << "%" << endl; // 输出百分号并且换行
完整代码:
#include <bits/stdc++.h>
using namespace std;
int main() {
// 定义浮点型的变量用来分别存三场抽奖活动的总人数和未中奖人数
double s1, p1, s2, p2, s3, p3;
// 分别输入
cin >> s1 >> p1;
cin >> s2 >> p2;
cin >> s3 >> p3;
// s1 - p1是中奖人数,除以总人数,再乘以100,就是中奖率
// 输出的时候要保留三位小数,并且要输出%,输出%的时候要写两个%
printf("%.3f%%\n", (s1 - p1) / s1 * 100);
printf("%.3f%%\n", (s2 - p2) / s2 * 100);
printf("%.3f%%\n", (s3 - p3) / s3 * 100);
return 0;
}
或者:
#include <bits/stdc++.h>
using namespace std;
int main() {
// 定义浮点型的变量用来分别存三场抽奖活动的总人数和未中奖人数
double s1, p1, s2, p2, s3, p3;
// 分别输入
cin >> s1 >> p1;
cin >> s2 >> p2;
cin >> s3 >> p3;
printf("%.3f", (s1 - p1) / s1 * 100);
cout << "%" << endl; // 输出百分号并且换行
printf("%.3f", (s2 - p2) / s2 * 100);
cout << "%" << endl; // 输出百分号并且换行
printf("%.3f", (s3 - p3) / s3 * 100);
cout << "%" << endl; // 输出百分号并且换行
return 0;
}