第05章 选择结构程序设计.docx

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

第05章 选择结构程序设计.docx

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

第05章 选择结构程序设计.docx

第05章选择结构程序设计

本章重点:

●关系运算符和关系表达式

●逻辑运算符和逻辑表达式

●if语句

●switch语句

第五章选择结构程序设计

§5.1关系运算符和关系表达式

 

一、关系运算符

关系运算就是平常所说的比较运算,比较的结果只有两种,要么成立(真),要么不成立(假)。

如:

3>5这个关系表达式是成立的,为真。

1.C的6种关系运算符

关系运算符

含义

关系运算符

含义

>

大于

>=

大于等于

<

小于

<=

小于等于

==

等于

!

=

不等于

2.优先级

>,<,>=,<=四种优先级相同,==和!

=优先级相同,但低于前四种

关系运算符的优先级低于算术运算符

关系运算符的优先级低于赋值运算符

如:

a=3+5>4

二、关系表达式

1.概念

用关系运算符将两个

表达式连接起来的式子,如:

3+5<2-6

2.关系表达式的值

C语言没有逻辑类型,C中关系表达式若成立(为真),它的值为1,不成立(为假),它的值为0。

如:

a=3>4a的值为0

a=(2<4)+1a的值为0

 

§5.2逻辑运算符和逻辑表达式

关系表达式只能描述单一条件,例如“x>=0”。

如果需要描述“x>=0”、同时“x<10”,就要借助于逻辑表达式了。

 

一、逻辑运算符

1.C的三种逻辑运算符

&&逻辑与(相当于“同时”或“并且”)

||逻辑或(相当于“或者”)

!

逻辑非(相当于“否定”或“不”)

 

2.运算规则和优先级

&&都成立,才成立

||一个成立,就成立

!

取反

优先级顺序:

!

,&&,||

二、逻辑表达式

1.概念

用逻辑运算符将两个

表达式连接起来的式子,如:

(x>=0)&&(x<10),(x<1)||(x>5),!

(x==0)

2.逻辑表达式的值

和关系表达式一样,C中逻辑表达式若成立(为真),它的值为1,不成立(为假),它的值为0。

如:

a=3>4a的值为0

a=(2<4)+1a的值为0

但在判断一个量是否为真时,以0代表假,以非0代表真。

试比较下面的语句

a=3;

if(a>0)a--;

printf(“%d”,a);

a=3;

if(-2)a--;

printf(“%d”,a);

3.说明

在计算逻辑表达式时,只有在必须执行下一个表达式才能求解时,才求解该表达式(即并不是所有的表达式都被求解)。

(1)

§5.3if语句

一、格式

格式一:

if(条件)

{

//要执行的语句块

}

格式二:

if(条件)

{

//要执行的语句块1

}

else

{

//要执行的语句块2

}

 

格式三:

if(条件1)

{

//要执行的语句块1

}

elseif(条件2)

{

//要执行的语句块3

}

elseif(条件3)

{

//要执行的语句块3

}

......

else

{

//要执行的语句块n

}

注意:

条件为逻辑表达式或数值表达式,对逻辑表达式,成立则值为1,不成立则值为0。

对数值表达式非0表示成立,0表示不成立。

 

二、举例

1.[例1]注意执行过程

main()

{

inta=3;

if(a>0)a--;

if(a>0)a-=2;

if(a>0)a=-100;

printf(“%d”,a;);

}

2.[例2]注意语句块必须括起来

main()

{

inta,b,c;

intx,y,z;

a=65;b=77;c=86;

x=74;y=90;z=45;

if(a+b+c>x+y+z)

{

printf(“%d”,a;);

printf(“%d”,b;);

printf(“%d”,c;);

}

else

{

printf(“%d”,x;);

printf(“%d”,y;);

printf(“%d”,z;);

}

}

3.[例3]输入一个圆的半径,求周长和面积。

main()

