介绍C语言分支循环语句

1.C语言中的控制语句

控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构:顺序结构、选择结构、循环结构),它们由特定的语句定义符组成。

c语言中常用的控制语句
  1. 条件判断语句也叫分支语句:if语句、switch语句;
  2. 循环执行语句:do while语句、while语句、for语句;
  3. 转向语句:break语句、goto语句、continue语句、return语句

2.分支语句 

2.1 if语句

2.1.1 if

if的使用如下 

if(表达式)
    {
    语句
    }
表达式成⽴(为真),则语句执⾏,表达式不成⽴(为假),则语句不执⾏ 。 也就是表达式的结果如果是0,则语句不执⾏,表达式的结果如果是 不是0,则语句执⾏。

    

   2.1.2 else    

else的使用要配合if,方法如下

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

如果表达式为假,则进行语句2.

2.1.3分⽀中包含多条语句

if语句本身只能控制一个语句,当if后面有多条语句时,只能执行一条

例如:

#include <stdio.h>
int main()
{
 int age = 0;
 scanf("%d", &age);
 if(age >= 18)
 printf("成年了\n");
 printf("可以谈恋爱了\n");
 return 0;
}

 以上程序需要判断是否成年给出能否谈恋爱的文字,但不管输入的数是多少,均会打印出可以谈恋爱。

此时可以看出if无法控制多条语句,我们需要吧if所控制的语句加上花括号({})进行操作。

例如:


#include <stdio.h>
int main()
{
 int age = 0;
 scanf("%d", &age);
 if(age >= 18) //if 后使⽤{} 控制多条语句-这个块也叫:程序块,或者复合语句

 printf("成年了\n");
 printf("可以交⼥朋友了\n");
 }
 else //else 后使⽤{}控制多条语句-这个块也叫:程序块,或者复合语句
 {
 printf("未成年\n");
 printf("不可以早恋哦\n");
 }
 return 0;
}

这样子可以实现if的多条语句控制。

2.1.4嵌套if

        在使用if语句的时候,往往会判断不止一个数据,此时一个if貌似已经力不从心了。这时候我们引入嵌套if。

        嵌套if:if else 语句中, else 可以与另⼀个 if 语句连⽤,构成多重判断。

例如:

#include <stdio.h>
int main()
{
 int num = 0;
 scanf("%d", &num);
 if(num == 0)
 printf("输⼊的数字是0\n");
 else if(num > 0) //这⾥的if 相当于嵌套在els语句中,形成了嵌套结构
 printf("输⼊的数字是正数\n");
 else
 printf("输⼊的数字是负数\n");
 
 return 0;
}

我们利用以上代码可以更快速的判断一个数的所属范围

以上就是嵌套if语句的语法,有了嵌套if语句,就可以完成更多复杂逻辑的判断。

3.1 switch语句

        
        除了 if 语句外,C语⾔还提供了 switch 语句来实现分⽀结构。
        switch 语句是⼀种特殊形式的 if...else 结构,⽤于判断条件有多个结果的情况。它把多重
else if 改成更易⽤、可读性更好的形式。
switch (expression) {
 case value1: statement
 case value2: statement
 default: statement
}
上⾯代码中,根据表达式 expression 不同的值,执⾏相应的 case 分⽀。如果找不到对应的值,
就执⾏ default 分⽀。
注:
switch 后的 expression 必须是整型表达式
case 后的值,必须是整形常量表达式

3.1.2switch语句中的break

        使用c语言写出一个switch语句

        :输⼊任意⼀个整数值,计算除3之后的余数
#include <stdio.h>
int main()
{
 int n = 0;
 scanf("%d", &n);
 switch(n%3)
 {
 case 0:
 printf("整除,余数为0\n"); 
 break;
 case 1:
 printf("余数是1\n"); 
 break;
 case 2:
 printf("余数是2\n"); 
 break;
 }
 return 0;
}

前⾯的代码中,如果我们去掉case语句中的break,会出现什么情况呢?

#include <stdio.h>
int main()
{
 int n = 0;
 scanf("%d", &n);
 switch(n%3)
 {
 case 0:
 printf("整除,余数为0\n"); 
 case 1:

 printf("余数是1\n"); 
 case 2:
 printf("余数是2\n"); 
 }
 return 0;
}

 

我们发现,7除以3本来余数是1,但是我们发现程序运⾏的结果多了⼀⾏“余数是2”的打印。
这是为什么呢?
原因是 switch 语句也是分⽀效果的,只有在 switch 语句中使⽤ break 才能在跳出 switch
句,如果某⼀个 case 语句的后边没有 break 语句,代码会继续玩下执⾏,有可能执⾏其他 case
语句中的代码,直到遇到 break 语句或者 switch 语句结束。就⽐如上⾯的代码就执⾏了 case
2 中的语句。
所以在 switch 语句中 break 语句是⾮常重要的,能实现真正的分⽀效果。
当然, break 也不是每个 case 语句都得有,这就得根据实际情况来看了。

3.1.3 switch语句中的case和default的顺序问题

switch 语句中 case ⼦句和 default ⼦句有要求顺序吗? default 只能放在最后吗?
其实,在 switch 语句中 case 语句和 default 语句是没有顺序要求的,只要你的顺序是满⾜实
际需求的就可以。
不过我们通常是把 default ⼦句放在最后处理的。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值