分支语句和循环语句

简介: 分支语句和循环语句

目录

分支语句

if

switch

循环语句

while

for

do while
8796180ddc03406bb59301015d1bd69e.png


1.if语句

语法结构:


if ( 表达式 )

   语句 ;

if ( 表达式 )

   语句 1 ;

else

   语句 2 ;

// 多分支    

if ( 表达式 1 )

   语句 1 ;

else if ( 表达式 2 )

   语句 2 ;

else

   语句 3 ;


演示代码

#include <stdio.h>
int main()
{
int age = 0;
   scanf("%d", &age);
   if(age<18)
  {
       printf("少年\n");
  }
   else if(age>=18 && age<30)
  {
       printf("青年\n");
  }
   else if(age>=30 && age<50)
  {
       printf("中年\n");
  }
   else if(age>=50 && age<80)
  {
       printf("老年\n");
  }
   else
  {
       printf("老寿星\n");
  }
}

如果条件成立,该如何执行多条语句

#include <stdio.h>
int main()
{
    if(表达式)
   {
        语句列表1;
   }
    else
   {
        语句列表2;
   }
    return 0;
}

浮空else语句

//适当的使用{}可以使代码的逻辑更加清楚。
//代码风格很重要
#include <stdio.h>
int main()
{
    int a = 0;
    int b = 2;
    if(a == 1)
   {
        if(b == 2)
       {
            printf("hehe\n");
       }
   }
    else
   {
         printf("haha\n");
   }       
    return 0;
}


else的匹配:else是和他离得最近的if语句相匹配。

switch语句

switch语句也是一种多分支语句。通常适用于多分支的情况。


如:

输入 1 ,输出星期一

输入 2 ,输出星期二

输入 3 ,输出星期三

输入 4 ,输出星期四

输入 5 ,输出星期五

输入 6 ,输出星期六

输入 7 ,输出星期日


switch语句的实现


switch ( 整型表达式 )\\不能是浮点型
{
        case 整形常量表达式 :
            语句 ;
}

switch中的break

在switch语句中,我们没办法直接实现分支,搭配break使用才能实现真正的分支。
break可以阻断语句的进行

起到终止的作用

通过要求来设置break的位置

1.#include <stdio.h>
int main ()
{
    int day = 0 ;
    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 ;
  }
    return 0 ;
}
2.
#include <stdio.h>
//switch 代码演示
int main ()
{
    int day = 0 ;
    switch ( day )
  {
        case 1 :
        case 2 :
        case 3 :
        case 4 :
        case 5 :
            printf ( "weekday\n" );
            break ;
        case 6 :
        case 7 :
            printf ( "weekend\n" );
            break ;
  }
    return 0 ;
}

break 语句 的实际效果是把语句列表划分为不同的分支部分。

编程好习惯

在最后一个 case 语句的后面加上一条 break 语句。

(之所以这么写是可以避免出现在以前的最后一个 case 语句后面忘了添加 break 语句)。

default子句

如果表达的值与所有的 case 标签的值都不匹配怎么办?

其实也没什么,结构就是所有的语句都被跳过而已。

程序并不会终止,也不会报错,因为这种情况在 C 中并不认为是个错误。

但是,如果你并不想忽略不匹配所有标签的表达式的值时该怎么办呢?

你可以在语句列表中增加一条 default 子句,把下面的标签

default :

写在任何一个 case 标签可以出现的位置。

当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。

所以,每个 switch 语句中只能出现一条 default 子句。

但是它可以出现在语句列表的任何位置,而且语句流会像执行一个 case 标签一样执行 default 子句。
编程好习惯

在每个switch 语句中都放一条default子句是个好习惯,甚至可以在后边再加一个break

循环语句

while


for


do while


while循环

由于我们发现生活中很多的实际的例子是:同一件事情我们需要完成很多次。

那我们怎么做呢?

C 语言中给我们引入了: while 语句,可以实现循环。
//while 语法结构

while(表达式)

循环语句;

db3efcf9d5574725b2ecfdf4eb4f83a1.png


例如:打印1-10的数字

#include <stdio.h>
int main ()
{
int i = 1 ;
while ( i <= 10 )
{
printf ( "%d " , i );
i = i + 1 ;
}
return 0 ;
}

while语句中break和continue的使用

break是跳出该循环

continue是不进行该次循环的下面步骤,重新开始下一次的循环


break 在 while 循环中的作用:

