当前位置: 首页 > article >正文

C语言教学第四课:控制结构

一、课程导入

学习了C语言的基础知识,包括变量、数据类型和运算符。接下来,将进入C语言的核心部分——控制结构。控制结构是程序设计中用来控制程序流程的重要工具,通过控制结构,我们可以实现条件判断、循环操作等功能,使程序能够根据不同的情况做出不同的行为。将重点学习条件语句和循环语句。

二、条件语句

(一)if语句

  1. 基本语法

    if (条件) {
        // 条件为真时执行的代码
    }
    • 如果条件为真(非零值),则执行大括号中的代码。

    • 如果条件为假(零值),则跳过大括号中的代码。

  2. 示例

    int age = 18;
    if (age >= 18) {
        printf("你已经成年了。\n");
    }

(二)if-else语句

  1. 基本语法

    if (条件) {
        // 条件为真时执行的代码
    } else {
        // 条件为假时执行的代码
    }
    • 如果条件为真,执行if部分的代码;否则,执行else部分的代码。

  2. 示例

    int age = 16;
    if (age >= 18) {
        printf("你已经成年了。\n");
    } else {
        printf("你还未成年。\n");
    }

(三)if-else if-else语句

  1. 基本语法

    if (条件1) {
        // 条件1为真时执行的代码
    } else if (条件2) {
        // 条件2为真时执行的代码
    } else {
        // 所有条件都不满足时执行的代码
    }
    • 按顺序检查每个条件,一旦某个条件为真,执行对应的代码块,然后跳过后续的条件。

  2. 示例

    int score = 85;
    if (score >= 90) {
        printf("优秀\n");
    } else if (score >= 70) {
        printf("良好\n");
    } else if (score >= 60) {
        printf("及格\n");
    } else {
        printf("不及格\n");
    }

(四)switch语句

  1. 基本语法

    switch (表达式) {
        case 常量1:
            // 表达式等于常量1时执行的代码
            break;
        case 常量2:
            // 表达式等于常量2时执行的代码
            break;
        default:
            // 所有条件都不满足时执行的代码
    }
    • 根据表达式的值选择执行对应的case分支。

    • 每个case分支后通常使用break语句防止代码“穿透”。

  2. 示例

    int day = 3;
    switch (day) {
        case 1:
            printf("星期一\n");
            break;
        case 2:
            printf("星期二\n");
            break;
        case 3:
            printf("星期三\n");
            break;
        default:
            printf("其他日期\n");
    }

三、循环语句

(一)while循环

  1. 基本语法

    while (条件) {
        // 循环体
    }
    • 在每次循环开始时检查条件,如果条件为真,则执行循环体;否则,退出循环。

  2. 示例

    int i = 1;
    while (i <= 5) {
        printf("%d\n", i);
        i++;
    }

(二)do-while循环

  1. 基本语法

    do {
        // 循环体
    } while (条件);
    • while循环类似,但do-while循环至少会执行一次循环体,然后再检查条件。

  2. 示例

    int i = 1;
    do {
        printf("%d\n", i);
        i++;
    } while (i <= 5);

(三)for循环

  1. 基本语法

    for (初始化; 条件; 更新) {
        // 循环体
    }
    • 初始化:在循环开始前执行一次。

    • 条件:每次循环开始时检查,如果为真则执行循环体。

    • 更新:每次循环结束后执行。

  2. 示例

    for (int i = 1; i <= 5; i++) {
        printf("%d\n", i);
    }

四、循环控制语句

(一)break语句

  • 用于跳出当前循环。

  • 示例:

    for (int i = 1; i <= 10; i++) {
        if (i == 5) {
            break;
        }
        printf("%d\n", i);
    }

(二)continue语句

  • 用于跳过当前循环的剩余部分,直接进入下一次循环。

  • 示例:

    for (int i = 1; i <= 10; i++) {
        if (i % 2 == 0) {
            continue;
        }
        printf("%d\n", i);
    }

五、练习

  1. 练习题

    • 编写一个程序,输入一个整数n,判断它是否为正数、负数或零。

    • 编写一个程序,输入一个整数n,计算从1到n的累加和。

    • 编写一个程序,输入一个整数n,打印从1到n的所有奇数。

  2. 参考答案

    • 判断正负数

      #include <stdio.h>
      
      int main() {
          int n;
          printf("请输入一个整数:");
          scanf("%d", &n);
      
          if (n > 0) {
              printf("正数\n");
          } else if (n < 0) {
              printf("负数\n");
          } else {
              printf("零\n");
          }
      
          return 0;
      }
    • 累加和

      #include <stdio.h>
      
      int main() {
          int n, sum = 0;
          printf("请输入一个整数:");
          scanf("%d", &n);
      
          for (int i = 1; i <= n; i++) {
              sum += i;
          }
      
          printf("从1到%d的累加和为:%d\n", n, sum);
      
          return 0;
      }
    • 打印奇数

      #include <stdio.h>
      
      int main() {
          int n;
          printf("请输入一个整数:");
          scanf("%d", &n);
      
          for (int i = 1; i <= n; i++) {
              if (i % 2 != 0) {
                  printf("%d\n", i);
              }
          }
      
          return 0;
      }

六、总结

学习了C语言中的控制结构,包括条件语句(ifif-elseif-else if-elseswitch)和循环语句(whiledo-whilefor)。通过这些控制结构,我们可以实现复杂的程序逻辑。我们还学习了循环控制语句(breakcontinue),用于控制循环的执行。


http://www.kler.cn/a/531070.html

相关文章:

  • 如何利用DeepSeek打造医疗领域专属AI助手?从微调到部署全流程解析
  • BFS(广度优先搜索)——搜索算法
  • Cmake学习笔记
  • 【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.12 连续数组:为什么contiguous这么重要?
  • Rust 控制流语法详解
  • HTML5 技术深度解读:本地存储与地理定位的最佳实践
  • 内核定时器3-用户空间定时器
  • Docker Hub 镜像 Pull 失败的解决方案
  • AJAX笔记进阶篇
  • 《使用Ollama部署DeepSeek并进行对话全过程记录》
  • Spring 面试题【每日20道】【其二】
  • 11.1 LangChain Chains 最佳实践:从流水线设计到生产部署的全链路指南
  • 35.Word:公积金管理中心文员小谢【37】
  • string例题
  • MYSQL性能调优连接器、查询缓存、分析器、优化器、执行器、一图详解MYSQL底层工作原理
  • 泰山Office开源计划
  • 机试题——字符匹配
  • Python的那些事第十篇:隐藏细节与提供接口的艺术Python中的封装
  • Leetcode—598. 区间加法 II【简单】
  • golang命令大全7--性能优化与分析
  • Vue - readonly 与 shallowReadonly
  • 模拟实战-用CompletableFuture优化远程RPC调用
  • 【优先算法】专题——位运算
  • 存储器知识点2
  • 基础IO的学习
  • 代码随想录-训练营-day18