IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 从0开始学c语言-11-if分支语句、switch分支语句 -> 正文阅读

[C++知识库]从0开始学c语言-11-if分支语句、switch分支语句

本人0基础开始学编程,我能学会的,你也一定可以,学会多少写多少。

下载安装请从官网入手,社区版本即可,这里主要使用的软件是VS2019,图标如下。

上一篇:从0开始学c语言-10-结构体以及一些作业_阿秋的阿秋不是阿秋的博客-CSDN博客

C语言是结构化的程序设计语言:顺序结构、选择结构、循环结构

C语句可分为以下五类:
????????1. 表达式语句
????????2. 函数调用语句
????????3. 控制语句
????????4. 复合语句
????????5. 空语句
????????控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成, C 语 言有九种控制语句,可以分为以下三类:

????????1. 条件判断语句也叫分支语句 if 语句、 switch 语句;
????????2. 循环执行语句 do while 语句、 while 语句、 for 语句;
????????3. 转向语句 break 语句、 goto 语句、 continue 语句、 return 语句。

目录

if语句

语法结构

代码演示

请思考这么写行不行?

书写风格

else的位置

return的认识

return和else的终极混合

常量与“=”

练习

判断一个数是不是奇数

输出1到100之间的奇数

switch语句

语句结构

代码演示

加上break

加上default

输入小数会发生什么?

编写注意

练习

1、找break和switch

2.判断应该执行的语句

3.执行时候注意break

总结


if语句

语法结构

第一种第二种第三种(多分支)
if ( 表达式 )
? ? 语句 ;
if ( 表达式 )
? ? 语句 1 ;
else
? ? 语句 2 ;
if ( 表达式 1 )
? ? 语句 1 ;
else if ( 表达式 2 )
? ? 语句 2 ;
else
? ? 语句 3 ;

由一个 分号隔开的就是一个 语句
如果表达式 为真就执行语句,为假就不执行。

代码演示

int main()
{
    int age=20;
	if (age >= 18)
		printf("成年人");
	return 0;
}

这是第一种书写方式。

int main()
{
	
	int age=99;
	if (age >= 18)
		printf("成年人");
	else
		printf("未成年人");  //else只管这句
		printf("不能结婚");  //这句独立的,如果要两句一起需要加大括号
	
	return 0;
}

这是第二种书写方式,注意注释中的解释。

int main()
{
	int age = 45;
	if (age < 18)
		printf("未成年");
	else if (age <= 30)  //age>=18 && age<=30,也可以这么写,因为else已经默认>=18
		printf("最好的年纪");
	else if (age <= 40)
		printf("漫长的十年");
	else if (age <= 50)
		printf("富有的日子");
	else
		printf("有趣的日子");  //else不是必须有
	return 0;
}
这是第三种运行方式,请运行并尝试 自己独立敲出代码
else if (18 <= age < 30) 
    printf("最好的年纪");

请思考这么写行不行?

答案:这样写会恒为真18<=age为真就判定为1,然后1<30就为真,就执行语句。

注:0表示假,非0表示真。

书写风格

else的位置

int main()
{
	int a = 2;
	int b = 9;
	if (a == 3)
		if (b == 9)
			printf("love");
	else
		printf("aqiu");

	return 0;
}

猜猜这段代码打印出来的结果是?

什么也不会打印出来!

因为else和离他最近的if语句进行匹配,所以什么都没有打印。

所以这段代码实际上应该是这样子更加清晰的,

int main()
{
	int a = 2;
	int b = 9;
	if (a == 3)
    {
		if (b == 9)
			printf("love");
	    else
		    printf("aqiu");
    }
	return 0;
}

虽然两段代码意思一样,但是不同的书写风格会带来很大的区别。

良好风格建议:看这本书,高质量c/c++编程(小白看前三章就行了)

(后续免费补充资源,好多都要积分的呀)

return的认识

int ai()  //注意加函数的括号
{
	if (1)
		return 9;
	return 0;
}
int main()
{
	ai();//执行函数的时候按f11
	return 0;
}

请猜猜最后会执行哪几个return?

答案是两个。

????????return 语句可以有多个,可以出现在函数体的任意位置,但是每次调用函数只能有一个 return 语句被执行,所以只有一个返回值。

return和else的终极混合

?看两段代码,判断一下他们的意思是否一样。

if (condition) 
{
 ? ?return x; 
}
return y;
if(condition)
 {
 ? ?return x; 
}
else
{?
    return y; 
}

答案:一样。

虽然第一段代码并没有else,但是因为有return的影响,所以两段代码达到了一样的效果。
????????当if语句为 ,两段代码都只执行return x
????????当if语句为 ,两段代码都只执行return y

常量与“=”

int main()
{
	int a = 3;
	if (a = 4) //会有警告但是能够运行(能运行是因为为真,这里不是等于而是赋值的意思
		printf("aqiu");
	
	return 0;
}

是不是没注意到“=”和“== ”的区别呢?

int main()
{
	int a = 3;
	if (4 == a)  //书写的时候把常量放在左边,如果忘了=就不运行
		         //!=也是一样的道理,这就是好的代码风格
		printf("aqiu");
	return 0;
}

我们把常量放在左边就不会忘记是两个“=”了,因为它会提示错误。

练习

判断一个数是不是奇数

int main()
{
	int a = 0;
	scanf("%d", &a); //别加\n,加了有点问题
	int c = a % 2;
	if (0 != c)
		printf("是奇数");
	else
		printf("是偶数");

	return 0;
}

输出1到100之间的奇数

写了四种,大家看看区别。

第一种:使用了函数、static修饰的局部变量、while循环。

