测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看
B67

练习:第一个百分、最小质因数、偶数和

引入

章前总览 三道练习巩固 break / continue:找到目标就停;找最小因数;跳过奇数再累加。

三道练习:

  • 第一个 100 分:break + 看 i 是否越界
  • 最小质因数:第一个能整除的 i
  • 偶数和:奇数 continue

1 练习1:第一个 100 分

输入 n 个成绩(序号 1~n),输出第一个 100 分的序号;没有则输出 no。

循环变量要在 for 外定义

  • 退出循环后还要用 i,所以 int i 写在 for 前面,初值从 1 开始。
  • 退出后:i<=n → 找到了,输出 i;否则输出 no。
  • 后面未读的成绩可以不读,不影响评测。

</> 参考代码

#include <iostream>
using namespace std;

int main() {
    int i, n;
    cin >> n;
    int t;
    for (i = 1; i <= n; i++) {
        cin >> t;
        if (t == 100) break;
    }
    if (i <= n) cout << i << endl;
    else cout << "no" << endl;
    return 0;
}

2 练习2:最小质因数

输入 n(2≤n≤1000),输出 n 的最小质因数。

结论

  • 大于 1 的整数,除 1 以外的最小因数一定是质数,也就是最小质因数。
  • 从 2 扫到 n,第一个能整除的 i 输出后 break。
  • 样例:24 → 2;17 → 17(自己是质数)。

</> 参考代码

#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;
    for (int i = 2; i <= n; i++) {
        if (n % i == 0) {
            cout << i << endl;
            break;
        }
    }
    return 0;
}

3 练习3:求偶数的和

输入 n 个整数,求偶数之和;要求用 continue。

</> 参考代码

#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;
    int t, s = 0;
    for (int i = 1; i <= n; i++) {
        cin >> t;
        if (t % 2) continue;  // 奇数跳过
        s += t;
    }
    cout << s << endl;
    return 0;
}
  • 样例:8 个数 → 76。
  • 不用 continue、改成 if 偶数再加,效果一样;本题是练 continue。
小结

退出循环后还要看“是找没找到”时:

循环变量写在 for 外
break 后用 i 与 n 比较
或配合 flag 状态变量
里程碑达成:

下一节做第13章基础知识自测。