💖💖⚡️⚡️专栏:C编程入门-轻松入门/系统总结⚡️⚡️💖💖
[C编程入门] 专为C语言初学者设计,提供轻松易懂的入门教程与系统的知识总结。本专栏将带你从零开始,循序渐进地掌握C语言的核心概念与编程技巧。无论你是完全没有编程背景的学生,还是希望系统学习C语言的自学者,这里都有丰富的示例和详尽的解释,帮助你打下坚实的编程基础,轻松迈入程序设计的世界。通过本专栏的学习,你将能够自信地运用C语言解决问题,并为进一步的技术提升铺平道路。
2.1 条件语句
2.1.1 if
语句
if
语句用于基于某个条件执行特定的代码块。如果条件为真(非零值),则执行相应的代码块;否则跳过该代码块。
int age = 25;
if (age >= 18) {
printf("您已成年。\n");
}
-
语法:
if (condition) { // 当条件为真时执行的代码块 }
-
示例:
int temperature = 25; if (temperature < 0) { printf("天气很冷!\n"); }
-
条件表达式:
if
语句中的条件表达式可以是任何返回布尔值(真或假)的表达式。在C语言中,非零值被视为真,零值被视为假。 -
使用场景:
if
语句适用于只需要根据一个条件做出决策的情况。例如,判断温度是否低于零度,如果是,则提醒用户天气很冷。 -
注意事项:
- 在编写条件表达式时要确保逻辑正确,避免使用复杂的条件表达式,以免导致代码难以理解和维护。
- 对于简单的情况,
if
语句是最佳选择。但如果需要根据多个条件做出决策,则可以考虑使用if-else
或if-else if-else
语句。
2.1.2 if-else
语句
if-else
语句用于基于条件执行两个不同的代码块。如果条件为真,则执行if
后面的代码块;否则执行else
后面的代码块。
int age = 15;
if (age >= 18) {
printf("您已成年。\n");
} else {
printf("您还未成年。\n");
}
-
语法:
if (condition) { // 当条件为真时执行的代码块 } else { // 当条件为假时执行的代码块 }
-
示例:
int score = 75; if (score >= 60) { printf("考试通过。\n"); } else { printf("考试未通过。\n"); }
-
使用场景:
if-else
语句适用于需要根据一个条件做出两种不同决策的情况。例如,根据考试分数判断是否通过考试。 -
注意事项:
- 如果
if
和else
代码块只有一条语句,可以省略花括号。但是为了代码的可读性和一致性,建议总是使用花括号。 - 当条件较多时,可以考虑使用嵌套
if-else
语句或if-else if-else
语句。
- 如果
2.1.3 if-else if-else
语句
if-else if-else
语句允许你基于多个条件执行不同的代码块。
int grade = 85;
if (grade >= 90) {
printf("优秀。\n");
} else if (grade >= 80) {
printf("良好。\n");
} else if (grade >= 70) {
printf("合格。\n");
} else {
printf("不合格。\n");
}
-
语法:
if (condition1) { // 当条件1为真时执行的代码块 } else if (condition2) { // 当条件2为真时执行的代码块 } else if (condition3) { // 当条件3为真时执行的代码块 } else { // 当所有条件均为假时执行的代码块 }
-
示例:
int temperature = 25; if (temperature < 0) { printf("天气很冷!\n"); } else if (temperature < 20) { printf("天气凉爽。\n"); } else if (temperature < 30) { printf("天气温暖。\n"); } else { printf("天气炎热。\n"); }
-
使用场景:
if-else if-else
语句适用于需要根据多个条件做出不同决策的情况。例如,根据气温判断天气状况。 -
注意事项:
else if
语句可以有任意数量,但是else
语句只能有一个,且必须位于最后。- 如果某个条件满足,那么剩下的
else if
和else
分支将不再检查,直接执行相应的代码块。 - 为确保逻辑正确,应确保所有的条件互斥,即不能有两个或更多的条件同时为真。
2.1.4 switch
语句
switch
语句用于基于不同的条件执行不同的代码块。它比连续的if-else if-else
语句更加紧凑。
int dayOfWeek = 3;
switch (dayOfWeek) {
case 1:
printf("今天是周一。\n");
break;
case 2:
printf("今天是周二。\n");
break;
case 3:
printf("今天是周三。\n");
break;
default:
printf("今天不是周一至周三。\n");
}
-
语法:
switch (expression) { case value1: // 当表达式等于value1时执行的代码块 break; case value2: // 当表达式等于value2时执行的代码块 break; // ... default: // 当表达式不等于任何case值时执行的代码块 }
-
示例:
char grade = 'B'; switch (grade) { case 'A': printf("优秀。\n"); break; case 'B': printf("良好。\n"); break; case 'C': printf("合格。\n"); break; default: printf("不合格。\n"); }
-
使用场景:
switch
语句适用于需要根据多个离散值做出不同决策的情况。例如,根据学生成绩判断成绩等级。 -
注意事项:
switch
语句中的expression
通常是一个整型或枚举类型的表达式。break
语句用于防止执行下一个case
或default
分支。如果没有break
,则会继续执行下一个case
直到遇到break
或switch
语句的结尾。default
分支是可选的,用于处理所有case
都不匹配的情况。- 在编写
switch
语句时,务必确保所有可能的值都被覆盖,以避免遗漏情况。
2.2 循环结构
2.2.1 for
循环
for
循环用于重复执行一段代码块特定次数。
for (int i = 1; i <= 10; i++) {
printf("%d ", i);
}
-
语法:
for (initialization; condition; increment/decrement) { // 代码块 }
-
示例:
for (int i = 1; i <= 5; i++) { printf("第%d次循环\n", i); }
-
初始化:在循环开始之前执行的初始化操作,通常用于设置循环变量的初始值。
-
条件:每次循环开始之前都会检查的条件,如果条件为真,则执行循环体;如果为假,则退出循环。
-
增量/减量:每次循环结束时执行的操作,通常用于更新循环变量。
-
使用场景:
for
循环适用于需要执行固定次数循环的情况。例如,打印出1到10的所有数字。 -
注意事项:
- 确保循环条件设置得当,以避免无限循环的发生。
- 在
for
循环中,初始化、条件检查和更新操作都在循环体之外完成,这使得for
循环的结构更加清晰。
2.2.2 while
循环
while
循环用于在条件为真的情况下重复执行一段代码块。
int count = 1;
while (count <= 10) {
printf("%d ", count);
count++;
}
-
语法:
while (condition) { // 代码块 }
-
示例:
int number = 1; while (number <= 5) { printf("第%d次循环\n", number); number++; }
-
条件:每次循环开始之前都会检查的条件,如果条件为真,则执行循环体;如果为假,则退出循环。
-
使用场景:
while
循环适用于需要在未知次数的情况下执行循环的情况。例如,不断询问用户输入直到满足某个条件为止。 -
注意事项:
- 为了避免无限循环,循环体内通常需要包含更新循环条件的代码。
while
循环的条件检查发生在每次循环开始之前,因此如果初始条件就不满足,循环体可能一次都不会被执行。
2.2.3 do...while
循环
do...while
循环至少执行一次代码块,然后在每次循环结束时检查条件。
int count = 1;
do {
printf("%d ", count);
count++;
} while (count <= 10);
-
语法:
do { // 代码块 } while (condition);
-
示例:
int number = 1; do { printf("第%d次循环\n", number); number++; } while (number <= 5);
-
特点:
do...while
循环至少执行一次,即使条件一开始就不满足。 -
注意事项:
- 为了避免无限循环,循环体内通常需要包含更新循环条件的代码。
do...while
循环的条件检查发生在每次循环结束时,因此即使初始条件不满足,循环体也会至少执行一次。
2.2.4 循环控制语句
-
break
语句:用于立即退出循环。for (int i = 1; i <= 10; i++) { if (i == 5) { break; } printf("%d ", i); }
-
continue
语句:用于跳过当前迭代并进入下一次迭代。for (int i = 1; i <= 10; i++) { if (i == 5) { continue; } printf("%d ", i); }
-
goto
语句:用于无条件跳转到标号所指定的位置。(不推荐使用)int i = 1;
start:
printf("%d ", i);
if (i < 10) {
i++;
goto start;
}
- **注意事项**:
- `break`语句可用于退出`for`、`while`、`do...while`循环以及`switch`语句。
- `continue`语句只用于循环结构,用于跳过当前迭代并进入下一次迭代。
- `goto`语句通常不推荐使用,因为它可能导致代码难以理解和维护。
- 在使用`break`和`continue`时,要确保它们不会破坏程序的逻辑结构,避免不必要的混乱。
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/4c9d9eb8b4ba41ec8ab349f8774a89b3.png#pic_center)
#### 2.3 实践练习
**2.3.1 练习编写条件语句程序**
编写一个程序,根据用户输入的成绩输出成绩等级。
```c
#include <stdio.h>
int main() {
int score;
printf("请输入您的成绩: ");
scanf("%d", &score);
if (score >= 90) {
printf("优秀。\n");
} else if (score >= 80) {
printf("良好。\n");
} else if (score >= 70) {
printf("合格。\n");
} else {
printf("不合格。\n");
}
return 0;
}
-
用户输入:使用
scanf
函数获取用户的输入。int score; printf("请输入您的成绩: "); scanf("%d", &score);
-
条件判断:使用
if-else if-else
语句根据成绩输出不同的信息。if (score >= 90) { printf("优秀。\n"); } else if (score >= 80) { printf("良好。\n"); } else if (score >= 70) { printf("合格。\n"); } else { printf("不合格。\n"); }
-
使用场景:这个练习适用于初学者,帮助他们理解如何根据输入的值做出不同的输出。通过这种方式,用户可以即时了解自己的成绩等级。
2.3.2 练习编写循环程序
编写一个程序,计算1到100之间所有奇数的和。
#include <stdio.h>
int main() {
int sum = 0;
for (int i = 1; i <= 100; i += 2) {
sum += i;
}
printf("1到100之间所有奇数的和为:%d\n", sum);
return 0;
}
-
循环结构:使用
for
循环遍历1到100之间的所有奇数。for (int i = 1; i <= 100; i += 2) { sum += i; }
-
计算结果:使用变量
sum
累加所有奇数。int sum = 0; for (int i = 1; i <= 100; i += 2) { sum += i; }
-
输出结果:使用
printf
函数输出计算结果。printf("1到100之间所有奇数的和为:%d\n", sum);
-
使用场景:这个练习帮助初学者理解如何使用循环来解决实际问题。通过计算奇数的和,可以加深对循环结构的理解,并学习如何累积变量值。
2.4 小结
本章介绍了C语言的基本控制结构,包括条件语句和循环结构。通过这些结构,你可以控制程序的执行流程,实现更复杂的逻辑。接下来,你可以继续深入到更复杂的主题,如数组、指针、函数等。