4.1引例
输入三角形的三条边,判断是否能构成三角形,若能则计算并输出三角形的面积,否则给出出错提示。
#include#include int main() { int a, b, c; float area; double s; printf("请输入三角形的三条边长 :"); scanf_s("%d,%d,%d", &a, &b, &c); s = (a + b + c) / 2.0; if (a + b <= c || b + c <= a || a + c <= b) printf("不构成三角形n"); else { area = sqrt(s * (s - a) * (s - b) * (s - c)); printf("三角形的面积是: % fn", area); } return 0; }
当输入三角形的三条边长为:3,4,5时结果为
说明:程序运行时,首先输入三角形的三条边,分别保存在三个整型变量ab.c中,然后根据三角形的构成条件,判断任意两边之和是否大于第三边。若不满足此条件,则这三条边就不能构成一个三角形,若满足此条件就可以构成三角形,则根据相应的公式计算出三角形的面积。
编写好程序,输入x的值,按以下分段函数计算并输出y的值:
#includeint main() { int x; float y; printf("输入x的值:"); scanf_s("%d", &x); if (x != 0) { y = 1.0 / x; } else { y = 0; } printf("%d,%f", x, y); return 0; }
输入x的值为2时结果为
输入x的值为0时结果为
4.2.1关系运算符和关系表达式
1.关系运算符
关系运算符用于判断两个操作数的大小关系。在C语言中有6个关系运算符,如下表所示
| 运算符 | 含义 |
| > | 大于 |
| >= | 大于等于 |
| < | 小于 |
| <= | 小于等于 |
| == | 等于 |
| != | 不等于 |
注意:
(1)关系运算符都是双目运算符,其结合方向是左结合。
(2)关系运算符的优先级低于算术运算符,但是高于赋值运算符。
(3)关系运算符中,>、<、> =、< =的优先级相同,==、!=的优先级相同,前者的优先级高于后者,即“>=”的优先级高于“==”。
2.关系表达式
用关系运算符将两个表达式连接起来的式子称为关系表达式。关系表达式的一般形式为
表达式1关系运算符表达式2
功能:比较两个表达式的大小,返回一个逻辑值。
注意:
(1)注意区分运算符“一”和“==”。“二”是赋值运算符,“==”是关系运算符。
(2)对实数进行相等判断可能得不到正确的结果,例如“1.0/3* 3.0==1.0”的结果为0。
(3)关系表达式中可以出现赋值运算符,如“a>(b=0)”,但是不能写成“a>b=0”的形式。因为关系运算符的优先级高于赋值运算符,表达式“a>b=0"相当于“(a>b)=0”,赋值运算符左边不是变量,会出现编译错误。
关系表达式主要用于分支结构中的条件判断。关系表达式的结果是一个 逻辑值“真”或假”,由于C语言中没有逻辑类型的数据,因此用“1”表示“真”,“0”表示“假”。例如关系表达式“(a=3)>(b= 8)”的值为0。
关系运算示例
#includeint main() { char c = 'm'; int i = 10, j = 20, k = 30; float x = 13e+5, y = 10.85; printf("%d,%d,", 'a' + 5 < c, -i - 2 * j >= k + 1); printf("%d,%d,", 1 < j < 5, x - 5.25 <= x + y); printf("%d,%dn", i + j + k == -2 * j, k == j == i + 5); return 0; }
运行结果为
注:若自己经过计算会发现运行结果与书上的并不一样,我们自己的计算结果为1,1,0,1,0,0,这是因为 1 < j < 5这一段有两个判断,C语言只判断了前面的 1 < j 而不会计算后面的所以结果是1
4.2.2逻辑运算符和逻辑表达式
1.逻辑运算符
关系表达式只能描述单一的条件。对于较复杂的复合条件,例如“x小于10且x大于4”,如果用关系表达式“4 逻辑运算符如下表所示: 注意:与运算符&&和或运算符||都是双目运算符,非运算符!为单目运算符。 2.逻辑表达式 用逻辑运算符将两个表达式连接起来的式子称为逻辑表达式。逻辑表达式的一般形式为: 表达式1逻辑运算符表达式2 或 逻辑运算符表达式1 逻辑表达式的结果也是一个逻辑值“真”或“假”,即为“1”或“0”。 逻辑运算的真值表如下表所示。 关于逻辑表达式的说明 (1)参与逻辑运算的数据可以是1和0.也可以是非零值和0,还可以是任何类型的数据,但最终都是以非0和0来判断他们是“真”或“假”。 (2)在逻辑表达式中也可以使用赋值运算符,如“a&.&.(b=0)”,但是不能写成“a&.&.b=0”的形式。因为逻辑运算符的优先级高于赋值运算符,表达式“a&&b=0”相当于“(a&&b)=0”,赋值运算符左边不是变量,会出现编译错误。 (3)C语言规定,只对决定整个表达式值所需的最少数目的子表达式进行运算。即在由若干个子表达式组成的逻辑表达式中,从左向右计算,当计算出一个子表达式的值就确定了整个逻辑表达式的值时,此后就不再计算右边剩下的子表达式的值,这种情况称为“短路”。 ①对于逻辑与(&.&.)运算,若“&.&.”左边的表达式的值为假,则可以得出整个表达式的值为假 ,那么“&.&."”右边的表达式将不再进行计算;只有当“&&”左边的表达式值为真时,才计算右边表达式的值。 ②对于逻辑或(|)运算,若“|”左边的表达式的值为真,则可以得出整个表达式的值为真,那么“||”右边的表达式将不再进行计算;只有当“|”左边的表达式值为假时才计算右边表达式的值。 逻辑运算示例 编写程序,输入x,计算并输出下列分段函数f(x)的值(保留两位小数),要求调用sqrt()函数求平方根,调用pow()函数求幂。 输入三个实数,要求从小到大的顺序输出。 运行结果 编写程序,输入x,计算并输出下列分段函数f(x)的值(保留2位小数),要求调用pow()函数求幂 编写程序,判断输入的年份是否为闰年。要求分别使用if语句的标准格式、嵌套格式及多分支格式实现。 1.标准格式实现 说明: 2.嵌套格式实现 3.多分支格式实现 由键盘输入一个3位的整数,判断该数是否为升序数。若输入的不是3位数,输出“Enter error”。升序是指高位数依次小于其他低位数的数。入359为升序数: 输入一个三位数整数234结果为 : 说明:运算符 ! && || 名称 逻辑非 逻辑与 逻辑或 结合性 右结合 左结合 左结合 优先 高 → 低 x y !x x&&y x||y 0 0 1 0 0 0 非0 1 0 1 非0 0 0 0 1 非0 非0 0 1 1 #include
#include
#include
#include
#include
(1)变量year表示年份,leap作为“标志变量”,用于表示输人的年份是否为闰年。如果是闰年,就使leap的值为1,如果不是闰年,就使leap的值为0。最后检查leap的值,如果是1,就是闰年,输出“是国年”的信息;如果是0,就不是闰年,输出“不是闰年”的信息。
(2)if(leap)表示如果leap的值为真(为1),也可以等价写为if(leap!=0)。#include
#include
#include
(1)表达式“n<100||n>999”的含义是:变量n小于100或者大于999时其值为真。此时n不是3位数,不符合题意。
(2)表达式“a



