【比特鹏哥C语言_2.分支语句和循环语句】

C语言是结构化的程序设计语言!
顺序结构
选择结构 对应 分支语句
循环结构 对应 循环语句

第一节 分支语句:if 和 switch

什么是语句?
C语言中由一个分号;隔开的就是一条语句。比如

printf("haha");
;//这个叫空语句

一、 if语句

C语言如何表示真假:非0为真,0为假

1. if语句的语法结构:

//形式1
if(表达式)//表达式为真则执行
		语句;
//形式2
if(表达式)
		语句1//表达式为真则执行
else
		语句2//表达式为假则执行
//形式3多分支
if(表达式1)
		语句1else if(表达式2)
		语句2//如果没用{ }则只能控制一条语句!!!如果下面还有语句则不受其控制!!!
else
		{
   
		语句3;
		语句4}//用{ }可以执行多条语句;{}叫做代码块

/******** 举例 *************/

//形式1
int age=10;
if (age>=18)
	printf("成年\n");//结果什么都不显示
//形式2
int age=10;
if (age>=18)
	printf("成年\n");
else
	printf("未成年\n");
//形式3
int age=60;
if (age<18)
	printf("少年\n");
//else if (18<=age<26)//这种写法是错误的
//因为执行过程是这样的:age=60是大于18,所以为真,“18<=age”这一部分就变成了1,1<26,所以此语句为真
else if (age>=18 && age<26)//正确写法 
	printf("青年\n");
else if (age>=26 && age<40) 
	printf("中年\n");
else if (age>=40 && age<60) 
	printf("壮年\n");
else if (age>=60 && age<100) 
	printf("老年\n");
else 
	printf("神仙\n");

2. 悬空else

当你写了这样的代码:

int main()
{
   
	int a=0,b=2;
	if(a==1)
		if(b==2)
			printf("haha\n");
	else
		printf("xixi\n");
	return 0;
}

结果是:什么都不打印
因为else和最近的一个if匹配
上述代码相当于:

int main()
{
   
	int a=0,b=2;
	if(a==1)
	{
   
		if(b==2)
			printf("haha\n");
		else
			printf("xixi\n");
	}
	return 0;
}

代码风格养成——《高质量C/C++编程》

3.if语句书写形式对比

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

代码1和代码2相同,但选择代码2,因为代码1会使理解出错
当用常数和变量比较时,常量放左边,不易出错

//代码3
if (a==1)
//如果写成
//if(a=1)
//输出结果是一样的,但是代码逻辑错误
//为了避免这种错误,采用代码4的写法
printf("hahha");
//代码4
if (1==a)
printf("haha");

4.练习:

1.判断一个数是否为奇数
2.输出1-100之间的奇数

//1.判断一个数是否为奇数
int main()
{
   
	int num=0;
	scanf("%d",&num);
	if(num%2==1)
		printf("奇数");
	return 0;
}
//2.输出1-100之间的奇数
int main()
{
   
	int i=0;
	for(i=0;i<=100;i++)
	{
   
	if(i%2==1)
		printf("%d ",i);//%d后面用空格隔开
	}
	return 0;
}
//C++和C99支持这样写:
// for (int i = 1; i<=100; i++)

//写法2
	for(int i=1;i<=100;i+=2)//vs2022支持这样写
	{
   
		printf("%d ",i);//%d后面用空格隔开
	}

二、switch语句

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

输入1,输出星期一
输入2,输出星期二
输入3,输出星期三
输入4,输出星期四
输入5,输出星期五
输入6,输出星期六
输入7,输出星期七

如果写成if…else if …else if 的形式太复杂,那用switch语句可以使形式变简单

1.switch语句语法结构

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

语句项是什么?

//是一些case语句:
//如下:
case 整型常量表达式:
	语句;

注意细节:
case后面只能用整型!!常量表达式!!!
case决定的是执行的入口在哪里;break决定的是出口在哪里(break是用来跳出某一个分支,并不是一定要用
break语句的实际效果是把语句列表划分为不同的部分

/********** 举例 *************/

//用switch语句输出星期一~七
int main()
{
   
	int day = 0;
	scanf("%d",&day);
	switch (day)
	{
   
	case 1://如果day的值为1则执行:
		printf("星期1\n");
	case 2:
		printf("星期2\n");
	case 3:
		printf("星期3\n");
	case 4:
		printf("星期4\n");
	case 5:
		printf("星期5\n");
	case 6:
		printf("星期6\n");
	case 7:
		printf("星期7\n");
	} 
	return 0;
}

//实际上输出结果为:

输入:1 输入2
输出: 输出 :
星期1
星期2 星期2
星期3 星期3
星期4 星期4
星期5 星期5
星期6 星期6
星期7 星期7

所以 case 决定的是执行的入口在哪里
想要正确执行任务,需要用break来决定出口的位置(用来跳出某一个分支)

//用switch语句输出星期一~七
int main()
{
   
	int day = 0;
	scanf("%d",&day);
	switch (day)
	{
   
	case 1://如果day的值为1则执行:
		printf("星期1\n");
		break;//执行完则跳出
	case 2:
		printf("星期2\n");
		break;
	case 3:
		printf("星期3\n");
		break;
	case 4:
		printf("星期4\n");
		break;
	case 5:
		printf("星期5\n");
		break;
	case 6:
		printf("星期6\n");
		break;
	case 7:
		printf("星期7\n");
		break;
	} 
	return 0;
}
输入:1
输出:星期1

break并不是必须每个case都要用,而是按项目需求来使用
举例:

//1-5是工作日
//6-7是休息日
int main()
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值