4.1 引例
【例4.1】输入三角形的三条边,判断是否能构成三角形,若能则计算并输出三角形的面积,否则给出出错提示。
例4.1:
#include<stdio.h>
#include<math.h>
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("三角形面积是:%f\n", area);
}
return 0;
}
运行结果:
请输入三角形的三条边长:3,4,5
三角形的面积是:6.000000
【例4.2】编写程序,输入x的值,按以下分段函数计算并输出y的值。
1/x x≠0
y=f(x)=
0 x=0
例4.2:
#include<stdio.h>
int 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;
}
运行结果1:
输入x的值:2
2,0.500000
运行结果2:
输入x的值:0
0,0.000000
说明:程序中用到了逻辑运算符“!”,含义是“非”。
4.2 关系运算符、逻辑运算符、条件运算符
<4.2.1> 关系运算符和关系表达式
1.关系运算符:关系运算符用于判断两个操作数的大小关系。
运算符 | 含义 |
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
== | 等于 |
!= | 不等于 |
注意:
(1)关系运算符都是双目运算符,其结合方向是左结合。
(2)关系运算符的优先级低于算术运算符,但是高于赋值运算符。
(3)关系运算符中,>、<、>=、<=的优先级相同,==、!=的优先级相同,前者的优先级高于后者,即“>=”的优先级高于“==”。
2.关系表达式:用关系运算符将两个表达式连接起来的式子称为关系表达式。
关系表达式的一般形式为:
表达式1 关系运算符 表达式2
关系表达式中允许出现嵌套的情况,例如:“a>(b>c)”、“a!=(c==d)”等。
注意:
(1)注意区分运算符“=”和“==”。“=”是赋值运算符,“==”是关系运算符。
(2)对实数进行相等判断可能得不到正确的结果,例如“1.0/3*3.0==1.0”的结果为0。
(3)关系表达式中可以出现赋值运算符,如“a>(b=0)”,但是不能写成“a>b=0”的形式。因为关系运算符的优先级高于赋值运算符,表达式“a>b=0”相当于“(a>b)=0”,赋值运算符左边不是变量,会出现编译错误。
关系表达式主要用于分支结构中的条件判断。关系表达式的结果是一个逻辑值“真”或“假”,用“1”表示“真”,“0”表示“假”。例如关系表达式“(a=3)>(b=8)”的值为0.
【例4.3】关系运算示例。
例4.3:
#include<stdio.h>
int 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,%d\n", i + j + k == -2 * j, k == j == i + 5);
return 0;
}
运行结果:
1,0,1,1,0,0
<4.2.2> 逻辑运算符和逻辑表达式
1.逻辑运算符:关系表达式只能是描述单一的条件。
运算符 | ! | && | || |
名称 | 逻辑非 | 逻辑与 | 逻辑或 |
结合性 | 右结合 | 左结合 | 左结合 |
优先级 | 高 | 中 | 低 |
注意:与运算符&&和或运算符||都是双目运算符,非运算符!为单目运算符。
2.逻辑表达式:用逻辑运算符