导图社区 C语言选择程序设计
这是一张主要讲解C语言选择程序设计的思维导图,详细的归纳了用ifY语句实现选择结构、关系运算符和关系表达式、逻辑运算和逻辑表达式等内容知识,赶快学习起来吧!
编辑于2021-07-28 21:14:43C语言选择程序设计
用if语句实现选择结构
if Statement
if (test expression) { // code }
if...else Statement
if (test expression) { // run code if test expression is true } else { // run code if test expression is false }
if...else Ladder
if (test expression1) { // statement(s) } else if(test expression2) { // statement(s) } else if (test expression3) { // statement(s) } . . else { // statement(s) }
Nested if...else
#include <stdio.h> int main() { int number1, number2; printf("Enter two integers: "); scanf("%d %d", &number1, &number2); if (number1 >= number2) { if (number1 == number2) { printf("Result: %d = %d",number1,number2); } else { printf("Result: %d > %d", number1, number2); } } else { printf("Result: %d < %d",number1, number2); } return 0; }
关系运算符和关系表达式
关系运算符
逻辑运算符和逻辑表达式
三种逻辑运算符
示例
#include<stdio.h> int main(){ char letter; printf("Please enter an upper case letter:"); scanf("%c", &letter); if((letter >= 'A') && (letter <= 'Z')) { letter += 'a' - 'A'; printf("You entered an uppercase %c.\n", letter); } else{ printf("You didn't enter an uppercase letter.\n"); } return 0; }
条件运算符和条件表达式
(a>b)?a:b
if(a>b) max=a; else max=b;
有一种 if 语句,当被判别的表达式的值为“真”或“假”时,都执行一个赋值语句且向同一个变量赋值
例子
#include <stdio.h> int main(){ double unit_price = 3.5; double discount1 = 0.05; double discount2 = 0.1; double discount3 = 0.15; double total_price = 0.0; int quantity = 0; printf("Please enter the number that you want to buy: "); scanf("%d", &quantity); total_price = unit_price * (1.0 -(quantity > 50 ? discount3 : ( quantity > 20 ? discount2 : (quantity >10 ? discount1 : 0.0)))); printf("The price for %d is %7.2f\n", quantity, total_price); return 0; }
switch语句实现多分支选择结构
多分支选择
成绩分类(85 分以上为 A,70-85 为 B,60-69 为 C 等)
人口的分类(可以分为老、中、青、少、儿童)
如果我们使用 if 语句就会嵌套很多层数,影响可读性。
举例
#include <stdio.h> int main(){ char grade; scanf("%c", &grade); switch(grade){ case 'a': printf("85-100\n"); break; case 'b': printf("70-84\n"); break; case 'c': printf("60-69\n"); break; case 'd': printf("50-59\n"); break; default : printf("不及格,兄弟!!\n"); } return 0; }
等级 grade 定义为字符变量,从键盘输入一个小写字母,赋给变量 grade,switch 得到 grade 的值并和各 case 中给定的值('a''b''c''d'之一)相比较,如果和其中之一相同,则执行该 case 后面的语句(即 printf 语句)。如果输入的字符与'a''b''c''d'都不相同,就执行 default 后面的语句,输出 error!信息。
注意每个 case 语句中,后面都有一个 break 语句,该语句的作用是使得当前流程跳转到闭括号 '}' 后面的语句。
语法
switch(表达式) { case 常量 1:语句 1 case 常量 2:语句 2 . . . case 常量 n :语句 n default : 语句 n+1 }
switch 括号内的“表达式”,其值的类型应为整数类型或者字符类型,不可以是其他数据类型。
default 语句为选择项,可有可无。另外,default 后面可以不加 break 语句。