这是二级最核心的一讲。分支和循环是所有编程题的骨架,读代码题也全靠它。
if / else if / else 和嵌套分支for 和 while,不再“多一次/少一次”if (条件) {
// 条件成立时做这里
} else if (另一个条件) {
// 上面不成立、这个成立时做这里
} else {
// 都不成立时做这里
}
== 等于、!= 不等、> < >= <=。&&(并且)、||(或者)、!(非)。(y%4==0 && y%100!=0) || y%400==0。= 是赋值,== 才是判断相等。if(x=5) 是错的!if(x>=1 && x<=10),不能写 1<=x<=10。if (score >= 90) cout << "A";
else if (score >= 80) cout << "B";
else if (score >= 60) cout << "C";
else cout << "D";
else if 串起来,从大到小(或从小到大)判断,顺序别乱,否则会提前命中。for (int i = 1; i <= n; i++) {
cout << i << " ";
}
// 输出 1 2 3 ... n
for 三部分:① 初始化 int i=1 → ② 条件 i<=n(成立才继续)→ ③ 更新 i++(每轮末尾执行)。
int i = 1;
while (i <= n) {
cout << i << " ";
i++; // 千万别忘了让 i 变大,否则死循环!
}
这是二级失分重灾区。看清楚 < 还是 <=:
| 写法 | 循环次数 | i 取到 |
|---|---|---|
for(i=1;i<=n;i++) | n 次 | 1 ~ n |
for(i=0;i<n;i++) | n 次 | 0 ~ n-1 |
for(i=1;i<n;i++) | n-1 次 | 1 ~ n-1 |
写循环前先问自己:我要循环几次?i 从几到几?
break:立刻跳出整个循环。continue:跳过本轮剩下的,直接进入下一轮。外层管行,内层管列。打印一个 3 行 4 列的星号矩形:
for (int i = 1; i <= 3; i++) { // 第 i 行
for (int j = 1; j <= 4; j++) { // 第 j 列
cout << "*";
}
cout << "\n"; // 每行末尾换行
}
"\n" 写在内层循环外面、外层里面。第 4 讲会专门讲各种图形。读代码题不要靠脑子硬想,一定动手画表:每执行一行,把变量的新值写下来。这样几乎不会错。
int s = 0;
for (int i = 1; i <= 4; i++) {
s = s + i;
}
cout << s;
逐轮画变量表:
| i | s = s + i | s 现在 |
|---|---|---|
| 1 | 0+1 | 1 |
| 2 | 1+2 | 3 |
| 3 | 3+3 | 6 |
| 4 | 6+4 | 10 |
循环结束(i 变 5 不满足 ≤4),输出 s = 10。
Q1. for(int i=0;i<5;i++) 循环体执行几次?i 最后一次是几?
Q2. 下面输出什么?
int s=0; for(int i=1;i<=3;i++) for(int j=1;j<=2;j++) s++; cout<<s;
s++。Q3. 判断 x 是否在 1 到 100 之间,正确写法是?
if (x >= 1 && x <= 100)。不能写 1<=x<=100。Q4. 用变量表算:int a=1; for(int i=1;i<=3;i++) a=a*2; cout<<a;
Q5. while 循环里忘了写 i++ 会怎样?
if/else if/else;判断相等用 ==;区间要用 && 连。< 与 <=。while 别忘更新变量,否则死循环。