第一课
本课主题: 关系表达式、逻辑表达式
教学目的: 掌握关系表达式、逻辑表达式的使用
教学重点: 关系运算符、逻辑运算符及其优先关系
教学难点: 关系表达式、逻辑表达式在程序中的运用
授课内容:
一、关系运算符与关系表达式
(1) C语言中的关系运算符:
大于 >
大于等于 >=
小于 <
小于等于 <=
等于 ==
不等于 !=(2) 关系运算符的优先级:
1) >、>=、<、<=优先级相等,==、!=优先级相等,前者高于后者。
2) 关系运算符的优先级低于算术运算符。
3) 关系运算符的优先级高于赋值运算符。(3) 关系表达式:
用关系运算符连接若干个算术表达式,叫关系表达式;算术表达式也是关系表达式。
(4) 关系表达式的值:
每个关系表达式有一个值,这个值可以是“真”或“假”,C语言中用“0”表示“假”,用非零表示“真”,(非零是许多数,当机器自动产生这个数时,他会产生 1)。
例:1<5 的值为真;5<1 的值为假;a=1, b=5 时 a==b 的值为假。
二、逻辑运算符与逻辑表达式
(1) 逻辑运算符
AND 逻辑乘 &&
OR 逻辑加 ||
NOT 逻辑非 !(2) 逻辑运算符优先级
1) ! 高于 && 高于 ||
2) &&,|| 低于关系运算符,!高于算术运算符。(3) 逻辑表达式
用逻辑运算符连接起来的关系表达式叫逻辑表达式,单独一个关系表达式也是逻辑表达式.
提问:a<b<c 与 a<b && b<c 有何区别?
三、if 语句
(1) if 语句的原型
if (表达式)
一个语句;
else
一个语句;
如果表达式的值为真,执行 if 后面的语句;如果表达式的值为假,执行情况 else 后面的语句。 一个语句指必须有一个语句,而且只能有一个语句。
(2) 简化的 if 语句
if (表达式)
一个语句;没有 else 部分.
(3) 复合的 if 语句
如果在一个语句处,要写多个语句,就要加上{}。
if (表达式)
{
语句;...
语句;
}
else
{
语句;...
语句;
}(4) 嵌套的 if 语句
就是 if 语句套 if 语句
if (表达式)
if (表达式)
语句
else
语句因为 if 可以简化,所有在嵌套时有时会出现歧义,例如上例中,else 是与第一个 if 配对,还是与第二个 if 配对?这种时候,系统就武断地认为 else 与最近的一个 if 相对应。
例:ax2+bx+c=0 求根 (a!=0) main()
{
float a,b,c;
float x1,x2,s;
printf("Please Input a,b,c:\n");
scanf("%f,%f,%f",&a,&b,&c);
s = b*b-4*a*c;
if (s<0)
printf("No Real Root");
else if (s==0)
{
x1 = -b/(2*a);
printf("x1=x2=%f",x1);
}
else
{
x1 = (-b+sqrt(s))/(2*a);
x2 = (-b-sqrt(s))/(2*a);
printf("x1=%f,x2=%f",x1,x2);
}
}
四、switch 语句的一般格式
switch 语句也叫多分支语句。
switch (表达式)
{
case 常量表达式1:
语句11; ... 语句1n;
case 常量表达式2:
语句21; ... 语句2n;
...
case 常量表达式3:
语句31; ... 语句3n;
default:
语句k1; ... 语句kn;
}当表达式的值等于“常量表达式1”时,执行语句11; ... 语句1n;21; ... 语句2n;31; ... 语句3n;语句k1; ... 语句kn;当表达式的值等于“常量表达式2”时,执行语句21; ... 语句2n;31; ... 语句3n;语句k1; ... 语句kn;当表达式的值等于“常量表达式3”时,执行语句31; ... 语句3n;语句k1; ... 语句kn;当表达式的值等于default,执行语句k1; ... 语句kn;
为了执行完语句11; ... 语句1n;不再向下执行,要在语句1n后加break;
switch (表达式)
{
case 常量表达式1:
语句11; ... 语句1n;break;
case 常量表达式2:
语句21; ... 语句2n;break;
...
case 常量表达式3:
语句31; ... 语句3n;break;
default:
语句k1; ... 语句kn;
}
五、示例:
六、练习:
根据一个人的出生年份,输出他的属相。