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

上传人:b****6 文档编号:20733159 上传时间:2023-01-25 格式:DOCX 页数:32 大小:23.54KB
下载 相关 举报
第4章 选择结构程序设计pptConvertorWord文档格式.docx_第1页
第1页 / 共32页
第4章 选择结构程序设计pptConvertorWord文档格式.docx_第2页
第2页 / 共32页
第4章 选择结构程序设计pptConvertorWord文档格式.docx_第3页
第3页 / 共32页
第4章 选择结构程序设计pptConvertorWord文档格式.docx_第4页
第4页 / 共32页
第4章 选择结构程序设计pptConvertorWord文档格式.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

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

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

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

{

doublea,b,c,disc,x1,x2,p,q;

scanf("

%lf%lf%lf"

&

a,&

b,&

c);

disc=b*b-4*a*c;

计算b2-4ac,disc的值变为-15

if(disc<

0)

printf(“hasnotrealroots\n”);

else

{p=-b/(2.0*a);

q=sqrt(disc)/(2.0*a);

x1=p+q;

x2=p-q;

printf(“realroots:

\nx1=%7.2f\n

x2=%7.2f\n”,x1,x2);

}

return0;

}

-15<

0为真

计算b2-4ac,disc的值变为8

8<

0为假

p的值变为-1

q的值变为0.71

x1的值变为-0.29

x2的值变为-1.71

选择结构,用if语句实现的

复合语句

4.2.1用if语句处理选择结构举例

4.2.2if语句的一般形式

例4.2输入两个实数,按代数值由小到大的顺序输出这两个数。

只需要做一次比较,然后进行一次交换即可

用if语句实现条件判断

关键是怎样实现两个变量值的互换

A

B

互换前

互换后

C

intmain()

{floata,b,t;

%f,%f"

b);

if(a>

b)

{t=a;

a=b;

b=t;

printf("

%5.2f,%5.2f\n"

a,b);

将a和b的值互换

如果a>

b

例4.3输入3个数a,b,c,要求按由小到大的顺序输出。

可以先用伪代码写出算法:

ifa>

b,a和b对换(a是a、b中的小者)

c,a和c对换(a是三者中最小者)

ifb>

c,b和c对换(b是三者中次小者)

顺序输出a,b,c

{floata,b,c,t;

%f,%f,%f"

}

c)

a=c;

c=t;

if(b>

c)

{t=b;

b=c;

%5.2f,%5.2f,%5.2f\n"

a,b,c);

如果a>

b,将a和b对换

a是a、b中的小者

c,将a和c对换

a是三者中的小者

如果b>

c,将b和c对换

b是三者中的次小者

if(表达式)语句1

[else语句2]

关系表达式

逻辑表达式

数值表达式

方括号内的部分为可选的

简单的语句

另一个if语句等

最常用的3种if语句形式:

1.if(表达式)语句1(没有else子句)

2.if(表达式)语句1

else语句2(有else子句)

3.if(表达式1)语句1

elseif(表达式2)语句2

elseif(表达式3)语句3

elseif(表达式m)语句m

else语句m+1

(在else部分又嵌套了多层的if语句)

if(number>

500)cost=0.15;

elseif(number>

300)cost=0.10;

100)cost=0.075;

50)cost=0.05;

elsecost=0;

