C语言知识总结:if-else判断语句和switch-case选择语句

点击蓝字

8dc6098de6b5700bc4c7a6fdd65f00a2.png

关注我们

因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享

来源于网络,侵删

1、if-else判断语句

一个基本的if语句由一个关键字if开头,跟上在括号()里边的是表示逻辑条件的表达式,然后是一对大括号{}中间是若干条语句,如果条件的逻辑表达式的结果不是零,那么就执行大括号中间的语句,否则就跳过不执行。

if的返回值为真或假,可以用bool型变量进行存储,占用一字节。

当if的条件满足或者不满足的时候要执行的语句也可以是一条或者多条if-else 语句,这时候叫嵌套的if语句,而else 总是和最接近的 if 匹配。

tips:

在if或else后面总加上{}大括号,即使只有一条语句的时候。风格就是三观。常见的错误:忘了大括号,if后面的分号,错误使用 == 和 = ,没有匹配或令人困惑的else

例子题目:

描述请判断它能否被 3,5,7 整除,并输出以下信息:

能同时被 3, 5, 7 整除(直接输出3 5 7,每个数中间一个空格);

只能被其中两个数整除(输出两个数,小的在前,大的在后。例如:3 5或者3 7或者5 7,中间用空格分隔);

只能被其中一个数整除(输出这个除数);

不能被任何数整除,输出小写字符'n',不包括单引号。:

如:

输入  105

输出  3 5 7

解决答案:

