C语言分支循环语句(上)

1.前言

C语⾔是结构化的程序设计语⾔,这里的结构是指,顺序分支循环结构。实现这些结构的语句我们称之为控制语句,如:实现分支结构的 if , switch 语句,实现循环结构的 for , while ,do while语句,今天,我们就来聊一聊让新手程序员屡试不爽的 if  swicth语句

2.if语句 

2.1 if语句的语法形式

单分支if语句

if(表达式)
{
 语句
}
  

小括号内表达式为真,则执行大括号内的语句 。在C语言中,0表示假非0表示真也就是说,如果表达式结果为0,则执行;结果非0,则不执行。

双分支if语句

if(表达式)
{
语句1
}
else
{
语句2
}

所有不满足小括号中表达式的情况,会进入else分支内。在不加大括号的情况下,if   else 均默认仅控制一条语句,所以若仅有一条语句需要执行可以不加大括号(但避免出现bug,建议初学者还是加上

嵌套if语句



 if(表达式1)
 {
   语句1
 }

 else if(表达式2) //这⾥的if 相当于嵌套在els语句中,形成了嵌套结构
 {
   语句2
 }
 else
{
   语句3
}


if else 语句中, else 可以与另⼀个 if 语句连⽤ 构成多重判断,达到实现多分支的效果

 2.2悬空else问题

如果有多个 if else ,可以记住这样⼀条规则: else 总是跟最接近的 if 匹配。
 #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;
 }

例如,上面的代码不满足第一个if的表达式,而唯一的else是与第二个if相匹配,同时第一个if又控制第二个if语句。所以程序运行的结果就是什么都不打印。

不知道大家在初次看见上述代码时,会不会跟我一样一脸懵!倒不如把上面的代码换一种规范的写法。

 

#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;
}
只要 带上适当的⼤括号 ,代码的逻辑就会更加的清晰,所以⼤家以后在写代码的时候要注意括号的使用,让代码的可读性更⾼。

3.swicth语句

除了 if 语句外,C语⾔还提供了 switch 语句 来实现分⽀结构。
switch 语句是⼀种特殊形式的 if...else 结构,⽤于 判断条件有多个结果的情况

3.1switch语句的语法形式

switch (表达式)
{
 case value1: 
语句1
 case value2: 
语句2

}
上⾯代码中,根据表达式表达式不同的值(value),执⾏相应的 case 分⽀。另外值得注意的是:
   • switch 后的表达式必须是整型表达式
   • case 后的值,必须是整形常量表达式

 3.2switch语句中的break和default

  C语言中规定关键字break只能出现在循环语句和开关中。无疑,这里的break属于后者。如果说case是开始执行该分支的入口,那么break就是执行完该分支后的出口。所以除非多个case共用一条语句,尽量在语句后面加上break。例如

#include <stdio.h>
int main()
{
 int day = 0;
 scanf("%d", &day);
 
 switch(day)
 {
 case 1:
 case 2:
 case 3:
 case 4:
 case 5:
 printf("⼯作⽇\n");
 break;
 case 6:
 case 7:
 printf("休息⽇\n");
 break;
default:
printf("输入错误\n");
break;
 }
 return 0;
}
  在使⽤ switch 语句的时候,我们经常可能遇到⼀种情况,比如 switch 后的表达式中的值⽆法匹
配代码中的 case 语句的时候,这时候要么就不做处理,要么就得在 switch 语句中加⼊ default ⼦句。例如上面的代码,当我们手抖输了个8,这时没有对应的value值,就进入default子句中打印“输入错误”,来提醒用户。
  在 switch 语句中 case 语句和 default 语句是没有顺序要求的 ,所以我们可以根据实际需求来调整其顺序, 不过通常我们是把 default ⼦句放在最后处理的。

总结

switch语句相较于if 语句更加易用,可读性更好,但同时使用条件也更加苛刻。在我们熟练掌握两种语句后灵活使用,总能收到意想不到的效果

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值