第二章 选择程序结构设计文档格式.docx

上传人:b****5 文档编号:15802610 上传时间:2022-11-16 格式:DOCX 页数:20 大小:85.85KB
下载 相关 举报
第二章 选择程序结构设计文档格式.docx_第1页
第1页 / 共20页
第二章 选择程序结构设计文档格式.docx_第2页
第2页 / 共20页
第二章 选择程序结构设计文档格式.docx_第3页
第3页 / 共20页
第二章 选择程序结构设计文档格式.docx_第4页
第4页 / 共20页
第二章 选择程序结构设计文档格式.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

第二章 选择程序结构设计文档格式.docx

《第二章 选择程序结构设计文档格式.docx》由会员分享,可在线阅读,更多相关《第二章 选择程序结构设计文档格式.docx(20页珍藏版)》请在冰豆网上搜索。

第二章 选择程序结构设计文档格式.docx

接下来我们就来学习if选择语句。

2.1.1if条件语句

C语言if条件语句的基本语法格式为:

if(条件表达式)

{

语句块1;

}

else

{

语句块2;

}

语法格式讲解:

✧如果if后面的条件表达式的值为“真”,则执行“语句块1”;

如果条件表达式的值为“假”,则执行else后面的“语句块2”。

✧执行完“语句块”之后,程序继续顺序往后执行,其程序流程图如图2-2所示。

✧对于语句块1和语句块2,在只有一条语句的情况下,其配对的大括号{}可以省略,否则不能省略。

实际上在C语言中用大括号{}括起来的多条语句我们称为复合语句,可以视为一条语句。

看一看想一想有没有语句块1和语句块2都执行的情况发生呢?

【例2-1】输入两个数,要求将数值大的赋给x,数值小的赋给y,并输出结果。

程序源代码:

#include<

stdio.h>

voidmain()