int main(void)
{    int a;  
scanf("%d", &a); 
//输入一个数//if圆括号所表示的 如果 a能被3整除  并且  a也能被 5整除  并且  a也能被7整除  
if (a % 3 == 0 && a % 5 == 0 & a % 7 == 0) {//如果圆括号条件里边的条件满足      
printf("3 5 7");//执行这条语句    }    
else if (a % 3 == 0 && a % 5 == 0&& a % 7 !=0) {//否则,判断这条语句是否满足        printf("3 5");//满足执行这条语句   //下面的依次类推    }  
else if (a % 3 == 0 && a % 7 == 0 && a % 5 != 0) {        printf("3 7");   } 
else if (a % 5 == 0 && a % 7 == 0 && a % 3 != 0) {        printf("5 7");   }   
else if (a % 3 == 0 && a % 5 != 0 && a % 7 != 0) {        printf("3");    }   
else if (a % 5 == 0 && a % 3 != 0 && a % 7 != 0) {        printf("5");    }   
else if (a % 7 == 0 && a % 5 != 0 && a % 3 != 0) {        printf("7");    }  
else {        printf("n");    }return 0;}


2、switch-case选择语句

switch语句是多分支选择语句.用来实现多分支选择结构

Switch 函数圆括号的参数列表可由多对表达式和数值组成,ANSI标准允许它为任何类型.,表达式是由左至右加以计算的,而数值则会在第一个相关的表达式为 True 时返回。如果其中有部分不成对,则会产生一个运行错误。

当表达式的值与某一个case后面的常量表达式的值相等时,就执行此case后面的语句,若所有的case中的常量表达式的值都没有与表达式的匹配的,就执行default后面的语句,每一个case的常量表达式的值必须互不相同,否则就会出现互相矛盾的现象,(对表达式的同一个值,有两种或多种执行方案),当没有一个表达式为 True,或者第一个为 True 的表达式的对应值为 Null时,Switch 会返回一个Null值。

switch 后面的表达式不能跟double,float,long,String ,boolean,可以接int,short,byte,char,

返回值:

switch(表达式, 值1, 结果1, 值2, 结果2, ...)

如果表达式的结果是值1,整个函数返回结果1

如果表达式的结果是值2,整个函数返回结果2

如果表达式的结果是值3,整个函数返回结果3

虽然它只返回其中的一个值,但是 Switch会计算所有的表达式。因此应该注意到其所产生的副作用。例如,只要其中一个表达式导致被零除错误,则运行就会发生错误。

例子://请输入一个数字n,然后输出相应的星期几

int main(void) {  int n;    scanf("%d", &n);  
switch (n) {//判断输入进来的数值是什么   
case 1:printf("Monday"); break;//n=1就输出此语句,平且用break函数退出   
case 2:printf("Tuesday"); break;  
case 3:printf("Wednesday"); break;   
case 4:printf("Thursday"); break;  
case 5:printf("Friday"); break;  
case 6:printf("Sturday"); break;   
case 7:printf("Sunday"); break;      
default :        printf("error");   }   
return 0;}

说明:

在使用switch-case函数时,在语句完毕后加上break函数表示将不再执行下面的语句直接结束switch函数了。如果什么也不加,则是继续执行。

一:从“优缺点”分析

if…else

优点:使用灵活,代码空间小 ;

缺点:效率低,因为 if else 必须遍历所有的可能值;

switch…case

优点:代码结构清晰,效率高;

缺点:

1、不够灵活,switch 仅支持 int, char, unsigned char 等基本类型。

2、代码空间大,因为它要生成跳表,特别是当 case 常量分布范围很大但实际有效值又比较少的情况,switch…case 的空间利用率将变得很低。对于 switch,实际上是根据 case 最小值与最大值,维系了一段连续的内存空间,以空间换取时间;

c576fc2b54e4ef60e740841bd44daf0d.jpeg

二:从“底层原理”分析

if…else

系统是自上而下逐个条件去判断,直到符合条件,所以应将机率大的条件置于最前面。

switch…case

switch 语句根据一个整数索引值进行多重分支,底层采用跳转表这种数据结构。跳转表是一个数组,表项 i 对应代码段的地址。当 switch 索引值等于表项 i 时采取对应的程序操作。

可简单理解为:

执行 switch 时生成一个长度为最大 case+1 的数组,程序首先判断 switch 变量是否大于最大 case 常量,若大于,则跳到 default 分支处理。否则取得数组索引号为 switch 变量值大小,取得数组对应值即为相应 case 代码块地址,程序接着跳到此地址执行,完成分支的跳转。

三:从“选择性”分析

当选择分支较少时,选用 if else 比 switch…case 的效率要高。一般 3个 以内的分支我会用 if…else 结构,大于3个的分支我都会用 switch…case,个人习惯,这样结构看着舒服。

当选择分支较多时,选用switch…case结构会提高程序的效率。

四:总结

switch…case 只能处理 case 为常量的情况,对非常量的情况是无能为力的。

例如 if (x > 1 && x < 100),是无法使用 switch…case 来处理的。

所以,switch 只能是在常量选择分支时比 if…else 效率高,但是 if…else 能应用于更多的场合,它比较灵活。

122c51ae4e786f9d0c83e75ca26d8765.gif

如果你年满18周岁以上,又觉得学【C语言】太难?想尝试其他编程语言,那么我推荐你学Python,现有价值499元Python零基础课程限时免费领取,限10个名额!
▲扫描二维码-免费领取

335b482e654ee1456b8994b24d1a6132.gif

戳“阅读原文”我们一起进步

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/337216.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

hibernate性能_改善Hibernate应用程序性能的7种方法

hibernate性能Hibernate是将Java Web应用程序与SQL数据库集成的好工具&#xff0c;但是当应用程序的响应时间开始显着增加时&#xff0c;我们应该怎么做&#xff1f; 当我们怀疑应用程序是否会随着客户群的增长而扩展时&#xff0c;我们该怎么办&#xff1f; 在花大价钱托管或…

为什么永远不会有语言取代C/C++?

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删数以百计的 C/C 替代品将会出现&#xff0c;但 C/C 将永远与我们同在&#xff01;每个 CPU 都带有一种称为 ISA&#xff08;指令集架构&#xff…

sql 非主键每年自增_或许你不知道的 10 条 SQL 技巧

上文我们简述了 SQL 的一些进阶技巧&#xff0c;一些朋友觉得不过瘾&#xff0c;我们继续来下篇&#xff0c;再送你 10 个技巧一、 使用延迟查询优化 limit [offset], [rows]经常出现类似以下的 SQL 语句:SELECT * FROM film LIMIT 100000, 10offset 特别大!这是我司出现很多慢…

C语言最全入门笔记

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删c语言入门C语言一经出现就以其功能丰富、表达能力强、灵活方便、应用面广等特点迅速在全世界普及和推广。C语言不但执行效率高而且可移植性好&am…

junit测试spring_使用Spring JUnit规则进行参数化集成测试

junit测试springSpring 4.2附带了全新的JUnit规则&#xff1a; SpringClassRule和SpringMethodRule 。 使用JUnit规则的主要优点是让开发人员摆脱SpringJUnit4ClassRunner并在Spring集成测试中利用不同的JUnit运行器。 我认为Spring JUnit Rules的最大机会是易于创建参数化的集…

无处不在_Java无处不在:使用DukeScript在任何地方运行一次编写

无处不在在相当长一段时间内&#xff0c;Java都未能兑现“一次编写&#xff0c;随处运行”的承诺。 DukeScript希望通过在跨平台应用程序中实现视图和逻辑的清晰分离来改变这种状况。 在本文中&#xff0c;一个简单的场景用于介绍DukeScript的基础。 多年以来&#xff0c;Java…

C语言为何不会过时

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删评价任何一门编程语言&#xff0c;都是招人骂的。永远是这样。就像是春寒料峭的季节&#xff0c; 街上穿棉袄和穿单衣的擦肩而过&#xff0c;双方…

教你如何用一句话激怒IT人

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删在IT行业摸爬滚打这么久&#xff0c;你是否听过下面这些话&#xff1a;“这个很简单&#xff0c;我也是做程序出身的。”“预算砍掉一半&#xf…

java的网络编程有用吗_十大有用但又偏执的Java编程技术

java的网络编程有用吗经过一段时间的编码&#xff08;以我为例&#xff0c;大约20年左右&#xff0c;当您玩得开心时光飞逝&#xff09;&#xff0c;人们开始接受这些习惯。 因为&#xff0c;你知道... 任何可能出错的事情都会发生。 这就是为什么人们会采用“防御性编程”的原…

未来五年有颠覆性的IT技术都在这里

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删据福布斯杂志报道&#xff0c;在美国奥兰多举行的Gartner研讨会上&#xff0c;市场研究机构Gartner Research的副总裁兼资深研究员大卫卡利&…

java ee maven_真正释放Maven和Java EE的强大功能

java ee maven如果野心和愿景太复杂而无法使用&#xff0c;则它们可能会淘汰伟大的解决方案。 尽管Maven和Java EE是在整个Java行业中都已建立的良好技术&#xff0c;但是使用它们并使用其作者打算使用的所有技术和模式来设计项目可能非常棘手。 在开发过程中途&#xff0c;由…

程序员们,想在双十一脱单?赶快跟我捯饬起来吧

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删生活中有很多男人一边抱怨自己不够洋气&#xff0c;找不到女票&#xff0c;另一方面又懒到宁肯在床上撸啊撸&#xff0c;也不愿意好好打扮自己。…

jboss8日志级别设置_罐中研讨会:设置JBoss BRMS全日研讨会

jboss8日志级别设置是否在寻找一种简单的方法来宣传&#xff0c;展示或演示使用JBoss业务规则管理系统&#xff08;BRMS&#xff09;产品的入门难度&#xff1f; 别无所求&#xff0c;因为我们已经召集了这个研讨会&#xff0c;因此您可以围绕JBoss BRMS构建一个晚上&#xff…

C语言编程时你常犯的18种错误

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删C语言的最大特点是&#xff1a;功能强、使用方便灵活。C编译的程序对语法检查并不象其它高级语言那么严格&#xff0c;这就给编程人员留下“灵活…

这些知识你都不知道,难怪说你学不懂C语言!

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删关于C语言的那些小知识&#xff0c;准备学习或者刚刚入门的你已经了解了吗&#xff1f;语言种类编译语言静态声明语言面向过程的编程语言环境工具…

图片识别出处_AI人脸识别

前言最近网络上爆火的藏族小哥哥丁真&#xff0c;大家都知道吗&#xff1f;十几天前凭借一张纯真、干净、帅气的脸霸屏各大短视频平台&#xff0c;连各大电视台新闻媒体都争相报道&#xff0c;这个藏族小伙瞬间火了&#xff01;&#xff01;网友们对于丁真的长相评价不一&#…

【从零开始学C语言】知识总结一:C语言的基本知识汇总

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删C语言是一种计算机程序设计语言。它既有高级语言的特点&#xff0c;又具有汇编语言的特点。它可以作 为系统设计语言&#xff0c;编写工作系统应…

排球分组循环交叉编排_同学!中国海洋大学第一届排球联赛等你来战!

New中国海洋大学第一届排球联赛开始啦比赛宗旨1亲爱的同学们&#xff1a;为增强学生凝聚力&#xff0c;加强新老生交流&#xff0c;促进各院系的友谊&#xff0c;培养同学们的团队精神&#xff0c;丰富同学们的课余生活&#xff0c;展示我校文体风采&#xff0c;特此举办本次中…

jolokia_使用WildFly 9和Jolokia监视DevOps样式

jolokiaDevOps是当今最热门的话题之一。 并且围绕它的广泛主题使您很难真正找到完整的描述或涵盖体面粒度的所有内容。 可以肯定的一件事是&#xff1a;最重要的部分之一是提供正确的度量标准和信息以监视应用程序。 Java EE和JMX 监视Java EE服务器的标准方法是JMX。 使用JCo…

计算机的本质是哲学

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删学什么抽象模型庄子说过吾生有崖&#xff0c;知无涯。以有限的生命去学习无尽的知识是很愚蠢的。所以&#xff0c;学习的终极目标一定不是知识本…