选择结构
条件判断
计算机的智能是建筑在规则的基础上的,在遇到情况的时候,根据事先制定的规则做出判断,是计算机最基本的能力。
能做判断的基础,是能对数据做比较,比较就是关于两个数据是否相等、谁大谁小的结论,这需要用到关系运算:对两个数据之间的关系的计算。
C语言提供了六个关系运算符:
(1)== 相等 (2) != 不相等 (3)> 大于
(4)< 小于 (5)<= 小于或等于 (6)>= 大于或等于
注意其中有两个字符的运算符:==、>=和<=的两个字符必须紧紧连在一起,中间不能插入空格。
关系运算的结果是一个逻辑值,逻辑值只有两种可能的值:true(真,1表示成立)或false(假,0表示不成立)。当两个值的关系符合关系运算符的预期时,关系运算的结果为true,否则为false。
优先级:算术运算符优先级最高,关系运算符次之,赋值运算符优先级最低。
#include<stdio.h>
int main()
{
const double RATE = 8.25;
const int STANDARD = 40;
double pay = 0.0;
int hours;
printf("请输入工作的小时数:");
scanf("%d",&hours);
printf("\n");
if(hours > STANDARD)
{
pay = STANDARD * RATE + (hours - STANDARD) * (RATE * 1.5);
}
else
{
pay = hours * RATE;
}
printf("应付工资:%f\n", pay);
return 0;
}
if语句和用if语句构成的选择结构
if语句有两种基本形式(1)不含else子句的if语句(2)含else子句的if语句
不含if子句的if语句形式:if(表达式)语句
含if子句的if语句形式:
if(表达式)语句1
else 语句2
执行过程:首先计算紧跟在if后面一对圆括号中的表达式的值。如果表达式的值为非零(“真”),则执行其后的if子句,然后去执行if语句后的下一条语句;如果表达式的值为零(“假”),则跳过if子句,直接执行if语句后的下一条语句。
else不是一条独立的语句,它只是if语句的一部分
发生嵌套时,if子句的一对花括号不可缺少,else子句总是与前面最近的不带else的if相结合
#include <stdio.h>
int main()
{
int g;
printf("Enter g:");
scanf("%d", &g);
printf("g = %d:", g);
if(g >= 90)
printf("A\n");
else if(g >= 80) printf("B\n");
else if(g >= 70) printf("C\n");
else if(g >= 60) printf("D\n");
else printf("E\n");
return 0;
}
条件表达式构成的选择结构
条件表达式形式: 表达式1?表达式2:表达式3
当表达式1的值为非零时,条件表达式值为表达式2的值。当表达式1的值为0时,条件表达式的值为表达式3的值
switch语句以及用switch语句和break语句构成的选择结构
switch 语句形式:
switch(表达式)
{
case 常量表达式1 :语句1
case 常量表达式2 :语句2
…
case 常量表达式n :语句n
default :语句n+1
}
执行过程:先计算表达式的值,再寻找与该值符合的case标号,如果有则执行该标号后开始的语句,如果没有则从default标号后的语句开始执行。
break语句又称为间断语句,每当执行到break语句时,立即跳出switch语句体。
goto语句称为无条件转向语句
goto 语句标号;
goto语句的作用就是把程序的执行转向语句标号所在的位置。
#include <stdio.h>
int main()
{
int g;
printf("Enter a mark:");
scanf("%d", &g);
printf("g = %d:", g);
switch(g/10)
{
case 10 :
case 9 : printf("A\n"); break;
case 8 : printf("B\n"); break;
case 7 : printf("C\n"); break;
case 6 : printf("D\n"); break;
default: printf("E\n");
}
return 0;
}