{

floatr,l,s;

clrscr();

printf("pleaseinputr:

");

scanf("%f",&r);

if(r>=0)

{

l=2*3.14*r;

s=3.14*r*r;

printf(“l=%f”,l);

printf(“s=%f”,s);

}

else

{

printf(“inputerror!

!

”);

printf(“r<0!

!

”);

}

getch();

}

4.[例4]出键盘输入三个数,输出最大数程序

/*编程方法一*/

main()

{

inta,b,c,max;

clrscr();

printf("pleaseinputa,b,c:

");

scanf("%d,%d,%d",&a,&b,&c);

if(a>b&&a>c)max=a;

if(b>a&&b>c)max=b;

if(c>a&&c>b)max=c;

printf("max=%d",max);

}

/*编程方法二*/

main()

{

inta,b,c,max

clrscr();

printf("pleaseinputa,b,c:

");

scanf("%d,%d,%d",&a,&b,&c);

if(a>b)

{

max=a;

}

else

{

max=b;

}

if(max

{

max=c;

}

else

{

max=max;

}

printf("max=%d",max);

getch();

}

/*编程方法三*/

main()

{

inta,b,c,max;

clrscr();

printf("pleaseinputa,b,c:

");

scanf("%d,%d,%d",&a,&b,&c);

if(a>b)

{

if(a>c)max=a;elsemax=c;

}

else

{

if(b>c)max=b;elsemax=c;

}

printf("max=%d",max);

getch();

}

5.[例5]if…elseif…elseif……else的例子

/*从键盘输入成绩,判断等级程序*/

main()

{

ints;

clrscr();

printf("pleaseinputscore:

");

scanf("%d",&s);

if(s>=0&&a<60)

{

printf(“不及格”);

}

elseif(s>=60&&a<70)

{

printf(“及格”);

}

elseif(s>=70&&a<80)

{

printf(“中等”);

}

elseif(s>=80&&a<90)

{

printf(“良好”);

}

elseif(s>=90&&a<1000)

{

printf(“优秀”);

}

else

{

printf(“不可能的成绩”);

}

}

三、举例

1语句块一定要用{}括起来,否则只执行第一句

2if嵌套时,else总是与它上面最近的未配对的if配对,为更

清晰,更明确,最好用{}来说明和确定配对关系

if()

if()语句;

else

if()语句;

else语句;

四、条件运算符

1格式

max=(a>b)?

x:

y;

if(a>b)max=x;elsemax=y

2举例

max=a>b?

x:

y;

max=a>b?

x:

y+1;

max=a>b?

(max=x):

(max=y);

max=a>b?

a:

c>d?

c:

d;

2说明

1)优先级

2)结合性

3)只用最简单的形式,复杂的坚决推荐用if语句

 

§5.4switch语句

一、格式

switch(条件1)

{

case表达式1:

{

//要执行的语句块1

[break;]

}

case表达式2:

{

//要执行的语句块2

[break;]

}

......

default

{

//要执行的语句块n

}

}

二、说明

1.找到与条件相匹配的表达式,开始执行后面的(所有)语句,若

找不到,执行default后的语句。

2.要使执行完一个case后的语句块,便结束switch语句,应使

用break语句。

三、举例

1.[例1]根据键盘输入等级,判断成绩分数

main()

{

charcj

clrscr();

printf("pleaseinputscoregrade:

");

scanf("%c",&cj);

switch(cj)

{

caseA:

{

printf("90~100");

break;

}

caseB:

{

printf("80~89");

break;

}

caseC:

{

printf("70~79");

break;

}

caseD:

{

printf("60~69");

break;

}

caseE:

{

printf("s<60");

break;

}

}

}

2.[例2]根据键盘输入分数,判断成绩等级

main()

{

intcj

clrscr();

printf("pleaseinputscore:

");

scanf("%d",&cj);

cj=cj/10;

switch(cj)

{

case10:

{

printf("A");

break;

}

case9:

{

printf("A");

break;

}

case8:

{

printf("B");

break;

}

case7:

{

printf("C");

break;

}

case6:

{

printf("D");

break;

}

default

{

printf("E");

}

}

}

补充程序

1函数bioskey()的使用

#include"bios.h"

#include"conio.h"

main()

{

intc

clrscr();

c=bioskey(0);

switch(c)

{

case18432:

/*up*/

{

printf("UP");

break;

}

case20480:

/*down*/

{

printf("DOWN");

break;

}

case19200:

/*left*/

{

printf("LEFT");

break;

}

case19712:

/*right*/

{

printf("RIGHT");

break;

}

case283:

/*ESC*/

{

printf("ESC");

break;

}

}

}

作业

1从键盘输入四个数,按由小到大的顺序输出

2从键盘输入一个不超过5位的整数,要求判断出它为几位数,并输出它的相

反数(如:

输入3276,应输出6723)。

3有一函数如下:

从键盘输入一个X值,输出Y值。

 

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

当前位置:首页 > 考试认证 > 从业资格考试

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

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