if(number>

else

if(number>

elsecost=0;

等价于

分号不能丢

说明:

(1)整个if语句可写在多行上,也可写在一行上

但都是一个整体,属于同一个语句

(2)“语句1”…“语句m”是if中的内嵌语句

内嵌语句也可以是一个if语句

(3)“语句1”…“语句m”可以是简单的语句,也可以是复合语句

4.3.1关系运算符及其优先次序

4.3.2关系表达式

关系运算符:

用来对两个数值进行比较的比较运算符

C语言提供6种关系运算符:

①<(小于)②<=(小于或等于)

③>(大于)④>=(大于或等于)

⑤==(等于)⑥!

=(不等于)

优先级相同(高)

优先级相同(低)

关系、算术、赋值运算符的优先级

c>

a+b等效于c>

(a+b)

a>

b==c等效于(a>

b)==c

a==b<

c等效于a==(b<

a=b>

c等效于a=(b>

用关系运算符将两个数值或数值表达式连接起来的式子

关系表达式的值是一个逻辑值,即“真”或“假”

在C的逻辑运算中,以“1”代表“真”,以“0”代表“假”

4.4.1逻辑运算符及其优先次序

4.4.2逻辑表达式

4.4.3逻辑型变量

3种逻辑运算符:

&

(逻辑与)||(逻辑或)!

(逻辑非)

和||是双目(元)运算符

!

是一目(元)运算符

用逻辑运算符将关系表达式或其他逻辑量连接起来的式子

判断年龄在13至17岁之内?

age>

=13&

age<

=17

判断年龄小于12或大于65?

age<

12||age>

65

a

a

b

a&

a||b

逻辑运算的真值表

逻辑运算符的优先次序

→&

→||(!

为三者中最高)

与其他运算符的优先次序

(高)

算术运算符

关系运算符

&

和||

赋值运算符(低)

逻辑表达式的值应该是逻辑量“真”或“假”

编译系统在表示逻辑运算结果时

以数值1代表“真”,以0代表“假”

但在判断一个量是否为“真”时

以0代表“假”,以非0代表“真”

注意:

将一个非零的数值认作为“真”

(1)若a=4,则!

a的值为0

(2)若a=4,b=5,则a&

b的值为1

(3)a和b值分别为4和5,则a||b的值为1

(4)a和b值分别为4和5,则!

a||b的值为1

(5)4&

0||2的值为1

修改后的逻辑运算真值表

非0

1

判别某一年是否闰年,用逻辑表达式表示

闰年的条件是符合下面二者之一:

①能被4整除,但不能被100整除,如2008

②能被400整除,如2000

(year%4==0&

year100!

=0)

||year%400==0

如果表达式值为1,则闰年;

否则为非闰年

这是C99所增加的一种数据类型

可以将关系运算和逻辑运算的结果存到一个逻辑型变量中,以便于分析和运算

有一种if语句,当被判别的表达式的值为“真”或“假”时,都执行一个赋值语句且向同一个变量赋值

如:

if(a>

max=a;

max=b;

条件运算符

max=(a>

b)?

a:

b;

条件表达式

条件表达式的一般形式为

表达式1?

表达式2:

表达式3

条件运算符的执行顺序:

求解表达式1

若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值

若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值

条件运算符优先于赋值运算符

条件运算符的结合方向为“自右至左”

以下为合法的使用方法:

b?

(max=a):

(max=b);

printf(“%d”,a):

printf(“%d”,b);

例4.4输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;

如果不是,不转换。

然后输出最后得到的字符。

用条件表达式来处理,当字母是大写时,转换成小写字母,否则不转换

{

charch;

%c"

ch);

ch=(ch>

='

A'

ch<

Z‘)?

(ch+32):

ch;

%c\n"

ch);

在if语句中又包含一个或多个if语句称为if语句的嵌套

一般形式:

if()

if()语句1

else语句2

else

if()语句3

else语句4

内嵌if

else总是与它上面最近的未配对的if配对

if()

{

if()语句1

}

else语句2

{}限定了内嵌if范围

例4.5有一函数:

编一程序,输入一个x值,要求输出相应的y值。

用if语句检查x的值,根据x的值决定赋予y的值

由于y的可能值不是两个而是三个,因此不可能只用一个简单的(无内嵌if)的if语句来实现

方法1

(1)先后用3个独立的if语句处理:

输入x

若x<

0,则y=-1

若x=0,则y=0

若x>

0,则y=1

输出x和y

scanf("

%d"

x);

if(x<

0)y=-1;

if(x==0)y=0;

if(x>

0)y=1;

printf("

x=%d,y=%d\n"

x,y);

方法2

(2)用一个嵌套的if语句处理:

若x<

0,则y=-1

否则

若x=0,则y=0

否则y=1

0)y=-1;

if(x==0)y=0;

elsey=1;

if(x>

if(x>

0)y=1;

elsey=0;

elsey=-1;

提倡内嵌if放在else中

switch语句用来实现多分支选择结构

学生成绩分类

85分以上为’A’等

70~84分为’B’等

60~69分为’C’等

……

人口统计分类

按年龄分为老、中、青、少、儿童

例4.6要求按照考试成绩的等级输出百分制分数段,A等为85分以上,B等为70~84分,C等为60~69分,D等为60分以下。

成绩的等级由键盘输入。

判断出这是一个多分支选择问题

根据百分制分数将学生成绩分为4个等级

如果用if语句,至少要用3层嵌套的if,进行3次检查判断

用switch语句进行一次检查即可得到结果

{chargrade;

grade);

Yourscore:

"

);

switch(grade)

{case'

:

85~100\n"

break;

case'

B'

70~84\n"

C'

60~69\n"

D'

<

60\n"

default:

enterdataerror!

\n"

值为A

不能少

值为C

gra

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

当前位置:首页 > 求职职场 > 笔试

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

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