7月20日C语言基础控制流

什么是控制流?控制流的作用

有时候我们运行程序时候,程序工作过程需要某些判断

程序设计分成顺序结构,选择结构,循环结构

二路分支(if语句不能使用break否则报错)

  • 逻辑:程序中某段代码需要在满足某个条件时才能运行
  • 判断条件可为任意表达式 :算术运算符表达式,逻辑运算符表达式,位运算符表达式,
  • 形式:
    1. if 语句:表达一种 如果-则 的条件执行关系  
      • if(判断条件){ ....}  //小括号表示判断条件,大括号表示满足此条件运行的范围
    2. if-else 语句:表达一种 如果-否则 的互斥分支关系
      • If(){ }else{}   判断if()条件是否成立,如果成立执行if下面的{}里面的内容,否则执行else
    3. If(){}-else if(){}else{} 语句:
    4. If(){if(){}else if(){}else{}}else if(){}else{} // if具有可嵌套功能 // if(){...}else if(){}else是一条语句
    5. 编程建议,不管if里面是当语句还是复合语句,请先写{},再往{}里面填充语句
    6. else匹配问题:
      • else总是与它上面的,最近的,同级未匹配的if语句配对
  • 举例:

// 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 语句,代码块都必须使用大括号{}括起来,否则只有首句有效

多路分支

  • 逻辑:根据不同的条件执行不同的代码片段
  • 语法:

switch(n)

{

case 1:                                                //case  2...6;  表示2<n<6

    printf("one\n");

    break;

case 2:

    printf("two\n");

    break;

  

case 3:

    printf("three\n");

    break;

  

default:

    printf("其他数字\n");

}

  • 要点解析:
  1. switch(n) 语句中的 n 必须是一个整型表达式,即 switch 判断的数据必须是整型
  2. case 语句只能带整型常量,包括普通整型或字符,不包括 const 型数据。
  3. break 语句的作用是跳出整个 swtich 结构,没有 break 程序会略过case往下执行
  4. default 语句不是必须的,一般放在最后面(因此不需要 break)

while与 do…while循环

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

while循环


while循环:入口判断

// 循环输出一系列整数,直到100为止

int a;

scanf("%d", &a);

while(a <= 100)

{

    printf("%d\n", a);

    a++;

}

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 语句后面有分号;

for循环

  • 逻辑:与 while 循环类似,但更加紧凑,for 循环将控制循环的变量集中在一行
  • 示例:

// 循环输出一系列整数,直到100为止

int a;

for(a=30; a<=100; a++)

{

    printf("%d\n", a);

}

  • 语法点:
    • 循环头的标准语法是: for(表达式1 ; 表达式2 ; 表达式3)
    • 表达式1一般用来初始化循环控制变量
    • 表达式2一般用来作为循环判定条件,为真则进入循环,为假则跳出循环
    • 表达式3一般用来更新循环控制变量
    • 三个表达式均可以省略,但分号不能省略

while与for的区别:
    一般来说while()更加注重循环条件,for()更加注重循环次数,如果有确定的循环次数
    请多用for()循环

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);       

}

goto语句

  • 逻辑:无条件跳转
  • 示例:

int main()

{

    printf("%d\n", __LINE__); // 打印第3行

    

    // 无条件跳转到label处

    goto label;

    printf("%d\n", __LINE__); // 打印第7行,此处被略过

label:  

    printf("%d\n", __LINE__); // 打印第9行

}

  • 语法:
    • goto语句直接跳转到本代码块中的标签处
    • 标签指的是以冒号结尾的标识符
  • 作用:
    • goto语句的无条件跳转不利于程序的可读性,一般不建议使用
    • goto语句常被用在程序的错误处理中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值