void add()
{
	static int c = 1;
	printf("%d\n", c);
	c = c + 2;
}
int main()
{
	int i = 0;
	while(i<50)
	{
		add();
		i++;
	}
	return 0;
}

第二种while循环语句中的static修饰的局部变量、if语句

int main()
{
	int i = 0;
	while (i<100)
	{	
		static int a = 0;
		if (0 != (a % 2))
			printf("%d\n", a);
		a++;
		i++;
	}
	return 0;
}

第三种:for循环

int main()
{
	int i = 0;
	for (i = 1; i <= 100; i+=2)
	{
		printf("%d ", i); //%d后面加个空格,不然会挤在一起
	}
	return 0;
}

第四种for循环if语句

int main()
{
	int i = 0;
	for (i = 1; i <= 100; i++)
	{
		if (i % 2 == 1)
			printf("%d ", i); //%d后面加个空格,不然会挤在一起
	}
    return 0;
}

小白可能看不懂for语句,后续会讲。

switch语句

常常用于多分支的情况,情况太多的话用if很累。

语句结构

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

语句项是这样的

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

代码演示

按照上面的结构,写一个这样的代码:

输入 1 ,输出星期一
输入 2 ,输出星期二
……
int main()
{
	int day = 0;
	scanf("%d", & day); 
	switch ( day ) //day必须是整型
	{
	case 1:        //入口,1必须是常量表达式,写成1+0也可以
		printf("星期1\n");
	case 2:
		printf("星期2\n");
	case 3:
		printf("星期3\n");
	case 4:
		printf("星期4\n");
	}
    return 0;
}

?可以看到,并没有达到我们想要的结果。

按理来说,1应该只输出星期1才对,但是它把不符合情况的都打印了。

这时候就需要

加上break

int main()
{
	
	int day = 0;
	scanf("%d", & day);
	switch ( day ) //day必须是整型
	{
	case 1://入口,1必须是常量表达式,写成1+0也可以
		printf("星期1\n");
		break;//出口
	case 2:
		printf("星期2\n");
		break;
	case 3:
		printf("星期3\n");
		break;
	case 4:
		printf("星期4\n");
		break;
	}
	return 0;
}

break结束离他最近的switch。

它的实际效果是把语句列表划分为不同的分支部分

但是,如果我输入的数字在case中没有对应的情况该怎么办?

这时候就请

加上default

每个switch语句中只能出现一条default子句。
但是它可以出现在语句列表的任何位置,而且语句流会像执行一个 case 标签一样执行 default 子句。
int main()
{
	int day = 0;
	scanf("%d", &day); 
	switch (day)  //day必须是整型
	{
	case 1:
	case 2:
	case 3:
		printf("玩\n");  //123的情况是玩
		break;
	case 4:
		printf("学习\n");
		break;    //break结束离他最近的switch
	default:      //指其他情况
		printf("睡大觉");
		break;
	              //这其中的default等没有顺序要求,可以写在前面
	}
	return 0;
}

输入小数会发生什么?

?可以看到,只会取整数部分

编写注意

????????1、在最后一个 case 语句的后面加上一条 break语句
?????????????(可以避免出现,在之前的最后一个 case 语句后面忘了添加 break语句)。
????????2、 在每个 switch 语句中都放一条default子句是个好习惯,在后边再加一个 break 。

练习

猜猜m和n等于什么?

int main()
{
	int n = 1;
	int m = 2;
	switch (n)
	{
	case 1:m++;
	case 2:n++;
	case 3:
		switch (n)
		{//switch允许嵌套使用
		case 1:
			n++;
		case 2:m++;n++;
			break;
		}
	case 4:m++;
		break;
	default:
		break;
	}
	printf("m = %d, n = %d\n", m, n);
	return 0;
}

先不说正确答案,跟着我思路来一下。

1、找break和switch

这是第一个switch和它所对应的break。?

?

?这是第二个switch和它所对应的break。?

就像我们上面演示的代码,如果没有break,那会是这样的情况。

输入case对应整型表达式结果后并执行相应语句,在遇到break之前把输入对应case之后所有case后的语句都执行不管是否符合case所对应的情况。

2.判断应该执行的语句

那么,按照这个思路,我们看看这个代码该如何执行?

?按照上面那句话的结论,

输入case对应整型表达式结果后并执行相应语句,在遇到break之前,把输入对应case之后所有case后的语句都执行不管是否符合case所对应的情况。

那么我们应该执行的语句是从case1 到case4。

3.执行时候注意break

?答案已经出现了,m=5,n=3。

总结

????????1.由一个分号隔开的就是一个语句
????????如果表达式为真就执行语句,为假就不执行。

????????2.else和离他最近的if语句进行匹配

? ? ? ? 3.return 语句可以有多个,可以出现在函数体的任意位置,但是 每次调用函数只能有一个 return 语句被执行,所以只有一个返回值。

????????4.break结束离他最近的switch。它的实际效果是把语句列表划分为不同的分支部分

????????5.每个switch语句中只能出现一条default子句。 但是它可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句。

????????6.好的编写习惯

1、在最后一个 case 语句的后面加上一条 break语句
?????????????(可以避免出现,在之前的最后一个 case 语句后面忘了添加 break语句)。
2、 在每个 switch 语句中都放一条default子句是个好习惯,在后边再加一个 break 。
????????7. 输入case对应整型表达式结果后并执行相应语句,在遇到 break之前 把输入 对应case之后 所有 case后的语句 都执行 不管是否符合case所对应的情况。
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-09-04 00:51:43  更:2022-09-04 00:52:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:43:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码