第四章:语句
Github
链接:ch04. 语句
第四章貌似没有作者给出的源码。
本章总结及注意点
部分课后习题解答
4.13 问题
-
合法。可以正确执行,但是对程序不造成任何影响。这些操作符均不具有副作用,计算结果没有赋给任何变量。
-
事实上
C
没有 赋值语句。赋值是用赋值运算符表达式语句完成的。如a = b + c;
-
合法。确实没这样用过。代码块中定义局部变量,可将这些变量的访问及生存周期限制在本代码块中。想来也是一个很不错的操作!
-
使用空语句。或者修改代码逻辑,见
demo01.c
。 -
输出
0~9
之间的整数。 -
在没有初始化或者调整表达式的时候,即
for
循环的第一部分、第三部分。此时,相较于for
循环来讲,while
更加方便。 -
忘记加
{ }
,中间字符不打印,只会打印EOF
和校验和。然而EOF
这个字符是无效的。 -
当循环体必须执行一次的时候。
-
不存在
break
语句,即为: -
见
demo02.c
。 -
简单的
if-else
语句。见demo03.c
。 -
这里采用了简写的方式,一句写完了。见
demo04.c
。 -
简单的
switch-case
语句。见demo05.c
。 -
while
循环的使用,见demo06.c
。 -
do-while
循环的使用,同见demo06.c
。 -
简单的
if-else
语句嵌套,见demo07.c
。
4.14 编程练习
-
double
接收输入。浮点数判等比较方法。见demo08.c
。 -
简单的试除法求质数。注意在表达式运算中模数和除数都不能为 0。见
demo09.c
。 -
double
三个变量接收输入。降序排序,比较即可。见demo10.c
。 -
这个代码还是好实现的。但是也产生了一个问题。当我
char a[10] = "0123456789"
的时候,我的a
数组元素被刚好占满,那么最后的\0
就无处放置。此时恰好b
数组续到了a
数组的后面,导致也文件中的错误打印。也是一个经典错误了!所以,一定需要给\0
留上空间。见demo11.c
。 -
挺不错的一道题。
gets
接收整行输入字符串,strcmp
比较两字符串相等,strcpy
进行字符串拷贝更新。尤其需要注意判断flag
排除掉后续重复字符串仍继续打印的错误情况。见demo12.c
。 -
经典的实现
substr
。因为这个代码简短,且考查的细节也是蛮多的。例如合法性的判断,dst
数组末尾补上\0
,都是很细节的知识点。面试常考。 见demo13.c
。 -
三星题。实现这个过程是简单的。很经典的双指针应用。但是我貌似没有考虑到特殊的转义字符,只考虑到了样例中包括字符和空格的情况。即制表符、换行符等等特殊字符都没考虑。不过这个确实也只需要加一个特殊的判断而已。基本功能拿双指针简单的实现了。见
demo14.c
。
随笔
本章节比较简单。只是一些语句的简单介绍而已。没啥好记录的,只有多写代码、勤加练习才能数量掌握这些语句的使用。
课后的几个编程很出色啊。这只不过是第 4 章,都已经有了一些味道了。
疑问
没啥疑问,很基础的讲解。编程题最后一道,考虑的过于片面,忽略了很多转义字符情况,需要注意。