分支语句简介

1. if语句

1.1 if

if 语句的语法形式如下:

if ( 表达式 )
 语句

表达式成⽴(为真),则语句执⾏,表达式不成⽴(为假),则语句不执⾏。
在C语⾔中,0为假,⾮0表⽰真,也就是表达式的结果如果是0,则语句不执⾏,表达式的结果如果是不是0,则语句执⾏。
例⼦:输⼊⼀个整数,判断是否为奇数

#include <stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
if(num % 2 == 1)
printf("%d 是奇数\n", num);
return 0;
}

在这里插入图片描述

1.2 else

如果⼀个数不是奇数,那就是偶数了,如果任意⼀个整数,我们要清楚的判断是奇数还是偶数怎么表
⽰呢?
这⾥就需要if...else...语句了,语法形式如下:

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

例⼦:输⼊⼀个整数,判断是否为奇数,如果是奇数打印是奇数,否则打印数偶数。

#include <stdio.h>
int main()
{
 int num = 0;
 scanf("%d", &num);
 if(num % 2 == 1)
 printf("%d 是奇数\n", num);
 else
 printf("%d 是偶数\n", num);
 return 0;
}

所以if语句的一般使用格式:

if( 判定条件)      //if 后使⽤{} 控制多条语句-这个块也叫:程序块,或者复合语句
{
执行语句
}
else{执行语句      //else 后使⽤{}控制多条语句-这个块也叫:程序块,或者复合语句
}

1.3 嵌套if

if else 语句中, else 可以与另⼀个if语句连⽤,构成多重判断。
⽐如:要求输⼊⼀个整数,判断输⼊的整数是0,还是正数或者负数。请看如下代码:

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

上图中的代码从注释1处的if到注释2就是嵌套在前⾯的 else ⼦句中的,构成了嵌套的if语句。

1.4悬空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;
 }

你可能以为打印haha,但这个程序执行完什么都不输出。
这就是悬空 else 的问题,如果有多个 if 和 else ,可以记住这样⼀条规则, else 总是跟最接近的 if 匹配。

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 后的值,必须是整形常量表达式
例:

#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;
}

1.1 switch语句中的default

在使⽤ switch 语句的时候,我们经常可能遇到⼀种情况,⽐如 switch 后的表达式中的值⽆法匹配代码中的 case 语句的时候,这时候要不就不做处理,要不就得在switch语句中加⼊default ⼦句。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值