C语言学习笔记系列第七章
最近工作着实是有点忙,拖更了一阵子。其实中间想过放弃这个系列,但是想了一下多少还是要坚持下去,毕竟下了班不打游戏干一件有意思的事情还是很有挑战的。下面进入第七章的学习内容了,这章内容主要是判断语句if和else的使用,中间还会穿插一下跳转的概念。
学习参考书籍《CPrimerPlus》1,if语句复习前章内容
单独从英语的角度来讲if就是如果的意思,应用到C语言也是如此,先来一个简单的程序(虽然看着有点长);以下程序都是由之前所需要的知识,大家来简单学习看一下,运用了声明变量的整型与浮点型,运用了while循环,以及声明变量等;includestdio。hdefineFREEZING0freezingtemperatureintmain(void){floattemperature;intcolddays0;numberofdaysbelowfreezingintdays0;numberofdaysenteredprintf(Enterthelistofdailylowtemperatures。);printf(UseCelsius,andenterqtoquit。);while(scanf(f,temperature)1){days;countthedaysif(temperatureFREEZING)colddays;countthecolddays}if(days!0)avoidpisionbyzeroprintf(ddaystotal:。1fwerebelowfreezing。,days,100。0(float)colddaysdays);printtheresultif(days0)printf(Nodataentered!);return0;}
程序中的循环通过scanf()读入温度值。while循环每迭代一次,就递增计数器增加天数,其中的if语句负责判断0以下的温度并单独统计相应的天数。其中这个程序看似简单但也是有些细节要着重强调的:while循环的测试条件利用scanf()的返回值来结束循环,因为scanf()在读到非数字字符时会返回0。temperature的类型是float而不是int,这样程序既可以接受温度低于0度和3。6这种温度值。该程序的第十九行中为避免整数除法,该程序示例把计算后的百分比强制转换为float类型。
if语句在这个程序中的结构和while语句很相似,它们的主要区别是:如果满足条件可执行的话,if语句只能测试和执行一次,而while语句可以测试和执行多次。1。1,ifelse语句
简单形式的if语句可以让程序选择执行一条语句,或者跳过这条语句。C还提供了ifelse形式,在两条语句之间作选择。
我们用ifelse形式来举例上述程序中纯if部分:
单纯if使用方式
如果程序发现days不等于0,那么它应该知道另一种情况一定是days等于0。所以如果单纯使用if下边的还需要在判断测试一次就很没有必要了。修改如下:
引入ifelse使用方式
在使用if和else之间执行多条语句,必须用花括号把这些语句括起来成为一个块。下面的代码结构违反了C语法,因为在if和else之间只允许有一条语句(简单语句或复合语句):if(y0)printf(y:);y;else程序将会报错printf(y0);
报错的原因是编译器把printf()语句视为if语句的一部分,而把x;看作一条单独的语句,它不是if语句的一部分,编译器发现else并没有所属的if所以程序就会报错。if(y0){printf(y:);y;}elseprintf(y0);2,getchar()和putchar()
之前在第一章学习到的getcher();只是单纯用来点击编译文件使得程序可以停留。下面来详细学习一下使用:
下面的语句读取下一个字符输入,并把该字符的值赋给变量cy:
cygetchar();其实等效为:scanf(c,cy);
putchar()函数打印它的参数。
putchar(cy);其实等效为:printf(c,cy);
由于这些函数只处理字符,所以它们比更通用的scanf()和printf()函数更快、更简洁。特别注意getchar()和putchar()不需要转换说明,因为它们只处理字符。
下边我们来学习一个程序看下函数的具体实践使用:includestdio。hdefineSPACEthatsquotespacequoteintmain(void){charch;chgetchar();readacharacterwhile(ch!)whilenotendofline{if(chSPACE)leavethespaceputchar(ch);characterunchangedelseputchar(ch2);changeothercharacterschgetchar();getnextcharacter}putchar(ch);printthenewlinereturn0;}
这个程序是把一行输入重新打印出来,但是每个非空格都被替换成原字符在ASCII序列中的下一个字符,空格不变。这一过程可描述为如果字符是空白,原样打印;否则,打印原字符在ASCII序列中的下两个字符。
输出结果如下:
3,总结
本章主要是学习了if和ifelse的用法同时又加入了getchar()和putchar()的简单介绍,由于最近工作实在是有点忙的不可开交(工作部门变动需要交接原部门的工作)。所以拖更了一阵子,下个月还有两场职称考试,都与编程无关的考试尽量保持不拖更吧。时间精力有限,尽量提升阅读体验吧,发现想写的简单,但是又觉得写的简单了又不好让读者读懂。如有不足或有疑问欢迎各位大佬们指正,同时也希望非IT专业的小白们能感受到C语言的魅力所在。如果对你有帮助的话点赞收藏哦!
〔1〕《CPrimerPlus》
假如你是一名永生者,你会怎样做才能避免自己的身份暴露?很简单,躺在棺材里,埋在地下,明明永生,实际周围的人都会认为你死了,也事实证明跟没活着一样不在一个地方长久的生活。不然肯定会被周围的人发现,怎么不会老呀?在一个地方最多生活几年,要
去非洲打工时,和非洲黑人相处有哪些忌讳?我去非洲打工时,因为对非洲黑人说了一句话,结果让工厂所有黑人员工团团围住,差点就回不来了。我二叔为了节约人工成本,把电子厂搬到了非洲的乌干达,乌干达普通员工的工资每月只有五六百,招
马上要去监狱服刑了,请问各位我需要做好什么准备?什么都不用带。吃饭不用操心,监狱管一日三餐,伙食按照标准并且提前公布,听在里面呆过的人说,伙食还可以而且能吃饱。穿衣也不用操心,里面配发衣服,夏有夏衣冬有冬衣,什么衣服都不用带,便
变速箱油到底需不需要换?我一开始就是各种查,变速箱要不要换油,很纠结,毕竟2000多块呀。去年到6万公里了,到了所谓的经验限了,就去换了。结果油是黑的,而且毫无粘稠性,于是换了。换了以后,以前的顿挫感没有
馒头出锅的时候突然瘪了怎么回事?有什么说法?馒头出锅的时候突然瘪了怎么回事?有什么说法?关于馒头出锅的时候,突然发现有几个馒头瘪了。也就是表面收缩了,出现这种情况,那就是我们在馒头蒸熟以后,立刻将锅盖打开造成的。这就是我们平
泰国自由行必须买往返机票吗?怎么过关,都需要什么?谢谢邀请。关于去泰国自由行的有关事宜我来提一些建议和攻略,其实和其它国家相比还是很简单的,不复杂,把握好关键几点就行。图拍摄于泰国曼谷机场大厅一是否必须购买返程机票问题一般来说,以
有什么适合长途火车上吃的食物?现如今坐长途客车的机会特别少或者是坐长途火车的机会也很少,记得以前上大学的时候,学校离家很远,坐车都要坐20个小时,那么在这个20个小时当中,带些什么吃的呢。那个时候啊,经常会带一
基站机房里拔掉一根光纤会有什么后果?那就看运气了,如果你正好拔掉一根是PTN传输光纤很有可能本站传输所下挂基站全部断站,如果是环路的话不会断站,但后台告警马上就出来,没有自动恢复就会有工单发到铁塔代维,代维会快速去现
想入手一款Thinkpad,哪个版本好?截止2020年,ThinkPad笔记本产品线主要有8个产品系列,产品系列大致包括PX1TXRSLE,各系列涉及到产品大概如下(截止2020年一季度,后续新型号尚未上市,产品类似)P
为什么有人说服务器CPU垃圾?我是雪鹿,是一名科技领域创作者,希望我的回答可以对你有帮助。为什么有人说服务器CPU垃圾?我觉得说服务器CPU垃圾的原因有两点第一主频低,游戏体验差点被当成垃圾什么是服务器CPU,
孩子初中成绩考不上普高,花钱上私立高中可以吗?根据办学性质的不同,普通高中可以分为私立高中和公立高中,私立高中是相对于公立高中而言的。孩子的学习成绩比较差,也要看孩子的成绩具体处在哪个水平,如果成绩能够考上四五百分左右,那么正