分支结构
2021/10/25 6:12:01
本文主要是介绍分支结构,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- 前言
- 一、if语句
- 二、switch语句
前言
c语言是一门结构化的语言,三种基本结构组成的算法可以完成任何复杂程序,这三种结构分别是顺序结构,选择结构(分支结构),循环结构。顺序结构是最简单的程序结构,也是最常用的程序结构,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。因此我们直接开始讲解选择结构。
补充-------语句:C语言中由一个分号隔开的就是一条语句。
一、if else 语句
1.1 if语句的句法结构
单分支 if(表达式) 语句; 双分支 if(表达式) 语句1; else 语句2; 多分支 if(表达式1) 语句1; else if(表达式2) 语句2; else if(表达式3) 语句3; ....... else 语句n;1.2 if语句举例
1.2.1单分支
#include <stdio.h> //代码1 int main() { int age = 0; scanf("%d", &age); if(age<18) { printf("未成年\n"); } }
1.2.2 双分支
#include <stdio.h> int main() { int age = 0; scanf("%d", &age); if(age<18) { printf("未成年\n"); } else { printf("成年\n"); } }
1.2.3 多分支
#include <stdio.h> int main() { int age = 0; scanf("%d", &age); if(age<18) { printf("少年\n"); } else if(age>=18 && age<30) { printf("青年\n"); } else if(age>=30 && age<50) { printf("中年\n"); } else { printf("老寿星\n"); } }
注释:如果表达式的结果为真,则语句执行。
在C语言中如何表示真假?
0 表示假,非0表示真。1.3 if语句中的使用代码块
如果条件成立,要执行多条语句,则应该使用代码块。#include<stdio.h> int main() { if(表达式) { 语句列表1; } else { 语句列表2; } return 0; }
其中一个{}就是一个代码块。
1.4 if语句中else匹配问题
#include <stdio.h> int main() { int a = 0; int b = 2; if(a == 1) if(b == 2) printf("hehe\n"); else printf("haha\n"); return 0; }
看到这段代码屏幕会打印什么?
猜对了么?结果打印为空。实际上else是和它离的最近的if匹配。
1.5 if书写形式对比
//代码1 if (condition) { return x; } return y; //代码2 if(condition) { return x; } else { return y; } //代码3 int num = 1; if(num == 5) { printf("hehe\n"); } //代码4 int num = 1; if(5 == num) { printf("hehe\n"); }上述四段代码中代码一二的效果一样,代码三四的效果一样。但是代码二与代码四更好一些;代码一我们很容易搞错认为是一个单分支语句一个return y组成的顺序结构改成代码二就一目了然了;代码三中在判断相等时,我们很容易只写一个等号导致最后输出有误而且这样的错误我们还不容易察觉,但如果换成代码四的书写形式我们只写一个等号时编译就会出错我们很快就会发现错误。这样书写可以让我们节省不少找错误的时间。
二、switch语句
2.1.switch语句
switch语句也是一种分支语句。 常常用于多分支的情况。
比如: 输入1,输出星期一 输入2,输出星期二 输入3,输出星期三 输入4,输出星期四 输入5,输出星期五 输入6,输出星期六 输入7,输出星期日 那我没写成 if...else if ...else if 的形式太复杂,那我们就得有不一样的语法形式。 这就是switch 语句。它的格式是switch ( 整型表达式 ) { 语句项 }
而语句项是
// 是一些 case 语句: // 如下: case 整形常量表达式 : 语句 ;
2.2 switch语句中的break
在 switch 语句中,我们没法直接实现分支,搭配 break 使用才能实现真正的分支。(不使用break的话执行完switch语句中对应的case语句后,后面的case语句也会执行)#include <stdio.h> int main() { int day = 0; scanf("%d",&day); switch(day) { case 1: printf("星期一\n"); break; case 2: printf("星期二\n"); break; case 3: printf("星期三\n"); break; case 4: printf("星期四\n"); break; case 5: printf("星期五\n"); break; case 6: printf("星期六\n"); break; case 7: printf("星期天\n"); break; } return 0;有时候我们的需求变了: 1. 输入 1-5 输出的是 “weekday”; 2. 输入 6-7 输出 “weekend" 代码变为
#include <stdio.h> //switch代码演示 int main() { int day = 0; scanf("%d",&day); switch(day) { case 1: case 2: case 3: case 4: case 5: printf("weekday\n"); break; case 6: case 7: printf("weekend\n"); break; } return 0; }break 语句的实际效果是把语句列表划分为不同的部分。 在最后一个 case 语句的后面加上一条 break语句。(之所以这么写是可以避免出现在以前的最后 一个 case 语句后面忘了添加 break语句)。
2.3 switch语句中的default
如果表达的值与所有的 case 标签的值都不匹配怎么办? 其实也没什么,结构就是所有的语句都被跳过而已。 程序并不会终止,也不会报错,因为这种情况在 C 中并不认为适合错误。 但是,如果你并不想忽略不匹配所有标签的表达式的值时该怎么办呢? 你可以在语句列表中增加一条 default 子句,把下面的标签 default : 写在任何一个 case 标签可以出现的位置。 当 switch表达式的值并不匹配所有case标签的值时,这个default子句后面的语句就会执行。 所以,每个 switch 语句中只能出现一条 default 子句。 但是它可以出现在语句列表的任何位置。 在每个 switch 语句中都放一条default子句是个好习惯,甚至可以在后边再加一个 break。 举例: 看下面这段代码推测m n分别是多少?#include <stdio.h> 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; }
猜对了么!
这篇关于分支结构的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-102025 蛇年,J 人直播带货内容审核团队必备的办公软件有哪 6 款?
- 2025-01-10高效运营背后的支柱:文档管理优化指南
- 2025-01-10年末压力山大?试试优化你的文档管理
- 2025-01-10跨部门协作中的进度追踪重要性解析
- 2025-01-10总结 JavaScript 中的变体函数调用方式
- 2025-01-10HR团队如何通过数据驱动提升管理效率?6个策略
- 2025-01-10WBS实战指南:如何一步步构建高效项目管理框架?
- 2025-01-10实现精准执行:团队协作新方法
- 2025-01-10如何使用工具提升活动策划团队的工作效率?几个必备工具推荐
- 2025-01-10WiX 标签使用介绍:打造专业安装程序的利器