c语言控制流

1、顺序结构

逻辑:从程序main函数开始运行,中间没有任何分支,一直按照顺序执行的方式执行到程序末尾

2、分支结构

逻辑:程序中某段代码需要在满足某个条件的时候,才能执行

形式:

1.if语句:表达一种如果条件成立,则...的条件执行关系

int n; scanf("%d", &n); if(n%2==0) { printf("%d是偶数\n", n); }

2.if...else语句:表达一种如果条件成立,则...执行,否则...的一种互斥的关系

int n; scanf("%d", &n); if(n%2==0) { printf("%d是偶数\n", n); } else { printf("%d是奇数\n", n); }

3.if...else的嵌套关系,表达有多路分支

int n; scanf("%d", &n); if(n%2==0) { printf("%d是偶数\n", n); if(n%3==0) { printf("还能被3整除\n"); } else { printf("但是不能被3整除\n"); } } else { printf("%d是奇数\n", n); if(n%4==0) { printf("还能被4整除\n"); } else { printf("但是不能被4整除\n"); } }

注意:

1、if语句是可以单独使用的,但是else是不可以的,else语句必须跟if语句配对使用

2、不管是if语句还是else语句,代码块必须要用大括号{}扩起来,否则,只有首句有效。

3、switch语句

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

int n; 
scanf("%d", &n); 
switch(n) 
{ 
case 1:printf("to day is 星期一\n");break; 
case 2:printf("to day is 星期二\n");break; 
case 3:printf("to day is 星期三\n");break; 
case 4:printf("to day is 星期四\n");break; 
case 5:printf("to day is 星期五\n");break; 
case 6:printf("to day is 星期六\n");break; 
case 7:printf("to day is 星期日\n");break; 
default:printf("输入有误\n"); 
}

要点:

1.switch(n)语句中的n必须是一个整型表达式,即switch进行判断的数据必须是整型,也可以是整型表达式,甚至可以是bool型,因为bool型true表示1,false表示0.

2.case语句只能带整型常量,或者字符型常量,还可以包括整型或者字符型表达式,但是不包括const型数据

3.break语句的作用是跳出整个switch语句结构,没有break,程序会略过case语句往下执行

4.default语句不是必须的,只是一个默认的出错的一个信息提示,一般放在最后面(这个是可以不需要break语句)

4、while与do...while循环

逻辑:让程序中的某一段代码可以重复循环的执行

形式:

while循环:先判断,在循环

do...while循环:先执行一次循环,在判断

while循环示例代码:

#include <stdio.h> 
int main(int argc, char const *argv[]) 
{
    int num = 0; 
    while(num <= 5) 
    { 
        printf("num = %d\n", num);
         num++; 
    }    
 return 0;     
} 

do...while循环示例代码:

#include <stdio.h> 
int main(int argc, char const *argv[]) 
{ 
    int num = 0; 
    do 
    { 
        printf("num = %d\n", num); num++;
     }while(num <= 5); 
       return 0; 
} 

语法点:

1.while循环先进行条件判断,条件为真时才执行循环体,因此如果条件为假,循环体可能一次都不执行。

2.while循环括号后面是可以加上分号的,代表这是一个空while循环,这样就可能导致条件成立的时候,变成一个死循环

3.do...while循环中的while语句后面必须要有分号

4.do...while循环,先执行循环体,在进行判断,因此循环体至少会执行一遍

5.do...while循环不一定会比while循环多执行一次

5、for循环

逻辑:与while循环类似,for循环将控制变量集中在一行,使得代码更加紧凑

示例:for(表达式1;表达式2;表达式3)

#include <stdio.h> 
int main(int argc, char const *argv[]) 
{ 
    for (int num = 0; num <= 5; num++) 
    { 
        printf("num = %d\n", num);
     }
     return 0; 
}
// 注意:表达式1里面的循环控制变量的定义,在C99标准之前,是会报错误的

语法点:

1.for循环的标准语法:for(表达式1;表达式2;表达式3)

2.表达式1一般用来初始化循环控制变量

3.表达式2一般用来做循环条件的判断,为真进入循环,为假退出循环

4.表达式3一般用来更新循环控制变量

5.三个表达式均可以省略,但是分号不能省略,表达式2省略之后,循环就变成死循环

6、break和congtinue

逻辑:

break:1、跳出switch语句,2、跳出循环体,只跳出当前包含它的循环体

continue:结束当次循环,进入下次循环

break:

int n; 
scanf("%d", &n); 
switch(n) 
{ 
case 1:printf("to day is 星期一\n");break; 
case 2:printf("to day is 星期二\n");break; 
case 3:printf("to day is 星期三\n");break; 
case 4:printf("to day is 星期四\n");break; 
case 5:printf("to day is 星期五\n");break; 
case 6:printf("to day is 星期六\n");break; 
case 7:printf("to day is 星期日\n");break; 
default:printf("输入有误\n"); 
}

break:

 for (int num = 0; num <= 5; num++) 
{ 
printf("num = %d\n", num); 
if (num == 3) { break; } } 
打印: num=0 num=1 num=2 num=3 int num = 0; while(num <= 5) 

{ printf("num = %d\n", num); num++; if (num == 3) { break; } }

7、goto语句

逻辑:无条件跳转 标签名:

举例:

#include <stdio.h>

int main(int argc, char const *argv[])

{

printf("%d\n", __LINE__);//__LINE__ 预定义宏:打印当前的行号

goto lab;

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

lab: printf("%d\n", __LINE__);

return 0;

}

语法:

goto语句直接跳转到本函数中的标签出处,另外的函数里面的标签是跳转不过去的,标签指的是以冒号结尾的标识符。

作用:

用于程序错误处理中

注意:

goto语句的无条件跳转不利于程序的可读性,一般不建议使用

  • 15
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值