第5章
选择结构程序设计
第5章选择结构程序设计
第5章
选择结构程序设计
5.1 if语句
5.1.1 单分支if语句
格式: if (条件表达式)语句
功能: 先计算条件表达式的值, 如果条件表达式的
值为真(非0), 执行语句(选择体), 否则执行if语句的下一条语句。
NS图: 见图5 -1 之(a)。
第5章
选择结构程序设计
图5 -1
第5章
选择结构程序设计
例如:
(1) 如果x>0, 输出x。
if(x>0)printf(″x=%f″, x);
(2) 如果a等于b, 输出″a=b″。
if(a==b)printf(″%s″, ″a=b″);
第5章
选择结构程序设计
说明:
(1) 条件表达式必须用小括号括起, 同时注意区分
作为条件的表达式与作为数值的表达式。
(2) if语句中要选择执行的语句称为选择体, 选择体从语法上只能是一条语句, 如果选择体需多条语句描述, 必须采用复合语句。
第5章
选择结构程序设计
例如:如果x>0, 求x的平方根。
(1) 将结果放入变量y 中;
(2) 输出x的平方根。
if (x>0)
{y=sqrt(x);
printf(″平方根=%f″, y);
}
(3) 不管选择体多么复杂, 包含多少条语句, if语句
逻辑上是一条语句, 后面的双分支if语句、多分支if语句、switch语句、循环语句均是逻辑上的一条语句。
第5章选择结构程序设计例 5– 1计算y, y x 1 x 1
。
提示: x等于1函数无定义。程序如下: /*程序5 - 1,求函数值*/ main( ){float x; float y; printf(″请输入x:″); scanf(″%f″,&x); if (x!=1){y=(x+1)/(x -1); printf(″x=%6.2f, y=%6.2f\n″, x, y);}}输入数据: 1.2运行结果: x= 1.20, y= 11.00
第5章
选择结构程序设计
5.1.2 双分支if语句
格式: if (条件表达式)语句1 else 语句2
功能: 先计算条件表达式的值, 如果条件表达式的
值为真(非0), 执行语句1(选择体1), 否则执行语句2(选择体2), if语句执行完后执行if 语句的下条语句。
NS图: 见图5 -1之(b)。
第5章
选择结构程序设计
例如:
(1) 如果x>0, 输出x大于0, 否则输出x小于等于0。
if(x>0)printf(″x大于0″);
elseprintf(″x小于等于0″);
(2) 如果a等于b, 输出a等于b, 否则输出a不等于b。 if(a==b)printf(″a等于b″);
elseprintf(“a不等于b″);
第5章
选择结构程序设计
(3) 求两个数x、y的最大值max。
if(x>y)max=x;
else max=y;
(4) 判断整数i 的奇偶性。
if(i%2= =0)printf(″偶数\n″);
elseprintf(″奇数\n″);
第5章选择结构程序设计
(1) 双分支if语句形式上相当于单分支if语句扩展else分支而来, else分支称为else子句, else子句不能单独存在。
(2) 在其它高级语言中特别强调else子句前不能有分号, C语言中else子句前必有分号。
(3) 选择体如为多条语句同样必须采用复合语句。
(4) 可采用条件运算等价实现, 从而以表达式的形式参与运算。
例如, 上例中三个双分支if语句用条件运算描述:
①(x>0)?printf(″x大于0″): printf(″x小于等于0″) ②(a==b)?printf(″a等于b″):printf(″a不等于b″) ③(x>y)?max=x: max=y
第5章
选择结构程序设计
(5) 单分支if 语句可认为是双分支if 语句缺省else子句的特殊情况, 一条双分支if语句可用两条单分支if语句实现。
例如, 前例中三条双分支if语句改用单分支if语句实现: ①if (x>0)printf(″x大于0″);
if (x<=0)printf(″x小于等于0″);
②if (a==b)printf(″a等于b″);
if(a![KG-*2]=b)printf(″a不等于b″);
③if(x>y)max=x;
if(x<=y)max=y;
第5章选择结构程序设计
例5 –2计算y,y x 1
x 1x 1x 1
/*程序5 -2, 求函数值*/
main( )
{float x;
float y;
printf(″请输入x: ″);
scanf(″%f″, &x);
if (x>1)
y=x+1;
else
y=x-1;
printf(″x=%6.2f, y=%6.2f\n″, x, y);
}
输入数据: 1.2
运行结果: x= 1.20, y= 2.00
第5章
选择结构程序设计
例5 –3输入两个数, 求两个数的最大值、最小值。 数据分析:
输入量: 两个数x、y, float
输出量: 最大值max、最小值min, float
算法分析:
①输入两个数x、y
②比较两个数x、y 大小
如果x>y, max=x, min=y
如果x<y, max=y, min=x
③输出最大值max、最小值min
第5章选择结构程序设计
/*程序5 -3, 求两个数的最大值、最小值*/
main( )
{ float x, y;
float max, min;
printf(″请输入两个数x, y: ″);
scanf(″%f, %f″, &x, &y);
if (x>y)
{max=x;
min=y;
}
else
{max=y;
min=x;
}
printf(″max=%6.2f, min=%6.2f\n″, max, min);
}
输入数据: 1.2, 2.54
运行结果: max= 2.54, min= 1.20
第5章
选择结构程序设计
5.1.3 多分支if语句
一般形式:
if (条件表达式1)
if (条件表达式2)语句1
else 语句2
else
if (条件表达式3)语句3
else 语句4