C语言 分支语句:if 语句和 switch语句
目录
if 语句
悬空else —— else跟距离它最近的 if 匹配
if 书写形式的对比
if…else、if…else if…else if 和 if...if...if 语句的区别
switch语句
C语言是结构化的程序化设计语言!
顺序结构 —— 从头做到尾,按顺序一步一步往下走
选择结构 —— 做的时候有选择 —— 分支语句
- if
- switch
循环结构 —— 循环重复 —— 循环语句
- while
- for
- do while
goto语句
什么是语句?
C语言中由一个分号;隔开的就是一条语句。
if 语句
C语言是如何表示真和假的呢?
非0就是真 比如 -1
0 就是假
语法结构:
//单分支
if(表达式) //如果表达式为真,语句被执行语句;
//双分支
if(表达式) //如果表达式为真,执行语句1,否则执行语句2语句1;else语句2;
//多分支if(表达式1) //如果表达式1为真,执行语句1,如果表达式1不成立,判断表示2语句1;else if(表达式2) //如果表达式2成立,执行语句2,否则执行语句3语句2;else语句3
举例:
//单分支
#include<stdio.h>
int main(void)
{int age = 10;if (age >= 18)printf("成年\n"); //不输出return 0;
}
//双分支
#include<stdio.h>
int main(void)
{int age = 10;if (age >= 18)printf("成年\n"); elseprintf("未成年\n"); //输出: 未成年return 0;
}
if 和 else 后面如果没有{},则只控制它们后面的第一条语句
if 和 else 后面有{}括起来的多条语句,则会控制被{}的多条语句
//双分支
#include<stdio.h>
int main(void)
{int age = 10;//if 和 else 后面如果没有{},则只控制它们后面的第一条语句//if 和 else 后面有{}括起来的多条语句,则会控制被{}的多条语句if (age >= 18){printf("成年\n");printf("恭喜你,可以谈恋爱啦\n");}else{printf("未成年\n"); printf("不能谈恋爱\n");}return 0;
}
输出:
悬空else —— else跟距离它最近的 if 匹配
看下面代码会输出什么?
建议养成自己良好的代码风格:
#include<stdio.h>
int main(void)
{int a = 0;int b = 2;if (a == 1){if (b == 2){printf("呵呵\n");}else{printf("哈哈\n");}} return 0;
}
if 书写形式的对比
比较代码1和代码2意思是不是相同的?
//代码1if (condition) {return x;}return y;//代码1和代码2是不是一样?//代码1和代码2表达的意思是相同的,但是代码1风格不好//代码2if (condition){return x;}else{return y;}
代码3:如果 if (num == 5)漏掉一个 = 变成 if (num = 5),则相当于把 5 赋值给 num,代码3就会输出:哈哈
//代码3int num = 2;if (num == 5){printf("哈哈\n"); }// 因为不满足条件,代码3不输出
代码4:将两个整型并列进行比较的时候,把常量放在左边,这样就不会出现代码3那样的错误
//代码4int num = 2;if (5 == num) //将常量放在左边{printf("哈哈\n");}
总结:代码2和代码4更好,逻辑更加清晰,不容易出错。
if…else、if…else if…else if 和 if...if...if 语句的区别
if…else、if…else if…else if:只要有一个条件被满足,则只会执行与之对应的语句,然后跳出整个判断。
if...if...if:无论条件是否满足,接下来的条件都会被逐个判断。
练习:
1,输入一个数,判断它的奇偶
#include<stdio.h>
int main(void)
{int num;scanf("%d", &num);if (num % 2 == 1){printf("是奇数\n");}else{printf("是偶数\n");}return 0;
}
2,输出1-100之间的奇数
#include<stdio.h>
int main(void)
{int num = 0;while (num++ < 100){if (num % 2 == 1){printf("%d\n", num);} }return 0;
}
或者
#include<stdio.h>
int main(void)
{int num = 0;for (num = 0; num <= 100; num++){if (num % 2 == 1){printf("%d\n", num);} }return 0;
}
或者
#include<stdio.h>
int main(void)
{int num = 1;for (num = 1; num <= 100; num += 2){printf("%d\n", num);}return 0;
}
switch语句
switch语句也是一种分支语句。常常用于多分支的情况。
在switch语句中,我们没法直接实现分支,搭配 break 使用才能实现真正的分支。
编程好习惯:在每个switch语句中都放一条 default子句 是个好习惯,甚至可以在后面再加上一个break。
格式:
必须是整型,float不行,字符可以,因为字符用的是其对应的ASCII码值,也是整型
//switch语句格式switch (整型表达式) {语句项;}//必须是整型,float不行,字符可以,因为字符用的是其对应的ASCII码值//语句项是什么呢?//是一些case语句,如下:case 整型常量表达式: //必须是整型、常量值语句;
举例:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main(void)
{int day = 0;scanf("%d", &day);switch (day) // (day)的值是几,就从case几进去,{ //想在哪里出来,就在哪里加 break 使其跳出、停止case 1: printf("星期一\n"); break; 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; 即使是最后一个case, break可加可不加,也建议加上}return 0;
}
case 后面要不要加 break,是看用户需求来决定的,不是语法规定的,比如:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main(void)
{int day = 0;scanf("%d", &day);switch (day) // (day)的值是几,就从case几进去,{ //想在哪里出来,就在哪里加 break;case 1: case 2:case 3:case 4:case 5:printf("工作日\n");break;case 6:case 7:printf("休息日\n");break; default: //可以给一个错误提示,default放前中后哪里都行,建议放最后printf("输入错误\n");break; }return 0;
}
练习:下面程序输出什么?
#include<stdio.h>
int main(void)
{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); //输出:m = 5, n = 3return 0;
}
解析:
C语言 分支语句:if 语句和 switch语句相关推荐
- 补充switch语句的内容和逗号运算符(C语言case后没有break的switch语句,会继续执行后面的语句再退出)
补充switch语句的内容和逗号运算符 C语言case后没有break的switch语句,会继续执行后面的语句再退出 补充逗号运算符 C语言case后没有break的switch语句,会继续执行后面的 ...
- 【编译原理笔记14】中间代码生成:布尔表达式的回填,控制流语句的回填,switch语句的翻译,过程调用语句的翻译
本次笔记内容: 6-8 布尔表达式的回填 6-9 控制流语句的回填 6-10 SWITCH语句的翻译 6-11 过程调用语句的翻译 本节课幻灯片,见于我的 GitHub 仓库:第14讲 中间代码生成_ ...
- c语言case后加什么,c++ switch语句的使用(case 后面可以跟N个语句)
switch语句在处理多分支语句时是一种清晰结构(相比于一系列的if else if ...), 在一般书上的讲解时会给出如下的一般形式: switch(表达式){ case 常量表达式1: 语句1; ...
- C语言case后语句省略不写,switch语句基础理解与分析
switch语句和if语句最为相似,语法接近C语言. switch(expression) { case value: statement break; case value: state ...
- c语言case语句块,JavaScript使用Switch语句来选择将要执行的代码块
JavaScript Switch 语句 switch 语句用于基于不同的条件来执行不同的动作. 使用 switch 语句来选择要执行的多个代码块之一.语法如下: switch(n) { case 1 ...
- continue语句可以用在switch语句和3种循环语句中_必须知道的C语言知识细节:break、continue语句区别...
break语句.continue语句都是C语言标准规定的跳转类语句,能够实现程序无条件转向另一处执行. break和continue中在循环体中经常出现,因此必须掌握其区别,避免出错. 先复习下两种语 ...
- java用switch语句算,Java的switch语句与条件运算符
文章导读 [前面学习了条件结构的if语句,可以解决多条件判断的情况.除了if语句外,Java语言还提供了switch语句和条件运算符用于简化条件判断语句的编写.本篇探讨Java的switch语句和条件 ...
- continue语句可以用在switch语句和3种循环语句中_Java基础复习笔记P20——break和continue...
控制循环语句: break 和 continue break break是java语言当中的关键字,被翻译为"中断" break+";"可以成为一个单独的完整的 ...
- java switch配合return_关于Java switch语句:关于Java switch语句 – 在每种情况下使用return和省略break...
鉴于这种方法,这是否代表了一些令人震惊的风格或语义失误: private double translateSlider(int sliderVal) { switch (sliderVal) { ca ...
- oracle的switch+case语句吗,2.7 switch 语句中的 case 范围
2.7 switch 语句中的 case 范围 在标准 C 中,switch 语句中的 case 标签只能有一个关联值.Solaris Studio C 允许使用某些编译器中使用的扩展(称为 case ...
最新文章
- js变量传递给less_如何利用webpack实现一键换肤(CSS变量替换)
- Windows Server 2012 R2 WSUS-13:部署二级WSUS
- MongoDB操作(.net)
- Android View系统解析(上)
- sscanf函数中类型不匹配警告引发的BUG和思考
- oracle product文件,快速修复Oracle参数文件的另类方法
- python matplotlib 绘图
- MemSQL初体验 - (1)传说中速度最快的关系数据库软件
- 河北计算机科学与技术研究生,2021年河北工业大学计算机科学与技术(081200)硕士研究生招生信息_考研招生计划和招生人数 - 学途吧...
- android 教程概要,Android精通教程-第一节Android入门简介
- 贪心——雪糕的最大数量(Leetcode 1833)
- Cas单点登录的服务器端和客户端的配置
- VirtualLab Fusion光学仿真软件使用笔记
- 现代大学英语精读第二版(第四册)学习笔记(原文及全文翻译)——5B - Could You Live with Less(你可以简朴地生活吗)
- Requirement diagram
- 百度编辑器ueditor-在线图片管理,想修改下默认的排序管理
- 叶雕——叹为观止的艺术!
- SwiftUI实战教程 第二章 BMI计算器
- 关于小米安装app的问题
- 4款良心电脑软件,有两款虽已停更,依然支持免费使用