分支语句和循环语句

一、前言

什么是语句:
C语句可分五类:
1、表达式语句

3+5;

2、函数语句

printf("%d",n);//调用库函数中的打印函数 

3、控制语句
控制语句用于控制程序的执行流程,以实现程序的各种结构方式,他们由特定的语句字符构成,C语言有9种控制语句
C语言支持三种结构:顺序结构,选择结构,循环结构
控制语句可以分为三类:(主要讲这个部分)
条件判断语句也叫分支语句:if语句,switch语句
循环执行语句:do while语句,while语句,for语句
转向语句:break语句,goto语句,continue语句,return语句

4、复合语句
5、空语句

{
	;//没有任何内容的语句
}

二、分支语句

分支语句主要分为if和else两大类

1、if

if选择和分支的情况又分为这几种:单分支、双分支(二选一)、多分支(多选一)
1、单分支:
if(表达式)
语句;

int main()
{
       //如果年龄大于18则为成年人
       int age = 0;
       scanf("%d", &age);
       if (age >= 18)//单个分支 不满足程序结束
       {
              printf("成年人\n");
       }
       return 0;
}

在这里插入图片描述在这里插入图片描述
2、双分支(二选一)
if(表达式)
语句1;
else
语句2;

int main()
{
       //如果年龄大于18为成年人
       //否则为未成年人
       int age = 0;
       scanf("%d", &age);
       if (age >= 18)//二选一 双分支
       {
              printf("成年人\n");
       }
       else
              printf("未成年人\n");
       return 0;
}

在这里插入图片描述在这里插入图片描述
3、多分支(多选一)
if(表达式1)
语句1;
else if(表达式2)
语句2;
else(表达式3)
语句3;

int main()
{
       //age<18  - 未成年
       //18~30   - 青年
       //31~50   - 中年
       //51~70   - 中老年
       //71~99   - 老年
       //>99     - 老寿星
       int age = 0;
       scanf("%d", &age);
       if (age < 18)//多分支 多选一             
       {
              printf("未成年\n");
       }
       else if (age <= 30)
       {
              printf("成年\n");
       }
       else if (age <= 50)
       {
              printf("中年\n");
       }
       else if (age <= 70)
       {
              printf("中老年\n");
       }
       else if (age <= 99)
       {
              printf("老年\n");
       }
       else
              printf("老寿星\n");
       return 0;
}

在这里插入图片描述

使用if时要注意,if是一条语句,同理if else,合在一起也为一条语句
还需要注意的是else的匹配问题:else总是和离它最近的if去匹配除非用大括号括起来

2、switch


switch语句也是分支语句
常常用于多分支的情况
switch(整型变量表达式)
{
语句项;
}
语句项是一些case语句
如下
case 整型变量表达式:
语句;
在switch语句中的break(起到了跳出switch分支的效果)
在switch语句中无法实现真正的分支,搭配break语句才可以实现真正的分支

//输入1,表示星期一
//输入2,表示星期二
//输入3,表示星期三
//输入4,表示星期四
//输入5,表示星期五
//输入6,表示星期六
//输入7,表示星期天
int main()
{
       int day = 0;
       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("输入错误\n");
              break;
       }
       return 0;
}

1、switch语句中需要的是满足括号中的整型表达式只能确定进入的入口,是否结束则未知,直到遇到break或者运行到最后一条语句为止,才会结束。
2、在switch语句中须知default的位置是可以任意放置的,但是出于习惯一般放在switch的最后。
3、switch语句是可以嵌套使用的。
编程习惯建议:
1、在最后的case语句上加上break。
2、在每个switch语句末尾加上default
一段错位代码

int main()
{
    int day = 0;
    scanf("%d", &day);
    switch (day)
    {
    case 1:
        printf("星期一\n");   
    case 2:
        printf("星期二\n");
    case 3:
        printf("星期三\n");
    case 4:
        printf("星期四\n");
    case 5:
        printf("星期五\n");
    case 6:
        printf("星期六\n");
    case 7:
        printf("星期天\n");
    default:
        printf("输入错误\n");
    }
    return 0;
}

在这里插入图片描述

三、循环语句

循环语句是编程中经常使用的语句,主要分为,while,for,do while语句

1、while

while语句的执行与if相似,在于满足条件执行,不满足条件不执行(非0为真,0为假),区别在于if只会执行一次而while根据条件执行多次。
while(表达式)
循环语句;

//打印1~10的数字
int main()
{
       int i = 1;
       while (i <= 10)
       {
              printf("%d ", i);
              i++;
       }
       return 0;
}

