C语言——流程控制

C语言目录:

1. 概述

2. 数据类型

3. 量

4. 运算符

5. 流程控制

6. 函数

7. C程序编译过程

8. 文件

9. 内存管理


默认情况下,程序运行后,系统会从上到下顺序执行程序中的每一行代码。

5.1 顺序结构

5.2 选择结构

5.2.1 if

if(表达式){
    语句1;
}else if(表达式2){
    语句2;
}else{
    表达式3;
}
后续语句;

约定==!= 比较变量和值是否相等时,把常量卸载前面

#include <stdio.h>

int main(){
    int a = 8;
//    if(a == 10){// 错误写法, 但不会报错
    if (10 == a){
      printf("a的值是10\n");
    }else{
     printf("a的值不是10\n");
    }
}

5.2.2 switch

switch(表达式){
    case 常量表达式1:
        语句1;
        break;
    case 常量表达式2:
        语句2; 
        break;
    case 常量表达式n:
        语句n;
        break;
    default:
        语句n+1;
        break;
}

注意

  • switch 的表达式及 case 的值 的类型必须是 int ,或者可以被提升为整型的值(charshort)

  • case 的值不能相同

  • 每个 case 要以 break 结尾,否则会出现穿透问题

  • default 不一定要放在 case 最后,只有等到所有 case 不匹配才会执行。

5.3 循环结构

循环条件 成立时,会反复执行 循环体 ,直到条件不成立位置

5.3.1 while

while(循环控制条件) {
    循环体中的语句;
    能够让循环结束的语句;
    ....
}
  • 循环控制条件:循环退出的主要依据,来控制循环到底什么时候退出

  • 循环体:循环的过程中重复执行的代码段

  • 循环终止语句(递增、递减、真、假等):能够让循环条件为假的依据,否则退出循环

注意

如果 while 省略了大括号,则后面不能定义变量

#include <stdio.h>

int main(){
    while (1)  // 死循环
         int num = 10; // 报错
         // 没有能够让循环结束的语句
}

5.3.2 do while

do {
    循环体中的语句;
    能够让循环结束的语句;
    ....
} while(循环控制条件);
a. 应用场景:口令校验
#include<stdio.h>

int main()
{
    int num = -1;
    do{
        printf("请输入密码,验证您的身份\n");
        scanf("%d", &num);
    }while(123456 != num);
    printf("主人,您终于回来了\n");
}

do...whilewhile 的区别

  • do...while 至少执行一次
  • while 可能一次都不执行

5.3.3 for

for(初始化表达式;循环条件表达式;循环后的操作表达式) {
    循环体中的语句;
}

对比 while 来说, for 更节约内存空间

5.3.4 循环优化

在多重循环中,应当将最长的循环放在最内存,最短的循环放在最外层,减少CPU跨循环层切换的次数

for (row=0; row<100; row++) {
  // 低效率:长循环在最外层
  for ( col=0; col<5; col++ ) {
    sum = sum + a[row][col];
  }
}

for (col=0; col<5; col++ ) {
  // 高效率:长循环在最内层
  for (row=0; row<100; row++) {
    sum = sum + a[row][col];
  }
}

5.4 四大跳转

5.4.1 break

立刻跳出当前语句或循环

一个 break 只向外跳一层

同一层, break 后面的语句不会执行

5.4.2 continue

结束 本轮 ,进入 下一轮 循环

5.4.3 goto

仅在本函数内实现跳转,不能实现跨函数跳转

#include <stdio.h>

int main(){
    int num = 0;
// loop:是定义的标记
loop:if(num < 10){
        printf("num = %d\n", num);
        num++;
        // goto loop代表跳转到标记的位置
        goto loop;
    }
}

#include <stdio.h>

int main(){
    while (1) {
        while(true){
            goto out;
        }
    }
    out:printf("跳过了所有循环");
}

5.4.4 return

结束当前函数,将结果返回给调用者

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AmosTian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值