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章基础知识自测。