在这里插入图片描述

(1) break

下面来介绍一下下while语句中的break和continue语句
首先是break语句
break在while循环中的作用是,只要循环中遇到break语句,停止所有循环,循环直接终止
因此:while中的break是用来永久终止循环的

int main()
{
    int i = 1;
    while (i <= 10)
    {
        if (5 == i)
            break;  //当i=5的时候break终止整个循环 所有屏幕上打印的是1~4后面的都不打印因为循环已经结束
        printf("%d ", i);
        i++;
    }
    return 0;
}

在这里插入图片描述

(2) continue

while循环中的continue的作用是:跳过本次循环continue后面的代码,直接跳转到判断部分,判断是否进入下一次循环

int main()    
{
       int i = 1;
       while (i <= 10)
       {
              if (5 == i)
                     continue;//当i=5的时候continue跳过这次循环,忽略后面的语句,直接跳转的判断部分,满足条件进入循环,再次遇到continue i依旧等于5,i的值始终没有变化,因此造成死循环。
              printf("%d ", i);
              i++;
       }
       return 0;
}

在这里插入图片描述

2、for

for(表达式1;表达式2;表达式3)
{
循环语句;
}
表达式1:
表达式1为初始化部分,用于初始化变量的 ,该表达式在整个循环仅处理一次
表达式2:
表达式2为条件判断部分,用于判断循环时候终止
表达式3:
表达式3为调整部分,用于循环条件的调整
在这里插入图片描述
注意:
1、for循环中i为初始化部分,整个循环过程中只执行一次,可以省略。
2、i<=10为判断部分
3、{}里面是循环要执行的部分
4、i++是调整部分
5、for循环的执行顺序是从i=1,开始执行一次,然后2,3,4循环执行

(1) break

for循环中的break和while中的break的用法和效果一模一样,只要遇到break,循环直接结束

int main()
{
    int i = 0;
    for (i = 1; i <= 10; i++)
    {
        if (5 == i)
            break;//遇到break 循环直接结束
        printf("%d ", i);
    }
    return 0;
}

在这里插入图片描述

(2) continue


在for循环中如果使用continue,直接跳过continue后面的代码直接跳转到循环的调整部分(while和for稍有区别)

int main() 
{
    int i = 0;
    for (i = 1; i <= 10; i++)
    {
        if (5 == i)
            continue;//遇到continue 后面代码忽略 直接跳转到i++ (这里是与while不同的地方)
        printf("%d ", i);
    }
    return 0;
}

在这里插入图片描述
建议:
1、不可以在for循环的内部修改循环变量,防止for循环失去控制
2、建议for循环使用前闭后开的写法(比如i=1;i<10)

3、do while

do
{
循环语句;
}while(表达式);
do while 循环中的break和continue与while中的使用方式一样
do while 循环至少执行一次,使用场景有限,不经常使用

int main()
{
    int i = 1;
    do  //do while循环先执行一次然后再判断是否进行循环 这里是与while的区别
    {
        printf("%d ", i);
        i++;
    } while (i <= 10);
    return 0;
}

在这里插入图片描述

四、goto 语句

C语言提供了可以随意滥用的goto语句和标记跳转的标号
goto语句不能随意乱用,使用过多会导致程序逻辑的紊乱
goto语句基本上只用于在跳出多层循环中使用,避免了多个break的使用

//电脑将在1分钟之内关机,如果输入我是猪,就取消关机
int main()
{
    //这个是goto的写法 其实可以写成循环的形式没有必要去写成goto 能不用goto就不要用goto
    char input[20] = { 0 };
    system("shutdown -s -t 60");
again:
    printf("电脑将在1分钟之内关机,如果输入我是猪,就取消关机!\n");
    printf("请输入:>");
    scanf("%s", input);
    if (strcmp(input, "我是猪") == 0)
        system("shutdown -a");
    else
        goto again;
    return 0;因此没有必要去
}

这里的go to语句可以用循环来代替效果是一模一样的,因此goto语句是可以完全不去使用的。

int main()
{
       //这个是循环的版本 效果一模一样
       char input[20] = { 0 };
       system("shutdown -s -t 60");
       while(1)
       {
              printf("电脑将在1分钟之内关机,如果输入我是猪,就取消关机!\n");
              printf("请输入:>");
              scanf("%s", input);
              if (strcmp(input, "我是猪") == 0)
              {
                     system("shutdown -a");
                     break;
              }
       }
       return 0;
}

五、总结

到这里就是我所知道有关分支与循环的所有内容了,如果有出错的地方和不足的地方欢迎各位大佬前来指正。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值