C语言笔记---(6)流程控制篇

2023-10-21 13:13:30 浏览数 (2)

C语言支持三种程序运行结构:顺序结构、选择结构、循环结构。

  1. 顺序流程:按照语句编写的顺序上到下逐句zhix逐句执行。
  2. 分支流程:也叫分支结构,依据是否满足条件,有选择的执行相应功能。
  3. 循环流程:依据条件是否满足,重复多次执行某段代码。

一、选择结构

1、if语句

1.if语句的三种形式:

第一种:

代码语言:javascript复制
if(测试条件)
  条件为真的流程

第二种:

代码语言:javascript复制
if(测试条件)
  条件为真的流程
else
  条件为假所执行的流程

第三种:

代码语言:javascript复制
if(条件表达式1)
  语句1
  else if(条件表达式2)
    语句2
  else if(条件表达式3)
    语句3
.....
else
  语句n
2.if嵌套语句
代码语言:javascript复制
if()
  if()
    语句1
  else
    语句2
else 
    if
      语句3
    else
      语句4

2、条件运算符

他是C语言中唯一一个三元运算符

意味着它有三个运算对象 伪代码如下:

代码语言:javascript复制
c=x >=10 ? 'Y' : 'n';
//测试条件 ? 表达式1 : 表达式2;

3、switch语句

语法:

代码语言:javascript复制
switch (表达式)
{
case 常量表达式1: 语句1;break;
case 常量表达式2: 语句2;break;
...
case 常量表达式n-1: 语句n-1;break;
default : 语句n
}

执行逻辑:

计算"表达式"的值。并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的 值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如表达 式的值与所有case后的常量表达式均不相同时,则执行default后的语句。注意:每个语句后面都有break

示例代码:

代码语言:javascript复制
#include <stdio.h>
int main()
{
 int day;
 printf("plz Input weekday number: ");
 scanf("%d", &day);
 switch (day)
 {
 case 1:printf("星期一n"); break;
 case 2:printf("星期二n"); break;
 case 3:printf("星期三n"); break;
 case 4:printf("星期四n"); break;
 case 5:printf("星期五n"); break;
 case 6:printf("星期六n"); break;
 case 7:printf("星期日n"); break;
 default:printf("I don't know n");
 }
 return 0;
}

总结:

  1. switch结构的表达式必须为“常量表达式”
  2. switch结构可以用if ... else if ... else 结构来实现

二、循环结构

1、while循环

代码语言:javascript复制
while(循环条件)
{
    循环行为1
    循环行为2
    循环行为3
}

求1~100的和示例代码:

代码语言:javascript复制
#include <stdio.h>
int main()
{
    int sum,i;
    sum=0,i=1;
    while (i<=100)
    {
        sum=sum i;
        i  ;
    }
    printf("%d %dn",sum,i);
    return 0;
}

C语言中非0即为真,一定要注意检查代码,避免出现死循环的情况。如何避免出现死循环呢?

  1. 开始时,为计数器设计初始值
  2. 计数器与一个有限值比较作为循环条件
  3. 更新计数器

2、for循环

代码语言:javascript复制
for (计数器设置初始值;循环条件;计数器更新)
{
    循环行为1
    循环行为2
    循环行为3
}

求1~100的和示例代码:

代码语言:javascript复制
#include <stdio.h>
int main()
{
    int sum,i;
    sum=0;
    for (i=1; i <= 100; i  )
    {
        sum=i sum;
    }
    printf("%d %d",sum,i);
    return 0;
}

3、do-while循环

while与do-while的不同

代码语言:javascript复制
do{
    循环行为1
    循环行为2
    循环行为3
}while(循环条件);

三、流程控制

1、break语句

1.break在switch语句中的使用
  • break用于switch中时,可使程序跳出switch,如果没有break语句,则会继续执行下一个case逻辑 中的语句(不论case后面的表示式结果与switch后的表达式结果是否相等),直到遇到break才 会跳出switch
代码语言:javascript复制
switch(x)
{
 case 1:printf("1n");break;
 case 2:printf("2n");
 case 3:printf("3n");break;
 case 4:printf("4n");break;
}
# 上面的例子中因为case 2 逻辑后没有break,所以当x为2时,输出结果为 2 3

2、break在循环语句中的使用

  • 当break语句用于do-while、for、while循环语句中时,可使程序终止循环而执行循环后面的语 句,通常break语句总是与if语句联在一起。即满足条件时便跳出循环。
代码语言:javascript复制
int m, n;
for (m = 0; m < 10; m  )
{
 for (n = 0; n < 10; n  )
 {
 if (n == 3)
 break;
 printf("%dn", n);
 }
}

3、contiune语句

break语句有两种用法:

一种是与switch语句配套使用,用来中断某个分支的执行。 另一种用法是在循环体内部跳出循环,不再进行后面的循环了。

continue语句的作用是:

跳过本次循环,直接开始下一轮循环

1.while循环中使用contiune
代码语言:javascript复制
#include<stdio.h>
int main()
{
   int i=0;
   while (i<20)
   {
       if (i==6)
       {
           i=15;
           continue;
       }
       printf("%d ", i);
       i  ;
   }  
}
2.for分支语句中使用contiune
代码语言:javascript复制
#include <stdio.h>
int main()
{
    int i = 0;
    for(i=0;i<20;i  )
{
        if (i == 6)
        i=15;
        continue;
    printf("%d",i);
}
    return 0;
}

0 人点赞