[C编程入门] 第二章:C语言的基本控制结构:条件语句、循环结构

在这里插入图片描述

💖💖⚡️⚡️专栏: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-elseif-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语句适用于需要根据一个条件做出两种不同决策的情况。例如,根据考试分数判断是否通过考试。

  • 注意事项

    • 如果ifelse代码块只有一条语句,可以省略花括号。但是为了代码的可读性和一致性,建议总是使用花括号。
    • 当条件较多时,可以考虑使用嵌套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 ifelse分支将不再检查,直接执行相应的代码块。
    • 为确保逻辑正确,应确保所有的条件互斥,即不能有两个或更多的条件同时为真。

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语句用于防止执行下一个casedefault分支。如果没有break,则会继续执行下一个case直到遇到breakswitch语句的结尾。
    • 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语言的基本控制结构,包括条件语句和循环结构。通过这些结构,你可以控制程序的执行流程,实现更复杂的逻辑。接下来,你可以继续深入到更复杂的主题,如数组、指针、函数等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值