{

inta,b,x,y;

scanf(“a=%db=%d”,&

a,&

b);

/*从键盘接收两个数,分别存放于a、b中*/

if(a>

b)/*用于判断的条件表达式*/

{x=a 

;

y=b 

}/*将a的值赋予变量x;

b的值赋予变量y*/

else

{x=b 

y=a 

printf(“x=%dy=%d\n”,x,y);

/*从屏幕输出x和y的值*/

运行结果如图2-3:

图2-3程序运行结果

程序分析与解释:

如果变量a的值大于变量b的值,if条件表达式的值就为“真”,则执行完第一个花括号里的语句x=a 

之后,就不再执行else后面花括号中的语句,而直接执行else花括号后面的语句。

反之,如果变量a的值小于变量b的值,if条件表达式的值就为“假”,则程序不会执行else前面花括号中的语句,而是直接执行完else后面花括号中的语句后继续往下执行。

【例2-2】电影院为了提高效益,规定票价为12元/张,但团体购票可享受8折优惠(一次购票超过15张)。

试为该影院编写一个卖票收费程序。

【分析】设一次买票张数为x张,实收费y元。

由数学知识得知,这其实是一个分段函数:

显然,x为正整数,y为实数且应保留2位小数。

#include<

#include<

math.h>

voidmain()

{

intx;

floaty;

printf(“\npleaseinputx=”);

 scanf(“%d”,&

x);

if(x<

16)

y=x*12;

y=x*12*0.8;

printf(“\ny=%.2f”,y);

/*从屏幕输出变量y的值,并保留两位小数*/

运行结果如图2-4:

图2-4程序运行结果

C语句

C语言的语句可以是单个语句,也可以是由多个语句构成的复合语句。

if条件语句中花括号里的语句块是由多个语句构成的复合语句时,则必须要用花括号{}括起来,也可以是单个语句,这时则可以不用花括号括起来。

学到这里,同学们可能就会想,现实生活中有这种情况:

如果有条件的话就去“北京”,没有条件的话就哪里也不去。

其实这就是前面一个看一看,想一想中的提问。

像这样的问题,C语言程序中仍是用if语句来处理,不过其中就没有else语句了。

省略else的if语句基本格式如下:

if(条件表达式)

{语句块;

}

如果条件表达式的值为“真”则执行if中的“语句块”,执行完后直接往后执行。

语句执行流程如图2-6所示。

【例2-3】从键盘输入三个数a,b,c,按照从小到大的顺序输出

#include<

{inta,b,c,t;

scanf(“%d%d%d”,&

b,&

c);

b)

{t=a;

a=b;

b=t;

}/*交换变量a、b中的值*/

c)

a=c;

c=t;

}/*交换变量a、c中的值*/

if(b>

{t=b;

b=c;

}/*交换变量b、c中的值*/

printf(“%d,%d,%d”,a,b,c);

运行结果如图2-5:

图2-6程序运行结果

在此程序的if条件句中没有else语句,当程序执行到第一个if条件语句时,首先判断关系表达式a>

b的值,如果是为“真”,则执行t=a;

b=t,用一个t作为临时保存数据的变量,交换a与b的值;

反之如果表达式a>

b的值为“假”,则不执行t=a;

b=t,跳过第一个花括号去执行下一条语句;

第二个if条件语句,判断表达式a>

c的值,如果表达式的值为“真”则执行第二个花括号里面的内容t=a;

c=t,如果表达式的值为“假”则跳出第二个if语句,继续执行下面的语句。

依此类推判断出三个数据的大小,按从小到大的顺序分别保存于变量a,b,c中并输出。

通过上面的学习,我们不难发现以上例子的程序源代码中if条件表达式的值都为逻辑值。

且表达式可以是关系表达式或是逻辑表达式等,对于各种表达式我们在第1章中已经详细学习过了,本章我们只是加以运用,如例2-5。

【例2-4】计算三角形的面积

#include“math.h”

voidmain()

floata,b,c,l,s;

printf(“\nPleaseinputa,b,c:

”);

 scanf(“%f,%f,%f”,&

/*先判断能否构成三角形,若能,才求面积!

*/

if(a>

0&

&

b>

c>

a+b>

c&

b+c>

a&

c+a>

l=(a+b+c)/2;

s=sqrt(l*(l-a)*(l-b)*(l-c));

printf(“\ns=%.2f”,s);

printf(“\nDataError!

该程序的if条件判断表达式是几种表达式的混合使用。

但最终的值只能是“真”或者“假”。

看一看想一想请分析下列if语句格式是否正确,为什么?

①if(n>

0)printf("

%f"

n)/*错误!

*/

elseprintf("

-n);

②if(n>

0){n=n+m;

printf("

n);

}/*正确!

③if(n>

0)

n=n+m;

n)

};

/*错误!

else

④if(n>

0)n=n+m;

/*错误*/

2.1.2if条件语句的嵌套

前面小节我们学到了用if条件语句来处理程序流程简单分支的情况,那么如果条件有多个的情况,或者是说程序流程有多种分支的时候怎么办呢?

这时我们可以用if语句的嵌套形式来完成程序流程的控制。

语法格式如下:

if(条件表达式1)

{语句块1}

elseif(条件表达式2)

{语句块2}

……

elseif(条件表达式n)

{语句块n}

{语句块n+1}

按顺序依次判断条件表达式1、条件表达式2……,一直到条件表达式n,如果条件表达式1成立,则执行完语句块1后直接跳出if语句;

如果条件表达式1不成立,则判断条件表达式2,成立则执行完语句块2后直接跳出if语句;

如果条件表达式2不成立,则判断条件表达式3是否成立,依此类推,直到条件表达式n不成立,则执行完语句块n+1后直接执行该if语句后面的程序。

如图2-7所示。

图2-7if语句的多分支结构

【例2-5】有一分段函数,y=f(x)。

当x小于6时,y=x-12;

当x大于等于6且小于15时,y=3x-1;

当x大于等于15时,y=5x+9。

本例根据题意,任意输入一整数x,从而输出相应的y值。

程序源代码:

intx,y;

printf(“请输入自变量x:

scanf(“%d”,&

if(x<

6)

y=x-12;

printf(“x=%d,y=%d\n”,x,y);

}

elseif(x<

15)

y=3*x-1 

printf(“x=%d,y=%d\n”,x,y) 

else

y=5*x+9 

printf(“x=%d,y=%d\n”,x,y) 

首先给出自变量x的值,根据自变量x的值,程序将做出判断。

首先,判断x是否为小于6的整数,若是,则按照语句:

y=x-12计算出因变量y的值,并将其输出,不再继续执行下面的判断语句,而是直接跳出if判断结构。

在本例中则是跳出整个程序。

若x不是小于6的整数,接着会判断其是否小15,如果是,则会执行语句:

y=3*x-1 

计算出因变量y的值并输出,接着跳出程序。

如果判断还不满足条件,说明x一定是大于等于15的整数,程序便会按照语句:

y=5*x+9来计算y的值,最后同样也是输出y的值并结束程序。

【例2-6】要求输入百分制成绩,然后按此成绩输出成绩等级(90-100分为A,80-89分为B,70-79分为C,60-69分为D,60分以下为E)。

intscore;

printf(“Enterascorefrom0to100:

score);

printf(“Thegradeis:

if(score>

=90)

printf(“%c\n”,’A’);

elseif(score>

=80)

printf(“%c\n”,’B’);

elseif(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 调查报告

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1