其实在循环中只要遇到 break ,就停止后期的所有的循环,直接终止循环。

所以: while 中的 break 是用于 永久 终止循环的。

eg:

//break 代码实例
#include <stdio.h>
int main ()
{
int i = 1 ;
while ( i <= 10 )
{
if ( i == 5 )
break ;
printf("%d",i);
i=i+1;
}
return 0;
}这里代码输出的结果是什么?
1 2 3 4


continue 是用于终止本次循环的,也就是本次循环中 continue 后边的代码不会再执行,

而是直接跳转到 while 语句的判断部分。进行下一次循环的入口判断

eg:


//continue 代码实例 2
#include <stdio.h>
int main ()
{
int i = 1 ;
while ( i <= 10 )
{
    i = i + 1 ;
if ( i == 5 )
continue ;
printf ( "%d " , i );
}
return 0 ;
}
这里代码输出的结果是什么
1 2 3 4 6 7 8 9 10

for循环

语法

for ( 表达式 1 ; 表达式 2 ; 表达式 3 )
循环语句 ;

表达式 1

表达式 1 为 初始化部分 ,用于初始化循环变量的。

表达式 2

表达式 2 为 条件判断部分 ,用于判断循环时候终止。

表达式 3

表达式 3 为 调整部分 ,用于循环条件的调整。

eg:

打印1-10的数字

#include <stdio.h>
int main ()
{
int i = 0 ;
//for(i=1/* 初始化 */; i<=10/* 判断部分 */; i++/* 调整部分 */)
for ( i = 1 ; i <= 10 ; i ++ )
{
printf ( "%d " , i );
}
return 0 ;
}


07c27794dded67ebc66bfa848c008023.png


for和while比较

int i = 0 ;
// 实现相同的功能,使用 while
i = 1 ; // 初始化部分
while ( i <= 10 ) // 判断部分
{
printf ( "hehe\n" );
i = i + 1 ; // 调整部分
}
// 实现相同的功能,使用 while
for ( i = 1 ; i <= 10 ; i ++ )
{
printf ( "hehe\n" );
}

可以发现在 while 循环中依然存在循环的三个必须条件,但是由于风格的问题使得三个部分很可能偏离较

远,这样查找修改就不够集中和方便。所以,for 循环的风格更胜一筹; for 循环使用的频率也最高。

重点

// 请问循环要循环多少次?
#include <stdio.h>
int main ()
{
int i = 0 ;
int k = 0 ;
for ( i = 0 , k = 0 ; k = 0 ; i ++ , k ++ )
        k ++ ;
return 0 ;
}循环0次
//k=0直接是0,为假,直接不符合条件,跳出循环

do-while循环

语法

do
循环语句 ;
while ( 表达式 );

bb2872cf20587e45b35c449cd56f23bd.png

do-while的break和continue

#include <stdio.h>
int main ()
{
int i = 1 ;
do
{
        if ( 5 == i )
            break ;
printf ( "%d " , i );
        i = i + 1 ;
} while ( i <= 10 );
return 0 ;
}
#include <stdio.h>
int main ()
{
int i = 1 ;
do
{
        if ( 5 == i )
            continue ;
printf ( "%d " , i );
        i = i + 1 ;
} while ( i <= 10 );
return 0 ;
}


相关文章
|
5月前
|
Go C语言
分支语句与循环语句,详细讲解
分支语句与循环语句,详细讲解
|
5月前
|
数据安全/隐私保护
分支和循环语句(2)
分支和循环语句(2)
31 1
|
6月前
|
存储 缓存 Linux
分支与循环语句1
分支与循环语句1
40 0
|
6月前
|
缓存 编译器 Go
分支语句和循环语句
分支语句和循环语句
69 0
|
编译器 C语言 C++
分支语句和循环语句上
分支语句和循环语句
58 0
分支语句和循环语句上
|
11月前
|
数据安全/隐私保护 C语言
分支语句与循环语句(2)
分支语句与循环语句(2)
57 0
|
11月前
|
C语言
分支语句和循环语句(1)
分支语句和循环语句(1)
51 0
|
编译器
分支语句与循环语句题
分支语句与循环语句题
69 0
|
缓存 Go 数据安全/隐私保护
分支语句和循环语句下
分支语句和循环语句
74 0
|
算法 数据安全/隐私保护
分支语句与循环语句——练习
分支语句与循环语句——练习
49 0