c语言分支语句

目录

1、什么是语句

2.分支语句(选择结构)

2.1 if语句

2.1.2if书写形式的对比

2.1.3练习

2.2switch语句

2.2.2default子句

2.2.3练习


1、什么是语句

C语言语句分为以下五类

1.表达式语句

2.函数调用语句

3.控住语句

4.复合语句

5.空语句

本次介绍的是控制语句

控制语句:用于控制程序的执行流程,已实现程序的各种结构方式【顺序结构、选择结构、循环结构】,它们由特定的语句定义符组成,c元有九种控制语句。

可以成以下三个类:

 1.条件判断语句也叫分支语句:if语句、Switch语句;

 2.循环执行语句:do while语句、while语句、for语句;

 3.转向语句:break语句、goto语句、continue语句、return语句;

2.分支语句(选择结构)

好好学习考大学,不好好学烤地瓜。这就是选择!

2.1 if语句

那if语句的语法结构是怎么样的呢?

语法结构:
if(表达式) //表达式结果为真执行语句
    语句;


if(表达式) //表达式结果为真执行语句1、为假执行语句2
    语句1;
else
    语句2;

//多分支
if(表达式1) //表达式1结果为真执行语句1
    语句1;
else if(表达式2) ////表达式2结果为真执行语句2
    语句2;
else
    语句n;

默认if() 和else 后面只能控制一条语句,如果跟多条语句要带{ }。

解释:

如果表达式的结果为真,则语句执行。

在C语言中 0 表示假,非 0 表示真。

如果条件成立,要执行多条语句,应使用代码块{ }。一对{ }就是一个代码块。

2.1.2if书写形式的对比

//代码1 ; 条件满足返回x 不满足返回y
if(condition)
{
    return x;
}
return y;


//代码2
if(condition)
{
    return x;
}else
{
    return y;    
}

// 代码1和2相同但是代码2更方便阅读

//判断条件技巧
num = 1;
if(5 == num) //比较技巧防止出现写一个等号。
{
    printf("haha\n");    
}

2.1.3练习

1.判断一个数是否为奇数

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

2.输出1-100的奇数

//代码1 
#include<stdio.h>
int main()
    {int i = 0;
    	while(i < 100)
    	{
    		if(i % 2 == 1)
    		{
    			printf("%d ", i);
			}
			i++;
		}
    return 0;
}
//代码2
#include<stdio.h>
int main()
    {int i = 1;
    	while(i < 100)
    	{
    		printf("%d ", i);
			i = i + 2; 
		}
    return 0;
}

2.2switch语句

switch语句也是一种分支语句,常常用于多分支的情况。

比如:

        输如1 ,输出星期一

        输如2,输出星期二

         输如3 ,输出星期三

         输如4 ,输出星期四

         输如 5,输出星期五

         输如 6,输出星期六

         输如7 ,输出星期七

那我没写成if...else if ...else if 的形式太复杂,那我们就得有不一样的语法形式。这就是switch语句。

switch语法结构

switch(整型表达式)
{
    语句项;
}

什么事语句项

是一些case语句;

case 整型常量表达式; //必须是整形 常量  字符也可以因为字符本身以整形的形式存放
    语句;

2.2.1在switch语句中的break

在switch语句中,我们没办法直接实现分支,搭配break使用才能实现真正的分支。

比如:

#include<stdio.h>
int main()
    {
    	int day = 0;
    	scanf("%d", &day);
    	switch(day)
    	{
    		case 1:
    			printf("星期一"); 
    			break;
    		case 2:
    			printf("星期二");
    			break;
    		case 3:
    			printf("星期三");
    			break;
			case 4:
    			printf("星期四");
    			break;
    		case 5:
    			printf("星期五");
    			break;
    		case 6:
    			printf("星期六");
    			break;
    		case 7:
    			printf("星期七");
    			break;	
		}
    return 0;
}

改变需求:

   1.输入1-5,输出是的是“weekday”

   2.输入6-7,输出“weekend”

所以我们的代码就应该这样实现了

#include<stdio.h>
int main()
    {
    	int day = 0;
    	scanf("%d", &day);
    	switch(day)
    	{
    		case 1:
    		case 2:
    		case 3:
			case 4:
    		case 5:
    			printf("weekday");
    			break;
    		case 6:
    		case 7:
    			printf("weekend");
    			break;	
		}
    return 0;
}

break语句的实现效果是把语句列表会划分为不同的分支部分。

编程好习惯

在最后一个case语句的后面加上一条break语句。

(之所以这么写是可以避免出现以前的最后一个case语句后面忘了添加break语句)。

2.2.2default子句

如果表达式的值与所有的case标签的值都不匹配怎么办?

其实也没什么,结构就是所有的语句都被跳过而已。

程序并不会终止,也不会报错,因为这种情况再C语言中并不认为是个错误。

但是,如果你并不想忽略不匹配所有标签的表达式的值时该怎么办呢?

你可以在语句列表中增加一条default子句,把下面的标签
default:

写在任何一个case标签可以出现的位置。

当switch表达式的值并不匹配所有case标签的值时,这个default子句后面的语句就会执行。

所以,每个switch语句中只能出现一条default子句。

但是它可以出现在语句列表的任意位置,而且语句流执行一个case标签一样执行得分ault子句。

编程好习惯

在每个switch语句中都放一条default子句是个好习惯,甚至可以在后面再加一个break。

2.2.3练习

#include<stdio.h>
int main()
    {
    	int n = 1;
		int m = 2;
		switch(n)
		{
			case 1:m++;
			case 2:n++;
			case 3:
				switch(n)
				{
					case 1:n++; 
					case 2:m++;n++;
					break;
				}
			case 4:
				m++;
				break;
			default:
				break;
		}
	printf("m = %d, n = %d",m,n);
    return 0;
}

输出结果

m = 5, n = 3

switch语句可以嵌套,break语句只会跳出所在的switch语句

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值