副标题#e#
在措施的三种根基布局中,第二种即为选择布局,其根基特点是:措施的流程由多路分支构成,在措施的一次执行进程中,按照差异的环境,只有一条支路被选中执行,而其他分支上的语句被直接跳过。
C语言中,提供if语句和switch语句选择布局,if语句用于两者选一的环境,而switch用于多分支选一的景象。
3.3.1 if语句
1.if语句的两种根基形式首先,我们看一个例子,由此相识选择布局的意义及设计要领。
[例3-5]输入三个数,找出并打印其最小数。阐明:设三个数为A、B、C,由键盘读入,我们用一个变量MIN来标识最小数,A、B、C与MIN皆界说为int型变量。
每次较量两个数,首先较量A和B,将小的一个赋给MIN,再把第三个数C与MIN较量,再将小的一个赋给MIN,则最后MIN即为A、B、C中最小数。
算法如下:
1)输入A、B、C。
2)将A与B中小的一个赋给MIN。
3)将MIN与C中小的一个赋给MIN。
4)输出MIN。
将第2)步细化为:若A<B,则MIN<==A,不然:MIN<==B;其流程图见图3-1。
第3)步细化为:若C<MIN,则MIN<==C;其流程图见图3-2。
对应图3-1和图3-2,正是if语句的两种根基形式,与图3-2对应的if语句的名目为:
if <表达式> 语句
当表达式为真时,执行语句,表达式为假时跳过语句。
与图3-1对应的if语句的名目为:
if〈表达式〉
语句1
else
语句2
当表达式为真时,执行语句1,表达式为假时执行语句2。无论如何,语句1与语句2每次只能有一个被执行。
要留意的是:if或if…else,包罗后头要讲到的嵌套if,即if…elseif…被当作是一条语句,纵然个中的语句是包括多条语句的复合语句,仍然如此。
下面是例3-5的源措施:
main()
{
int a,b,c,min;
printf("input a,b,c:");
scanf("%d%d%d",&a,&b,&c);
if(a<b)
min=a;
else
min=b;
if(c<min)
min=c;
printf("There sult is%d\n",min);
}
执行环境如下:
RUN
inputa,b,c:3 5 2
Theresultis:2
这里顺便提一下措施书写的缩排问题,所谓缩排,就是下一行与上一行对比,行首向右缩进若字符,如上例的min=a、min=b等。适当的缩排能使措施的布局、条理清晰、一目了然,增加措施的易读性。应该从一开始就养成一个较量好的书写习惯,包罗须要的注释、适当的空行以及缩排。
#p#副标题#e#
2.复合语句
if语句中,有时需要执行的语句不止一条,这就要用到复合语句。复合语句,就是用一对花括号括起来的一条或多条语句,形式如下:
{
语句1;
语句2;
.......
语句n;
}
无论包罗几多条语句,复合语句从逻辑上讲,被当作是一条语句。复合语句在分支布局、轮回布局中,利用十分遍及。
[例3-6]读入两个数x、y,将大数存入x,小数存入y。阐明:x、y从键盘读入,若x>=y,只需顺序打出,不然,应将x,y中的数举办互换,然后输出。两数互换必需利用一其中间变量t,界说三个浮点数x、y、t。
算法:
1)读入x、y;
2)大数存入x,小数存入y;
3)输出x、y。
第2)步求精:
若x<y,则互换x与y;
再求精,x与y互换;
①t<==x
②x<==y
③y<==t
算法的流程图见图3-3,措施如下:
#include <stdio.h>
main()
{
float x,y,t;
printf("input x,y:");
scanf("%f%f",&x,&y);
if(x<y)
{
t=x;
x=y;
y=t;
}
printf("result:%7.3f\t%7.3f\n",x,y);
}
执行功效:
input x,y:43.256.7
result:56.70043.200