if分支
- 简单分支:根据一个条件执行一个代码块。
- 阶梯分支:使用多个
if...else if...else
来处理多个条件,每个else if
相当于一个阶梯。 - 嵌套分支:在
if
或else
块中再使用if
语句。注意嵌套层数不宜过多,以免降低代码可读性。
switch分支
- 基本形式:
switch
语句允许基于不同的情况执行不同的代码块。- 注意点:
switch
后的表达式必须是整型。case
后必须是常量。- 通常每个
case
后需要break
来避免穿透。
- 注意点:
- 嵌套形式:
switch
语句内部可以嵌套另一个switch
。
循环结构
- while循环:当条件为真时,重复执行代码块。
- do…while循环:至少执行一次代码块,然后根据条件决定是否继续。
- for循环:常用于已知循环次数的情况,由初始化表达式、条件表达式和循环后操作组成。
- 双层for循环:用于穷举所有可能的组合,如打印99乘法表。
- goto循环:不建议使用,因为它可能导致代码混乱。
练习与作业
- 从键盘输入字符,输出字典顺序的下一个字符。
- 根据输入成绩打印成绩级别。
- 使用while循环计算0到100的求和。
- 解决鸡兔同笼问题。
- 打印水仙花数。
- if分支练习:
-
c
复制
#include <stdio.h> int main() { char ch; printf("请输入一个字符: "); scanf("%c", &ch); if (ch >= 'a' && ch < 'z') { printf("%c\n", ch + 1); } else if (ch >= 'A' && ch < 'Z') { printf("%c\n", ch + 1); } else if (ch == 'z') { printf("a\n"); } else if (ch == 'Z') { printf("A\n"); } else { printf("输入数据有误\n"); } return 0; }
- switch分支练习:
-
c
复制
#include <stdio.h> int main() { int score; printf("请输入成绩: "); scanf("%d", &score); switch (score / 10) { case 10: case 9: printf("优秀\n"); break; case 8: printf("良好\n"); break; case 7: printf("中等\n"); break; case 6: printf("及格\n"); break; default: printf("不及格\n"); } return 0; }
- 循环结构练习:
-
c
复制
#include <stdio.h> int main() { int sum = 0; int i = 0; while (i <= 100) { sum += i; i++; } printf("0 - 100的求和结果为: %d\n", sum); // 鸡兔同笼问题 for (int x = 0; x <= 50; x++) { if (2 * x + 4 * (50 - x) == 140) { printf("鸡的个数为: %d, 兔的个数为: %d\n", x, 50 - x); } } // 99乘法表 for (int i = 1; i <= 9; i++) { for (int j = 1; j <= i; j++) { printf("%d*%d=%d ", j, i, i * j); } printf("\n"); } return 0; }
- 作业:打印水仙花数
-
c
复制
#include <stdio.h> int main() { for (int i = 100; i < 1000; i++) { int sum = 0; int temp = i; while (temp) { int digit = temp % 10; sum += digit * digit * digit; temp /= 10; } if (sum == i) { printf("%d\n", i); } } return 0; }
总结
这些是C语言中的基本控制结构,用于根据条件执行不同的代码路径。if
和switch
用于分支,而while
、do...while
和for
用于循环。理解这些结构对于编写结构化的程序至关重要。通过练习,可以加深对控制流程的理解,并能够解决实际问题。