今天我们复习的部分依然是C语言很重要的一个部分,也许看起来很简单,但是每一个微不足道的小知识点都值得我们去仔细体会。如果我们想要提高自己的代码能力,离不开我们现在每走向他的每一小步。99步也许不成功,但是只有1步肯定是痴心妄想。所以,今天也继续加油吧~
ps:哇,我好浪漫!🌹
言归正传,在复习之前,我想和各位做一个小自测。我们知道C语言是一门结构化的程序设计语言。那么问题来咯:
你知道这些结构都是什么吗?
你熟知常用的分支和循环结构吗?
你能正确书写使用他们吗?
在解决问题时都应该怎么选择呢?
如果这三个问题,你已经在脑中有了清晰的答案。那么,我想很多基础的C语言编程题目你都可以得心应手的解决。如果不能的话,那就跟着我再好好复习一遍吧~
一、三大结构
顺序结构
顺序结构:代码按照从上到下的顺序依次执行,没有任何条件或循环控制。它是程序默认的执行方式,即一条接一条地执行语句。
示例:
#include <stdio.h>
int main() {
printf("这是顺序结构的示例。\n");
printf("我是按照顺序执行的。\n");
return 0;
}
选择结构
选择结构:根据条件的真假来选择执行不同的代码块。常见的选择结构有if语句和switch语句。
(提到的语句,接下来会复习都会复习到的。)
示例:
#include <stdio.h>
int main() {
int num = 10;
if (num > 0) {
printf("数值大于0。\n");
} else if (num < 0) {
printf("数值小于0。\n");
} else {
printf("数值等于0。\n");
}
return 0;
}
循环结构
循环结构:根据条件的真假来对一段代码进行重复执行,常见的循环结构有while循环、do-while循环和for循环。
(这里的代码示例,如果你忘记的话,可以先根据定义去感知他们每条语句的意义。)
示例:
#include <stdio.h>
int main() {
int i = 1;
while (i <= 5) {
printf("这是while循环的第%d次迭代。\n", i);
i++;
}
printf("\n");
i = 1;
do {
printf("这是do-while循环的第%d次迭代。\n", i);
i++;
} while (i <= 5);
printf("\n");
for (i = 1; i <= 5; i++) {
printf("这是for循环的第%d次迭代。\n", i);
}
return 0;
}
其实,我们仔细去思考这三个结构,会发现我们的生活许多问题都是这三种结构。就算事情很复杂,也可以拆分成这三个结构。
二、分支和循环
1.分支结构:
分支结构解决的问题:
当需要根据条件的真假或者多个情况进行不同的操作时,可以使用分支结构来解决问题。
例如:
根据用户输入的选择来执行不同的操作。
根据不同的条件执行不同的计算等。
- if语句:根据条件的真假来执行不同的代码块。它用于根据条件判断来决定程序的执行路径。
- switch语句:根据表达式的值来选择执行相应的代码块。它用于多种情况的判断,并根据情况执行相应的代码。
2.循环结构:
- while循环:通过判断条件的真假来重复执行代码块。它用于需要重复执行某个操作,直到条件不满足才结束循环。
- do-while循环:类似于while循环,但区别在于它先执行一次代码块,然后再判断条件是否满足,如果满足则继续执行,直到条件不满足才结束循环。
- for循环:通过设定循环次数来重复执行代码块。它用于已知循环次数的情况下执行重复操作。
循环结构解决的问题:
当需要重复执行某个操作直到达到特定条件或特定次数时,可以使用循环结构来解决问题。
例如:
计算数组的总和
寻找特定的数据
打印出一系列的数字等
那我们现在来比较下:
分支结构和循环结构都可以根据条件的满足性来控制程序的执行路径,但它们解决的问题略有不同。
- 分支结构用于根据条件的真假或多个情况的判断来执行相应的代码,它可以实现代码的选择性执行。
- 循环结构用于重复执行某段代码直到特定条件满足或特定次数达到,它可以实现代码的重复执行。
三、语句的正确书写
C语言中的分支语句有if-else语句和switch语句,循环语句有for循环、while循环和do-while循环。
下面是它们的书写方式:
1.if-else语句:
if (条件) {
// 条件为真时执行的代码
} else {
// 条件为假时执行的代码
}
例如:
int num = 10;
if (num > 0) {
printf("num是正数");
} else {
printf("num是负数或零");
}
2.switch语句:
switch (表达式) {
case 常量1:
// 当表达式的值等于常量1时执行的代码
break;
case 常量2:
// 当表达式的值等于常量2时执行的代码
break;
...
default:
// 当表达式的值都不等于前面的常量时执行的代码
break;
}
例如:
int num = 2;
switch (num) {
case 1:
printf("num等于1");
break;
case 2:
printf("num等于2");
break;
default:
printf("num既不是1也不是2");
break;
}
3.for循环:
for (初始化表达式; 终止条件表达式; 更新表达式) {
// 循环体代码
}
例如:
for (int i = 0; i < 5; i++) {
printf("循环次数:%d\n", i+1);
}
4.while循环:
while (条件) {
// 循环体代码
}
例如:
int i = 1;
while (i <= 5) {
printf("循环次数:%d\n", i);
i++;
}
5.do-while循环:
do {
// 循环体代码
} while (条件);
例如:
int i = 1;
do {
printf("循环次数:%d\n", i);
i++;
} while (i <= 5);
ps:记得在分支语句的条件后面加上花括号{},并且注意循环语句中的更新表达式,避免陷入无限循环。
四、break和continue
这里我们还要提到,break和continue:
在C语言中,有两个关键字可以用于控制循环结构:break和continue。
-
break:
当在循环结构中遇到break语句时,程序会立即跳出当前的循环,继续执行循环之后的语句。这意味着循环会被完全终止,不再执行后续的迭代。通常,break语句与if条件语句结合使用,以在满足某些条件时提前跳出循环。
以下是一个示例,展示了break语句的用法:
for (int i = 1; i <= 10; i++) {
if (i == 6) {
break;
}
printf("%d ", i);
}
输出结果为:1 2 3 4 5。当i等于6时,满足条件,跳出循环。
-
continue:
当在循环结构中遇到continue语句时,程序会立即跳过当前迭代的剩余部分,继续进行下一次的迭代。也就是说,循环并不被终止,而是跳过本次循环的后续语句,直接开始下一次循环。
以下是一个示例,展示了continue语句的用法:
for (int i = 1; i <= 5; i++) {
if (i == 3) {
continue;
}
printf("%d ", i);
}
输出结果为:1 2 4 5。当i等于3时,满足条件,跳过本次循环的后续语句,直接开始下一次循环。
这两个关键字通常与循环结构(如for循环和while循环)一起使用。
五、练一练
-
判断一个整数是正数、负数还是零,并输出结果。
-
判断一个整数是否为偶数。
-
找出两个整数中的最大值。
-
计算一个正整数的阶乘。
-
打印下面的图形:
* ** *** **** *****