参考:

  • 《标准C语言基础教程》(第四版)[美] Gary J.Bronson 著 张永健 等译

1. 本文概述

不知道大家有没有听过这个笑话,“程序员老王出门买菜,他的老婆说,出门买两个西红柿,如果碰见西瓜就买一个。结果老王看到了西瓜,但只买了一个西红柿。”是不是很好笑!好吧,不好笑。
但是为什么会出现这个情况呢,都知道他老婆的意思是买两个西红柿和一个西瓜。接下来我就为大家解释解释这老王的行为逻辑。这涉及到了选择结构

2. 老王的逻辑思路

作为一个合格的程序员,老王以身践行了计算机的逻辑。接下来我们来了解一下C语言如果运行老王的老婆的话,会产生什么结果~

大家有没有看明白这个思维呢~没错没错,C语言的选择结构差不多就是这样。

3. if条件语句

首先带着大家看一看最最最基础的选择结构:

//注意if这行没有分号!!!
if(条件)条件为真时的执行的语句;

先来举个例子,然后再往下说:

//要求:输出变量a比变量b小,输出a,假设a为5,b为10。//核心代码如下:
int a = 5;
int b = 10;
if(a < b)printf("a比b小,a=%d",a);//输出结果:
a比b小,a=5

那啥算条件啊,接下来写几个常见的关系运算符

敲黑板!注意!判断两个变量相等一定要用==,否则逻辑上是错误的!
大于小于多常见啊,你咋不写呢!写!来我们看逻辑运算符

大家注意下,||不是两个小写字母“L”,大家可以看一下键盘enter键上方的那个按键,具体怎么摁出来我就不讲了。
有的人问了,咦,你说的大于小于呢?来了来了,大于小于不就是大于一个东西并且小于一个东西嘛,简单,假如:a大于2,小于6,代码这么写(a>2) && (a<8),千万不要写成2<a<8,电脑可看不懂这个式子!

4. 条件什么时候为真

我们说了这么久条件有哪些,那啥时候条件为真,什么时候为假呢?
当然简单的我就不说了,像什么a=8,那么a<10 一定是真的,很简单。
下面我来说说涉及到AND、OR、NOT的判断方式,见下表:

4.1 AND运算符

4.2 OR运算符

4.3 NOT运算符

5. if…else语句

惯例,首先带着大家看一看if...else的使用方法:

//注意if和else两行都没有分号!!!
if(条件)条件为真时的执行的语句;
else条件不为真时执行的语句;

下面我将最开始说的那个“笑话”用这个语句表示出来(指定运行不了):

int tomato;
if(看见西瓜)tomato=1;
elsetomato=2;
printf("买了%d个西红柿",tomato);

又有同学想问,我每次只能写一条语句吗?都写点不行吗?
行啊!当然可以!只是要加一对可爱的大括号{},操作如下!

//注意if和else两行都没有分号!!!
//下列两个格式的写法表达的意思完全一样!
//格式1:
if(条件)
{条件为真时的执行的语句块;
}   //这里没有分号!!!
else
{条件不为真时执行的语句块;
}   //这里没有分号!!!//格式2:
if(条件){条件为真时的执行的语句块;
}else{条件不为真时执行的语句块;
}   //这里没有分号!!!

{}大括号表示语句块,可以简单理解为{}为一条语句。

6. if…else if语句(if…else链)

惯例,首先带着大家看一看if...else if的使用方法:

//注意if和else两行都没有分号!!!
if(条件1)
{条件1为真时的执行的语句块;
}   //这里没有分号!!!
else if(条件2)
{条件2为真时的执行的语句块;
}   //这里没有分号!!!
else
{条件不为真时执行的语句块;
}   //这里没有分号!!!

这玩意有啥用?我多用几个if不也行吗?
嘿嘿嘿,可以!就是if慢!那为啥慢呢?其实原因很简单,就是用多个if判断的次数比if...else if要多,if...else if如果条件1不符合,就会抛出条件1的范围,转而判断条件2,如果条件2也不符合,就会抛出条件2的范围,判断条件3,以此类推,指导条件n符合,或者完全没有符合的条件。

7. switch语句

惯例,首先带着大家看一看switch的使用方法:

switch(整型表达式)
{case 数值1:语句1;语句2;...break;case 数值2:语句x;语句y;...break;...case 数值n:语句w;语句x;...break;//default这种情况可以没有,如果有的话,表达的意思是整型表达式不等于以上数值default:  语句r;语句t;
}   //这里没有分号!!!

大家注意看,这里和前面讲的两种语句有些许不同,但本质上来讲功能是一样,需要注意的就是,这里的case后面是整型数值,然后是英文冒号,接下来大家可以自由发挥,直到看见breakbreak表示我这个case里的多条语句结束,如果没有break的话,你会发现他会继续执行下一个case的语句,以此类推,直到碰到break或者switch结束。

8. 结语

大家觉得if...else if的最后一段无法理解,没关系,大家可以通过尝试这次的练习理解我在说什么。那么,大家回去尝试一下如果一家银行的利息表如下:

尝试写出这家银行的利息运算系统~
好啦,又到了告别的时间,如果以上说法有错误,希望大家可以在评论区及时订正,有问题也欢迎大家在评论区里提问,我会尽我所能帮助大家解决问题~

