关系运算符和相等类运算符 关系运算符
关系运算符
含义
<
小于
>
大于
<=
小于或等于
>=
大于或等于
表达关系式的类型是int。如果指定的关系为真,关系表达式的值是1;如果指定的关系为假,关系表达式的值是0。
相等类运算符
相等类表达式的类型是int。如果指定的关系为真,相等类表达式的值是1;如果指定的关系为假,相等类表达式的值是0。
逻辑运算符 逻辑非运算符 逻辑非运算符是 ! ,属于单目运算符。
逻辑非运算符和运算对象构成的表达式的类型是int。如果运算对象的值不等于0,表达式的值是0;如果运算对象的值等于假,相等类表达式的值是1。
逻辑与运算符 逻辑与运算符是&&,属于双目运算符。
逻辑与运算符和运算对象构成的表达式的类型是int。如果两个运算对象的值都不等于0,表达式的值是1;否则,表达式的值是0。即任何一个运算对象的值等于0,表达式的值是0
逻辑非运算符 逻辑非运算符是||,属于双目运算符。
逻辑或运算符和运算对象构成的表达式的类型是int。如果任何一个运算对象的值不等于0,表达式的值是1;否则,表达式的值是0。即只有两个运算对象的值都等于0,表达式的值才是0
if语句 第一种形式
其功能是:如果表达式的值不等于0,则执行其后的语句;否则,不执行该语句。
第二种形式
其功能是:如果表达式的值不等于0,则执行语句1;否则,执行语句2。
嵌套的if语句 if 语句的两种形式中,如果“语句”、“语句1”或“语句2”也是if语句,称为嵌套的if语句。
编程练习 编程练习4.1 输入整数和,如果大于,则输出的值;否则,输出的值。输入整数𝑎和𝑏,如果𝑎^2+𝑏^2大于100,则输出𝑎+𝑏的值;否则,输出𝑎−𝑏的值。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include <stdio.h> int main (void ) { int a; int b; printf ("请输入a的值:" ); scanf ("%d" ,&a); printf ("请输入b的值:" ); scanf ("%d" ,&b); if (a * a + b * b > 100 ) { printf ("a + b = %d\n" ,a + b); } else { printf ("a - b = %d\n" ,a - b); } return 0 ; }
编程练习4.2 输入整数 n ,如果 n 既是 5 的整倍数又是 7 的整倍数,则输出 yes,否则输出 no 。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include <stdio.h> int main (void ) { int n; printf ("请输入一个整数:" ); scanf ("%d" ,&n); if (n % 5 == 0 && n % 7 == 0 ) { printf ("yes\n" ); } else { printf ("no\n" ); } return 0 ; }
编程练习4.3 商场为促销实行打折销售商品,折扣规则如表所示。
商品数量
折扣
x < 5
0
5 ≤ x < 10
1%
10 ≤ x < 21
2%
21 ≤ x < 30
4%
30 ≤ x
6%
假定商品的价格为 p 元,编程计算某顾客购买 x 件商品的应付金额。计算公式为: 𝑠𝑢𝑚=𝑝∗𝑥∗(1−𝑑)其中,sum 为应付金额,d 为折扣数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 #include <stdio.h> int main (void ) { double p; int x; double sum; double d; int b; printf ("请输入商品的数量:" ); scanf ("%d" ,&x); printf ("请输入商品的单价:" ); scanf ("%lf" ,&p); if (x < 5 ) { d = 0 ; b = d * 100 ; sum = p * x * (1 -d); } else if (x < 10 ) { d = 0.01 ; b = d * 100 ; sum = p * x * (1 -d); } else if (x < 21 ) { d = 0.02 ; b = d * 100 ; sum = p * x * (1 -d); } else if (x < 30 ) { d = 0.04 ; b = d * 100 ; sum = p * x * (1 -d); } else { d = 0.06 ; b = d * 100 ; sum = p * x * (1 -d); } printf ("你购买了%d件商品\n单价为%.2lf元\n折扣数为:%d%\n结算价格为%.2lf元\n" ,x,p,b,sum); return 0 ; }
编程练习4.4 输入0~9或’a’~‘f’或’A’~‘F’中的一个字符,代表一个十六进制数,将其转换为十进制数,求该数与15的和并输出。例如,输入a,输出25。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 #include <stdio.h> int main (void ) { char ch; int result; printf ("请输入字符:" ); scanf ("%c" ,&ch); if (ch == 'a' || ch == 'A' ){ result = 10 + 15 ; } else if (ch == 'b' || ch == 'B' ) { result = 11 + 15 ; } else if (ch == 'c' || ch == 'C' ) { result = 12 + 15 ; } else if (ch == 'd' || ch == 'D' ) { result = 13 + 15 ; } else if (ch == 'e' || ch == 'E' ) { result = 14 + 15 ; } else if (ch == 'f' || ch == 'F' ) { result = 15 + 15 ; } else if (ch >= '0' && ch <= '9' ) { result = ch - 48 + 15 ; } else { printf ("请检查输入!\n" ); return ; } printf ("%d\n" ,result); }
编程练习4.5 输出一张如下所示的时间表:
根据输入的序号显示相应的问候信息:输入 1 时,输出 Good morning ;输入 2 时,输出 Good Afternoon ;输入 3 时,输出 Good night; 对于其他的输入,则输出 error 。