题解
荣誉奖章
1 条题解
-
0
解题思路
这道题要我们数一数:三科成绩里面,有几科考了满分(100分)。
我们只需要把三科成绩一个一个拿来和 100 比一比:
- 第一科如果等于 100,计数器加 1;
- 第二科如果等于 100,计数器再加 1;
- 第三科如果等于 100,计数器再加 1。
最后输出计数器的值就是答案。这里的计数器就是一个 int 变量,我们给它起名叫 cnt(count 的缩写,表示“个数”)。
有两个容易出错的地方:
- 计数器一开始必须设成 0。如果不初始化,cnt 里可能是不知道多大的随机数,答案就错了;
- 满分是 100 分,要用“等于”符号 == 判断,写成 a == 100,不能写成赋值号 =。
这种“数一数有多少个满足条件的对象”的方法叫做计数法,是编程里非常常用的方法,以后统计人数、统计个数都会用到。
参考代码
#include using namespace std;
int main() { int a, b, c; // a、b、c 分别表示三个科目的成绩 cin >> a >> b >> c; // 读入三个成绩
int cnt = 0; // cnt 记录拿到奖章(满分)的科目个数,先设为 0 if (a == 100) cnt = cnt + 1; // 第一科是满分,奖章数加 1 if (b == 100) cnt = cnt + 1; // 第二科是满分,奖章数加 1 if (c == 100) cnt = cnt + 1; // 第三科是满分,奖章数加 1 cout << cnt << endl; // 输出奖章总数 return 0;}
复杂度分析
本题固定只有 3 科成绩要判断,判断的次数固定是 3 次,不会随着输入变大而变多,所以时间复杂度是 O(1)。程序只用了 4 个 int 变量,空间大小固定,空间复杂度也是 O(1)。
- 1