图5.7两层函数嵌套调用示意图函数的嵌套调用即一个函数在被调用的过程中又调用了另外的一个函数。函数fac和powers的返回值类型均被设计为double型,其主要目的是为了避免n!x:0.5//0.5从键盘输入的数据0.50 powers of e=1.648721//程序执行结果......
2023-11-20
关系运算只能描述简单的条件,程序中描述复杂条件需要逻辑运算。C语言中逻辑运算符及其含义见表3.2。
表3.2 逻辑运算符及其含义
逻辑运算符“&&”和“||”是双目运算符,具有左结合性;“!”是单目运算符,具有右结合性。
用逻辑运算符将运算对象连接起来的表达式称为逻辑表达式,在C语言中,构成逻辑运算的数据对象除了关系表达式外,还可以是任意的其他表达式。对其他表达式而言,非0值以逻辑“真(即1)”参加逻辑运算,0值以逻辑“假”参加逻辑运算。逻辑表达式的运算结果是一个逻辑值(即0或者1)。逻辑运算的规则可以用“真值表”描述,两个数据对象之间的逻辑运算规则见表3.3。
表3.3 逻辑运算真值表
C语言中进行逻辑表达式求值运算时,不但要注意逻辑运算符本身的运算规则,而且还必须要遵循下面的两条原则:
·对逻辑表达式从左到右进行求解。
·短路原则:在逻辑表达式的求解过程中,任何时候只要逻辑表达式的值已经可以确定,则求解过程不再进行,求解结束。
具体理解逻辑表达式运算规则时,可以采用这样的步骤:
①找到表达式中优先级最低的逻辑运算符,以这些运算符为准将整个逻辑表达式分为几个计算部分。
②从最左边一个计算部分开始,按照算术运算、关系运算和逻辑运算的规则计算该部分的值。每计算完一个部分就与该部分右边紧靠着的逻辑运算符根据真值表进行逻辑值判断。
③如果已经能够判断出整个逻辑表达式的值则停止其后的所有计算;只有当整个逻辑表达式的值还不能确定的情况下才进行下一个计算部分的计算。(www.chuimin.cn)
例如,有定义:int a=1,b=2,c=0;,则对逻辑表达式a++||b++&&c++的计算过程为:
①最低优先级的逻辑运算符||将逻辑表达式分成了两个部分a++和b++&&c++;
②计算第一个计算部分a++得到该部分的值为1(变量a自增为2);
③用a++计算部分得到的结果1与其右边的逻辑或运算符根据逻辑运算真值表进行逻辑值判断,得出整个逻辑表达式的结果为1。由于已知整个逻辑表达式的结果,停止该逻辑表达式的运算(即b++&&c++没有进行任何运算)。
根据上面的计算过程得到结果为:逻辑表达式的值为1、变量a的值为2、变量b的值为2(原值)、变量c的值为0(原值)。
【例3.1】 逻辑表达式运算规则示例。
在C程序设计中,常用逻辑与运算表示某个数据对象的值是否在给定的范围之内,用逻辑或运算表示某个数据对象的值是否在给定的范围之外。例如,若要表示变量x的值在区间[a,b]之内时条件为真,则可使用逻辑表达式x>=a&&x<=b来表示;若要表示变量x的值在区间[a,b)之外时条件为真,则可使用逻辑表达式x<a||x>=b表示。
有关C语言程序设计基础(第3版)的文章
图5.7两层函数嵌套调用示意图函数的嵌套调用即一个函数在被调用的过程中又调用了另外的一个函数。函数fac和powers的返回值类型均被设计为double型,其主要目的是为了避免n!x:0.5//0.5从键盘输入的数据0.50 powers of e=1.648721//程序执行结果......
2023-11-20
在C语言中,“=”称为赋值运算符,赋值运算符的左边一定是变量,不能是常量或表达式。赋值表达式可以作为一个运算成分出现在另外的表达式中,从而构成比较复杂的表达式或语句。在赋值表达式计算中,若赋值运算符两边的数据类型不相同时,系统将自动进行类型转换。赋值运算符使用示例。......
2023-11-20
项目2:输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。图3.15兔子问题输出结果根据以上的分析可以知道,循环次数可以为0,因此该程序是一个条件型循环,可以利用while语句编写程序。熟悉了循环结构在程序设计中的运用,循环结构语句包含了while语句、do…......
2023-11-18
针对不同的实际应用,数据排序方法有很多种。本节介绍两种常用排序方法的基本思想和实现方法,帮助读者初步理解排序方法的计算机解决思路。②不考虑已排好序的数据,将剩下的数据作为待排序列。编写程序实现冒泡排序算法,对随机生成的10个3位整数按升序进行排序并输出。......
2023-11-20
A.与参数x的类型相同B.无法确定C.void类型D.int类型3.为了避免嵌套的条件语句if-else的二义性,C语言规定()。A.else与缩排位置相同的if配对B.else与同一行上的if配对C.else与其之后最近的if配对D.else与其之前最近的尚未配对的if配对4.设x、y、z和k都是int型变量,则执行表达式:x=后,x的值为()。A.7 B.6 C.5 D.47.在C语言程序中,用关键字()定义无符号型变量。else语句实现两个分支。......
2023-09-19
一个函数直接或间接地调用自己,称为函数的递归调用。所以函数递归调用的实现必须依靠系统提供一个特殊部件(堆栈)存放未完成的操作,以保证当递归调用结束回溯时不会丢失任何应该执行而没有执行的操作。为了理解函数递归调用的特性,参照例5.9的程序讨论函数递归调用的执行过程,为了讨论方便为程序加上行号。函数递归调用示例。......
2023-11-20
sizeof运算符的功能是返回其所测试的数据对象所占存储单元的字节数。例如,sizeof的值为1。使用sizeof运算符时需要注意以下两点:①使用sizeof运算符的目地是获取任何数据对象所占内存单元的字节数,使得程序自适应于所用系统的存储分配机制。②如果被测试的对象是一个表达式,sizeof不会对表达式进行具体的运算,而只是判断该表达式的最终数据类型,并以此求出所需要的存储空间。sizeof运算符示例。......
2023-11-20
例如,有如下所示的C语句序列:则结构体指针变量p1指向结构体数组元素a[2],其关系如图10.2所示。此时应该注意到被指针变量p1指向的结构体数组元素本身是不能作为整体操作的,所以*p1也不能作为整体操作。......
2023-11-20
相关推荐