C语言研究性学习的路线
现行的多数C语言教材有太多的误区,不仅不能给读者提供有效的学习线索,还常常“误导”读者,于是,“死记硬背”便成了学习C语言的唯一选择。本文以拙作《新编C语言程序设计教程》(清华大学出版社出版,配套视频zeq126.56.com)为基础,探讨了C语言的研究性学习。
C语言的知识点有:
1. C语言与计算机的关系
2. 表达式的求值
3. 逻辑运算及选择结构
4. 算法及循环结构
5. 数组的作用及准确理解
6. 函数的作用及准确理解
7. 指针的作用及准确理解
8. 自定义数据类型及文件
这几部分相辅相成,构成了一个有机的整体。分析如下:
三、逻辑运算及选择结构
(一) 逻辑运算简介
逻辑结算是计算机支持的一种运算,计算机中运算器的重要组成部分除了支持运算的专用存储单元,就是进行算术运算和逻辑运算的算术逻辑单元。逻辑运算使得编写功能强大的程序成为可能。
逻辑运算是指对结论进行判断并得出一个或为真或为假的值的过程。它的最大特点是运算结果只有两个值:真(对)或假(错)。
最常见的逻辑运算就是“比较”操作,如2<2,2<=2,2==2,2>2等,C语言中称之为“关系”运算。
逻辑量真假的编码需注意:
1. C语言中没有逻辑型变量,必要时基本数据类型变量会被认为是逻辑型变量,此时0为假,非0为真。为假的0可能是整数0,小数0.0,或编号为0的字符(并非字符0,’0’的编号为48)。
2. 逻辑运算的结果为真时用1表示,为假时,用0表示。
特别强调这种编码的不对称性,参与运算时非0为真,表示运算结果时真为1。
关系表达式的重点:
1. “关系“运算就是数学上的比较操作,但需注意计算机中计算的特点,如’a’>’A’为真(字符的值为其编号);3-5u>0为真。
2. 能分析表达式的实际含义,如a%2!=0与“整型变量a是奇数”这一结论等价。(与整型变量a是偶数等价吗?)
3. 关系操作符的优先级为什么低于算术操作符的?(先求值再比较)
4. 能证明表达式a>b==2恒假,而99<x<2恒真。
(二) 逻辑表达式
x为三位的正整数,在数学上可以用99<x<1000表示,但在C语言中无论x为何值,关系表达式99<x<1000恒真,显然两者并不通用。只有99<x为真并且 x<1000为真时,x才是三位的正整数,C语言中用逻辑操作符&&(逻辑与)表示这种“并且”的关系,即99<x && x<1000与数学上99<x<1000等价。逻辑操作符的特点是相关操作数为逻辑量,即3&&5实际上“真且真”,其中的整数会被认为是逻辑量“真”。注意C语言的这个特点,如关系操作会进行数学上的比较,它会把操作数作为数学上的“数”,99<x<2中99<x的结果为逻辑量,但在与2进行比较操作时会被认为是数1或数0,因此它肯定小于2,整个表达式的结果自然恒真。逻辑量只有两个,显然,逻辑与&&的运算总共只有4种情况。
重点:
1. 逻辑表达式的特点(与关系表达