c语言分支语句

分支语句一般用 if语句和switch语句 来实现

一 if语句

 1.if

语法形式

if(表达式)

       语句

if 语句执行流程

表达式成⽴(为真),则语句执⾏,表达式不成⽴(为假),则语句不执⾏
2. else
语句形式
if(表达式)
        语句1
else
        语句2
如果,表达式中的条件成立就输出语句1,不成立就是输出语句2。
  举个例子(输入一个年龄,>=18输出成年,否则输出未成年。)
#include <stdio.h>
int main()
{
 int age = 0;
 scanf("%d", &age);
 if(age>=18)
 printf("成年\n");
 else
 printf("未成年\n");
 return 0;
}

但是有时候 我们在输入时要用大括号{}。下面举个例子。

#include <stdio.h>
int main()
{
 int age = 0;
 scanf("%d", &age);
 if(age>=18)
 printf("成年\n");
 printf("要对自己负责\n");
 else
 printf("未成年\n");
 return 0;
}

如果语句1没有{},那么无论是>18还是<18都会输出“要对自己负责”。这时在语句1的位置就要加上{}。

#include <stdio.h>
int main()
{
 int age = 0;
 scanf("%d", &age);
 if(age>=18)
{
 printf("成年\n");
 printf("要对自己负责\n");
}
 else
 printf("未成年\n");
 return 0;
}

4. 嵌套if

在if else语句中,会出现嵌套的形式,比如在else后的语句2中在一些情况下(根据题目)会来一个if else语句。

举例说明:
 

int main()
{
	int n = 0;
	scanf("%d", &n);
	if (n == 0)
		printf("输入的值是0\n");
	else
	{
		if (n > 0)
			printf("输入的值是正数\n");
		else
			printf("输入的值是负数\n");
	}
	return 0;
}

这种情况有更简洁的方法

int main()
{
	int n = 0;
	scanf("%d", &n);
	if (n == 0)
		printf("输入的值是0\n");
	else if (n > 0)
			printf("输入的值是正数\n");
	else
			printf("输入的值是负数\n");
}
	return 0;
}

这种形式更简洁

在if else 语句中,如果有多个 if else ,可以记住这样⼀条规则, else 总是跟最接近的 if 匹配。
我们⾸先从下⾯代码开始。
二 switch 语句
switch 语句是⼀种特殊形式的 if...else 结构,⽤于判断条件有多个结果的情况。它把多重
else if 改成更易⽤、可读性更好的形式。
语法形式
switch (expression)
{
case value1: statement
break
case value2: statement
break
default : statement
}
注意:
switch 后的 expression 必须是整型表达式
  case 后的值,必须是整形常量表达式
下面是一个例子:输入任意一个整数值,计算除三之后的余数。
用if语句:
#include <stdio.h>
int main()
{
 int n = 0;
 scanf("%d", &n);
 if(n%3 == 0)
 printf("整除,余数为0\n");
 else if(n%3 == 1)
 printf("余数是1\n");
 else
 printf("余数是2\n");
 return 0;

用switch语句:

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

2.switch中的break

注意break,break的作用是跳出switch语句,没有break的话代码会继续执行就会执行下面的case语句。

switch 语句中 break 语句是⾮常重要的,能实现真正的分⽀效果。
当然也不是每个case语句中都有break,要根据实际情况来区分。
下面举一个例子
输入1-5,输出“工作日”
输入6-7,输出“休息日”
#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;
 }
 return 0;
}

3.switch中的default

switch后的expression的结果不是value1,也不是value2的时候,就会执行default语句。

比如上面的例子输入8,没有与之匹敌的case,就会执行default语句

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

  • 13
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值