C语言中的控制流

1、二路分支 if- eles

  • 逻辑:程序中某段代码需要在满足某个条件时才能运行
  • 形式:
    1. if 语句:表达一种 如果-则 的条件执行关系
    2. if-else 语句:表达一种 如果-否则 的互斥分支关系
  • 举例:
// if 语句
if(a%2 == 0)
{
    printf("a是偶数\n");
}
//if-else 语句
if(a%2 == 0)
{
    printf("a是偶数\n");
}
else
{
    printf("a是奇数\n");
}
  • 注意:

        1.if 语句可以单独使用,else 语句不可以,else 语句必须跟if语句配套使用

        2.不管是 if 语句还是 else 语句,代码块都必须使用大括号{}括起来,否则只有首个逻辑语句有效

if (a < 200)
    printf("a小于200 ...\n");
else
    printf("a 大于或等于200 ..\n");

2、多路分支 switch - case

  • 逻辑:根据不同的条件执行不同的代码片段
  • 语法:
switch ( 需要判断的语句【整形表达式】 )
{
    case 某个值1 :
        /*
             当整形表达式的值为 某个值1 的时候需要执行的代码块
        */
        break ; // 跳出SwitchCase 语句

    case 某个值2 :
        /*
             当整形表达式的值为 某个值2 的时候需要执行的代码块
        */
        break ; // 跳出SwitchCase 语句
    
    case 某个值N :
        /*
             当整形表达式的值为 某个值N 的时候需要执行的代码块
        */
        break ; // 跳出SwitchCase 语句
    
    default:  // 如果以上的值都不满足...
        /*
            当以上的值都不匹配则执行....
        */
        break ;
}
switch(n)
{
case 'a':
    printf("one\n");
    break;

case 2:
    printf("two\n");
    break;
  
case 3:
    printf("three\n");
    break;
  
default:
    printf("其他数字\n");
}
  • 要点解析:
  1. switch(n) 语句中的 n 必须是一个整型表达式,即 switch 判断的数据必须是整型(char short int long ..)
  2. case 语句只能带整型常量(1 , 2 , 3, 'a' ,'K' ....),包括普通整型或字符,不包括 const 型数据。
  3. break 语句的作用是跳出整个 swtich 结构没有 break 程序会略过case的判断往下执行,直到遇到下一个break 或整个SwitchCase语句结束
  4. default 语句不是必须的,一般放在最后面(因此不需要 break)

3、const

  • 逻辑:使一个变量不可修改(让一个变量变成"常量")
  • 作用:
    • 修饰普通变量,使之不可修改
    • 修饰指针变量,使之不可修改或者使其指向的目标不可修改
  • 示例:
int const a = 100; // 定义了一个不可修改的变量a
const int b = 200; // 定义了一个不可修改的变量b
int const k ; // "正确的" 但是由于初始化时没有赋值因此k的值从此以后就无法再次进行复制

a = 101; // 错误
b = 202; // 错误

4、while 与 do…while 循环

  • 逻辑:使得程序中某一段代码可以重复循环地运行
  • 形式:
    • while 循环:先判断再循环
    • do-while 循环:先循环再判断
while循环 

while循环:入口判断

// 循环输出一系列整数,直到100为止
int a;
scanf("%d", &a);
while(a <= 100)
{
    printf("%d\n", a);
    a++;
}

while( getchar () != '\n') ;

do-while 循环

 do-while循环:出口判断

// 循环输出一系列整数,直到100为止
int a;
scanf("%d", &a);
do
{
    printf("%d\n", a);
    a++;
}while(a <= 100);
  • 语法点:
    • while 循环先进行判断条件为真后才执行循环体,因此循环体可能一遍也不执行。
    • do-while 循环先执行循环体,再进行判断,因此循环体至少会执行一遍。
    • do-while 循环中的 while 语句后面有分号;

5、for 循环

  • 逻辑:与 while 循环类似,但更加紧凑,for 循环将控制循环的变量以及判断语句以及初始化语句集中在一行
  • 语法:
for( 初始化语句 ; 条件判断语句 ;  循环变量控制语句 )
{
    // 条件满足时执行的代码块
}

初始化语句: 只会在第一次进入循环体时被执行。

条件判断语句 : 每一次进入循环之前都会被执行,用于决定是否执行代码块。

循环变量控制语句 : 每一次执行完代码块后执行。

  • 示例:
// 循环输出一系列整数,直到100为止
int a;
for(a=30; a<=100; a++)
{
    printf("%d\n", a);
}
  • 语法点:
    • 循环头的标准语法是: for(表达式1 ; 表达式2 ; 表达式3)
    • 表达式1一般用来初始化循环控制变量
    • 表达式2一般用来作为循环判定条件,为真则进入循环,为假则跳出循环
    • 表达式3一般用来更新循环控制变量
    • 三个表达式均可以省略,但分号不能省略 for( ; ; ){ }   --> 死循环

6、break 和 continue 

  • 逻辑:
    • break:① 跳出 switch 语句; ② 跳出当层循环体
    • continue:结束当次循环,进入下次循环
  • 举例:
switch(n)
{
case 1:
    printf("one\n");
    break;  // 跳出 switch 语句
case 2:
    printf("two\n");
    break;        
}

while(1)
{
    int n = scanf("%d", &a);
    if(n == 0)
        break; // 跳出当层 while 循环体
}

for(int i=1; i<=100; i++)
{
    if(i%7 == 0)
        continue; // 跳过所有能被7整除的数
     
    printf("%d\n", i);       
}

7 、goto语句

  • 逻辑:无条件跳转

语法:

goto   标签;


标签:
int main()
{
    printf("%d\n", __LINE__); // 打印第3行 
    
    // 无条件跳转到label处 
    goto label;
    printf("%d\n", __LINE__); // 打印第7行,此处被略过
label:  
    printf("%d\n", __LINE__); // 打印第9行
}

语法:

        1、goto语句直接跳转到本代码块中的标签处

        2、标签指的是以冒号结尾的标识符

  • 作用:
    • goto语句的无条件跳转不利于程序的可读性,一般不建议使用,容易破坏应用层的内存
    • goto语句常被用在程序的错误处理

未完待续 ......

有疑问的小伙伴可以留言一起交流讨论!!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值