C语言教程(五):选择结构相关推荐

  1. C语言输入输出及选择结构程序设计的综合应用——简单超级战士游戏and 取牙签游戏

    最全C系列题目!从0到管理系统 一.C语言数据类型及输出--体重是否正常.球的体积.计算存银行利息and浮点数长度与精度 二.C语言运算符与表达式--输出逆序数and二进制包含0和1的数量and判断是 ...

  2. c语言用if语句abc输出最大值,C语言基础入门选择结构-if语句(78页)-原创力文档...

    C语言基础入门选择结构-if语句_电脑基础知识_IT/计算机_专业资料.第9单元选择结构-if语句<程序设计基础>北京八维研修学院第1节选择结构导入?... <程序设计基础> ...

  3. C语言中 用选择结构编译算法,C语言程序设计立体化教程(高等教育立体化精品系列规划教材)...

    导语 内容提要 李刚.唐炜主编的<C语言程序设计立体化教程(高等教育立体化精品系列规划教材)>主要分为四篇:语法基础篇.程序设计结构篇.初级应用篇和高级应用篇:其中第一篇语法基础部分介绍了 ...

  4. C语言作业二选择结构,C语言第二次作业参考答案选择结构.pdf

    1 C 语言第二次作业(选择结构)参考答案语言第二次作业(选择结构)参考答案 1.某年如果能被某年如果能被 4 整除整除,,但不能被但不能被 100 整除整除,,或者能被或者能被 400 整除的整除的 ...

  5. Java教程:Java选择结构和循环结构的总结

    Java教程任何编程语言中最常见的程序结构就是顺序结构.顺序结构就是程序从上到下逐行的执行,中间没有任何判断和跳转. 如果 main 方法的多行代码之间没有任何流程控制,则程序总是从上向下依次执行,排 ...

  6. c语言 选择结构,C语言学习:选择结构

    综述 (1)if语句的一般形式 (2)switch语句的介绍 (3)关系运算符和关系表达式 (4)逻辑运算符和逻辑表达式 (5)条件运算符和条件表达式 (1)if语句的一般形式 在C中选择结构用到最多 ...

  7. C语言中的选择结构——if语句/if...else语句

    概述 C语言支持最基本的三种程序运行结构:顺序结构.选择结构.循环结构. 顺序结构:程序按顺序执行,不发生跳转. 选择结构:依据是否满足条件,有选择的执行相应功能. 循环结构:依据条件是否满足,循环多 ...

  8. c语言ns图选择结构程序设计,项目3选择结构程序设计.ppt

    项目3选择结构程序设计 项目3 选择结构程序设计 [任务目标] 掌握关系运算符.逻辑运算符和条件运算符的用法 掌握选择结构程序设计的方法 能够画出选择结构的流程图 能够用选择结构程序设计解决实际问题 ...

  9. 语言C++之选择结构

    这些只是本蒟蒻的一些见解,还望各位神犇积极评论提出宝贵意见,万分感谢!!!!!!!!!! 第三篇啊,给点关注和赞吧,以后会写更多的!!!!!!!!!!!!!!!!!!!!!!!!! 之前我们学的是C+ ...

  10. C语言入门:选择结构-分段函数问题

    C语言:选择结构-分段函数问题 写一段程序,输入x,输出y #include<stdio.h>int main(void){ double x,y;scanf("%lf" ...

最新文章

  1. 计算C#程序执行时间
  2. 上海肯特选用Ultimus 提升企业管理
  3. Hadoop Yarn公平调度器的特点、缺额、DRF策略
  4. auto_ptr的简单实现
  5. 转载:KOF97八神攻防战
  6. java. 端序_c代码测试本机处理器的端序
  7. python:01字串
  8. java构造方法,构造代码块,静态代码块的执行顺序
  9. 动态分配内存的初始化
  10. git flow使用
  11. 16进制颜色码转化rgba
  12. cas4.x 单点登录开发入门
  13. 链表的节点与指针 (重新理解)
  14. php txt替换,文本替换专家批量替换TXT文本内容教程
  15. Discuz的sc 和tc版本有什么区别
  16. Alpha测试 / Beta测试 / 黑盒测试 /白盒测试概述
  17. Web与小程序AR技术原理
  18. 姓氏排序程序 Js 版(小程序共享)
  19. 算法设计与分析——动态规划(二):钢条切割
  20. Redis 6 学习记录

热门文章

  1. ORA-16032: parameter LOG_ARCHIVE_DEST_3 destination string cannot be translated
  2. Vue上传文件 iview Upload UI 组件上传组件
  3. 综述 | 结肠细胞代谢如何塑造肠道菌群
  4. 4G 优盘格式化后变4M 利用量产工具修复~~~
  5. linux 物理内存释放,swap释放
  6. 自动测试系统用什么软件,自动测试系统软件,automated test system software,音标,读音,翻译,英文例句,英语词典...
  7. 使用vi编辑器创建文本文件
  8. python易盾滑动验证码
  9. 14: PYCURL ERROR 6 - Couldn't resolve host 'mirro
  10. 安检x光机原理计算机实现,安检X光机组成及工作原理(图文)