【任务1】 输入一个学生成绩(0~100),判断其是否及格,及格输出,否则不输出。
①键盘输入一个学生成绩,赋值给变量。
②使用关系运算符和逻辑运算符判断成绩是否在60~100,是,则输出“该学生成绩及格”;否,则不输出。
(1)关系运算符和关系表达式
在编写程序的过程中经常会需要比较两个数或多个数的大小关系,根据比较的结果来决定程序的下一步走向。在C语言中,比较两个或多个数大小的运算符称为关系运算符。
1)关系运算符及优先级
类型说明符 数组名[常量表达式]
①优先级:
•在上面6种关系运算符中,前4种优先级别相同,后2种优先级别相同。前4种优先级别高于后2种。
•优先级别:算术运算符>关系运算符>赋值运算符。
②关系运算符的值:
•关系运算的值有两种:“真”和“假”。如果满足运算符的定义,则结果为“真”,否则结果为“假”。在C语言编译系统给出关系运算值时,以1代表真,0代表假。
•在对两个数值进行关系运算时,是比较两个数值的大小;在对两个字符进行关系运算时,是比较两个字符的ASCII码的大小;不可以直接比较两个字符串的大小。
③关系运算符的结合性:
关系运算符都是双目运算符,其结合性均为自左至右。
2)关系表达式
①用关系运算符将两个表达式连接起来构成有意义的式子,称为关系表达式。
②关系表达式的格式:
(表达式)关系运算符(表达式)
例如:a>b、s!=m、5>6、(a+2)>=(b-5)等都是合法的关系表达式。
注意: C语言中,关系表达式的判断结果是以1代表真,0代表假。但反过来在判断一个量是真还是假时,则以0代表假,非0的数值代表真。
【例3.1】 int a=3,b=5,c=2,求以下表达式的值:
① a>b将a和b的值代入进去为3>5,不成立,结果为假,即0;
② a+c==b 算术运算符优先级别高于关系运算符,表达式可以改为(a+c)==b,将a,b和c的值代入进去为(3+2)==5,成立,结果为真,即1;
③ a>0!=c 将a和c的值代入进去为(3>0)!=2,成立,结果为真,即1;
④ a+b<0将a和b的值代入进去为(3+5)<0,不成立,结果为假,即0。
(2)逻辑运算符和逻辑表达式
1)逻辑运算符
逻辑运算符的说明和结合性见表3-1。
表3-1逻辑运算符
①优先级:
•!>&&>||。
•!>算术运算符赋>关系运算符>&&>||>赋值运算符。
②逻辑运算符的值:真值表见表3-2
表3-2真值表
逻辑运算的值也为真和假两种,分别用1和0来表示。
2)逻辑表达式
①用逻辑运算符将表达式连接起来构成有意义的式子,称为逻辑表达式。
②关系表达式的格式:
(表达式)逻辑运算符(表达式)
例如:a&&b、s||m、!k、(a*b)||c等都是合法的逻辑表达式。
【例3.2】 int a=1,b=4,c=0求以下表达式的值。
① a&&b 将a和b的值代入进去为1&&4,成立,结果为真,即1;
② a||c 将a和c的值代入进去为1||0,成立,结果为真,即1;
③ a&&b&&c 将a、b和c的值代入进去为1&&4&&0,不成立,结果为假,即0;
④ !a||!b||!c 将a、b和c的值代入进去为!1||!4||!0,成立,结果为真,即1。
注意: 在C语言中,逻辑表达式具有一定的短路特性。逻辑表达式在求解时,并非所有的逻辑运算符都被执行,只在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。
例如:
a&&b&&c 只有在a的值为真时,才判断b的值,只有在a和b的值都为真时,才判断c的值。
a||b||c 只有在a的值为假时,才判断b的值,只有在a和b的值都为假时,才判断c的值。