【C语言知识梳理之分支语句】

C语言的三种基本结构

C语言是结构化的程序设计语言:分为三种基本结构
顺序结构,选择结构,循环结构。

顺序结构

顺序结构就是从开到到结尾,依次往下。

选择结构

分支语句

  • if
  • switch
循环结构

循环语句

  • while
  • for
  • do while

go to语句

什么是语句?

C语言中有一个分号;隔开的就是一条语句。
但请特别注意:并不是所有的语句都必须以分号结尾,比如{}和预处理指令(#include)

int main()
{
	;//只有一个分号的叫空语句
	return 0;
}

分支语句(选择结构)

基本语法:
if语句
if(表达式)
	语句;if(表达式)
{
	语句1;
}
else
	语句2;
以及:
多分支
if(表达式)
{
	语句1;
}
else if(表达式)
{
	语句2;
}
else
	语句3;

注意:C语言用0和非0来区分真假,0就是假,非0就是真

典型例题:
int main()
{
	int age = 60;//此处的age为60
	if(age<18)
	printf("少年\n") ;
	else if(18<=age<26)//此处语法没错,但逻辑有误
	printf("青年\n");
	return 0;//运行结束后的结果为60
}

解释:此段代码运行结束后的结果为"青年",但请注意,这里age是60,在else if语句处,18<=age时,age直接带入60,计算机运行后结果为真,直接返回了一个非0的数字(一般为1),而此时的1确实<26,所以条件相符,输出打印青年,语法合格但逻辑不对因此,我们要避免连写,或者使用逻辑运算符 && 和 || 。

典型例题2(悬空else):
int main()
{
	int a=1;
	int b=2;
	if(a==0)
		if(b==2)
		printf("hehe");
	else
		printf("123");//运行结果什么都不打印
	return 0;
}

解释:此段代码运行结束后什么也不打印,因为else在运行时自动缩进,else匹配到了if(b==2)这条语句,而第一个if(a!=0),语句条件不符,就没有进入语句而是直接return 0返回。

if语句练习:
  1. 判断一个数是否为奇数
    if(a%2==1)
  2. 输出1-100之间的奇数
int main()
{
	for(int i = 0 ; i < 101 ; i++)
	{
		if(i % 2 == 1)
			printf("%d\n",i);
	}
	return 0;
}
switch语句

switch常用于多分支的情况
如:
输入1,输出星期一
输入2,输出星期二
输入3,输出星期三
输入4,输出星期四

语法:

switch(整型表达式)//必须是整型表达式
	{
		语句项;
	}
语句项是一些case语句//也必须是整型常量表达式,只能是常量,也可以写1+0
case 整型常量表达式:
	语句;

注意:字符char也是整型的一种,因为计算机中会转化为ASCII码值

典型例题:
int main()
{
	int day = 0;
	scanf("%d\n",&day);
	switch(day)
		case 1:
			printf("周一");
		case 2;
			printf("周二");
		case 3;
			printf("周三");
		case 4;
			printf("周四");
		case 5;
			printf("周五");
	return 0;//输入1后,运行结果为逐行打印,因为没有跳出语句
}

所以,我们要在每一个case后用一个break来实现真正的分支,但不是每一个case都必须加break,依据自己的需求决定。

switch(day)
{
		case 1:
			printf("周一");
			break;
		case 2;
			printf("周二");
			break;
		case 3;
			printf("周三");
			break;
		case 4;
			printf("周四");
			break;
		case 5;
			printf("周五");
			break;
}

只要没有break就会一直向下运行,直到break跳出。
在switch语句中还有一种default默认语句(无规定顺序)

switch(day)
{
		case 1:
			printf("周一");
			break;
		case 2;
			printf("周二")break;
		default//此时case只有1,2,如果输入其他的数字会自动跳转默认default
			printf("输入错误");
			break;
}

练习:判断m ,n的值

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\n",m,n);
	return 0;//运行结果5,3
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值