目录
1.0、选择结构和条件的判断
在我们生活种,往往需要做出许多的选择,例如:是否前往学校、是否完成作业等等,我们将根据已知的条件做出对自己最合理的判断,比如学校是否通知今天放假,如果没有通知那肯定需要前往学校,要不然那不成旷课了吗?
在计算机中也存在着选择,我们可以设置一些条件,让计算机来选择,满足设立的条件就执行一些语句,否则的话执行另一些语句,C语言有两种选择结构的语句:(1)if语句,用来实现两个分支的选择结构;(2)switch语句,用来实现多分支的选择结构。.
1.1、用if语句实现选择结构
1.1.1、用if语句处理选择结构举例
if语句中的“表达式”可以是关系表达式、逻辑表达式,甚至是数值表达式。其中最直观、最容易理解的是关系表达式,例如:
要求得方程的根,由键盘输入a,b,c。假设a,b,c的值任意,确保
。需要在程序中设置判断,如果
,就计算并输出方程的两个实根,如果
,就输出“此方程无实根”的信息。
解题思路:
编写程序:
#include <stdio.h>
#include <math.h>
int main()
{
double a,b,c,disc,x1,x2,p,q;
scanf("%lf%lf%lf",&a,&b,&c);
disc=b*b-4*a*c;
if(disc<0)
printf("此方程无实根\n");
else
{
p=-b/(2.0*a);
q=sqrt(disc)/(2.0*a);
x1=p+q;
x2=p-q;
printf("两个实根为:\nx1=%72.f\nx2=%7.2f\n",x1,x2);
}
return 0;
}
在这段程序中第8行if(disc<0),其中“disc<0”就是一个关系表达式。所谓的关系表达式就是两个数值进行比较的式子。
1.1.2、if语句的一般形式
if语句的一般形式如下:
if(表达式)语句1
[else 语句2]
在上面的if语句的一般形式中,方括号内的部分(即else子句)为可选的,即可有的,也可以没有。
语句1和语句2可以是一个简单的语句,也可以是一个复合语句,还可以是一个if语句(即在一个if语句中又包含另一个或者多个if语句)。
根据if语句的一般形式,if语句可以写成不同的形式,最常见的有3种形式:
(1)if(表达式) 语句1 (没有else子句部分)
(2)if(表达式) (有else子句部分)
语句1
else
语句2
(3)if(表达式1)语句1
else if(表达式2)语句2
else if(表达式3)语句3
... ...
else if(表达式n) 语句n
else 语句n+1
例如:
if (number>600) cost=0.25;
else if (number>500) cost=0.20;
else if (number>400) cost=0.15;
else if (number>30) cost=0.05;
else cost=0;
这种形式相当于:
if (number>600)
cost=0.25;
else
if (number>500)
cost=0.20;
else
if (number>400)
cost=0.15;
else
if (number>30)
cost=0.05;
else
cost=0;
写成上面的“if···else if···else if···else if···else”形式更为直观和简介。
注意:
(1)整个if语句可以写在多行上,也可以写在一行上,如:
if(x<y) x=1; else y=-1;
但是,为了程序的清晰,提倡写成锯齿形式。
(2)在最常见的有3种形式中的一般形式(3)中“语句1”“语句2”“语句n”等都是if语句中的“内嵌语句”。它们是if语句中的一部分。每个内嵌语句的末尾都应当有分号,因为分号是语句中的必要成分。如:
if(x<y)
x=1; //语句末尾必须有分号
else
y=-1; //语句末尾必须有分号
不能写成:
if(x<y)x=1 else y=-1; //“语句1”的末尾缺少分号
如果无此分号,则出现语法错误。
(3)if语句无论写在几行上,都是一个整体,属于同一个语句。不要误认为if部分是一个语句,else部分是另一个语句。不要一看见分号,就以为是if语句结束了。在系统对if语句编译时,若发现内嵌语句结束(出现分号),还要检查其后有无else,如果无else,就认为整个if语句结束了。
(4)内嵌语句也可以是一个if语句,if的表达式只分真和假来表示是或否,0为假,非零数为真。