第4章选择结构Word下载.docx

上传人:b****5 文档编号:17648358 上传时间:2022-12-07 格式:DOCX 页数:18 大小:22.23KB
下载 相关 举报
第4章选择结构Word下载.docx_第1页
第1页 / 共18页
第4章选择结构Word下载.docx_第2页
第2页 / 共18页
第4章选择结构Word下载.docx_第3页
第3页 / 共18页
第4章选择结构Word下载.docx_第4页
第4页 / 共18页
第4章选择结构Word下载.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

第4章选择结构Word下载.docx

《第4章选择结构Word下载.docx》由会员分享,可在线阅读,更多相关《第4章选择结构Word下载.docx(18页珍藏版)》请在冰豆网上搜索。

第4章选择结构Word下载.docx

”级别最高,其次是“&

”,“||”级别最低,逻辑运算符中的“&

”和“||”低于关系运算符,而“!

”高于关系运算符。

2.逻辑表达式

逻辑表达式是由逻辑运算符和运算对象组成,其中,参与逻辑运算的对象可以是一个具体的值,还可以是C语言中任意合法的表达式,逻辑表达式的运算结果为1。

若a=5,则!

a的值为0。

因为a的值为5,被认做是“真”,对它进行“非”运算后,结果为“假”,即结果为0.当A和B的值结合方式不同时,各种逻辑运算所得到的结果是不同的。

见表4-3

表4-3逻辑运算表

A

B

A&

A||B

1

值得注意的是:

在数学中,关系式0<

x<

10是可以使用的,表示x的值应在大于0且小于10的范围内。

但在C语言中却不能用0<

10这样一个关系表达式来表示上述逻辑关系,即关系运算符不能连用,但可以借助逻辑运算符来辅助运算,正确的表示方法是0<

x&

10,在C语言中,由&

或||组成的逻辑表达式,在某些特定情况下会产生“短路”现象。

(1)x&

y&

z,只有当x为真时,才需要判别y的值;

只有当x和y都为真时,才需要去判别z的值;

只要x为假就不必判别y和z,整个表达式的值为0.。

(2)x||y||z,只要z的值为真,就不必差别y和z的值,整表达式的值为1.。

只有x的值为假时才需要差别y的值,只有x和y的值同时为假才需要判别z的值,因此,如有逻辑表达式(m=x>

y)&

(n=c>

d),其中x=1,y=2,c=3,d=4若m和n的原值为1,由于“x>

y”的值为0,因为m=0,而不执行“n=c>

d”,所以n的值不是0而是原值1。

4.3IF语句和用IF语句构成的选择结构

if语句用来对所给定的条件进行判定,判断其表达式的值是否满足某种条件,并根据判定的结果决定执行给出的两种操作中的哪一种。

1.if语句的几种形式

(1)if(表达式)语句

例如:

if(a>

b)

printf(“Theanswerisright!

\n”);

其中,if是C语言关系字,a>

b是条件判断表达式。

表达式两侧的括号不可少,并且只能是圆括号,不能用其他括号替代。

紧跟着的是一条输出语句,称为if子句。

如果在if子句中需要多个语句,则应该使用大括号({})把一组语句括起来构成复合语句,这样在语法上满足“一条语句”的要求。

(2)if(表达式)语句1

else语句2

b)printf(“Theanswerisright.\n”);

elseprintf(“Theansweriswrong.\n”);

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

elseif(表达式2)语句2

elseif(表达式m)语句1

else语句n

“语句1”是if子句,“语句2…语句m”是else子句。

这些子句在语法上要求是一条语句,但需要执行多条语句时,则应该使用花括号({})把这些语句括起来组成复合语句。

else不能独立成为一条语句,它只是if语句的一部分,不允许单独出现在程序中。

else 

必须与if配对,共同组成if…else语句。

2.if语句的嵌套

在if语句中又包含一个或多个if语句结构,称为if语句的嵌套,一般形式如下:

if()

if()语句1

else语句2

else

if()语句3

else语句4

应当注意:

else总是与它上面的最近的没有与else配对的if配对。

3.条件运算符构成的选择结构

有如下语句:

if(x<

y)

min=x;

/*求两数中较小的一个*/

elsemin=y;

可以用min=(x<

y)?

x:

y来替换,其中(x<

y是一个条件表达式,“?

”就是条件运算符。

该表达式是这样执行的:

如果(x<

y)条件成立,则整个表达式取值x,否则取值y。

优先级:

条件运算符高于赋值运算符,但低于逻辑运算符、关系运算符和算术运算符。

4.4switch和goto语句

1.switch语句

switch语句是C语言提供的多分支选择结构语句,用来实现多分支选择结构。

它的一般形式如下:

switch(表达式)

{

case常量表达式1:

语句1

case常量表达式2:

语句2

case常量表达式n:

语句n

default:

语句n+1

}

说明:

(1)switch是关键字,switch后面用花括号括起来的部分是switch语句体。

(2)switch后面括号内的“表达式”,可以是C语言中任意合法表达式,但表达式两侧的括号不能省略。

(3)case也是关键字,与其后面的常量表达式合称case语句标号,常量表达式的类型必须与switch后面的表达式类型相匹配,且各case语句标号的值各不相同,不能重复。

(4)default也是关键字,起标号作用,代表了以上所有case标号之外的那些标号,default标号可以出现在语句体中任何标号位置上,当然,也可以没有。

(5)case语句标号后的语句1、语句2等,可以是一条语句,也可以是若干条,在必要时,case语句标号后的语句可以省略不写。

case和常量表达式之间一定要有空格。

2.语句标号

语句标号用标识符表示,它的命名规则与变量名相同,即由字母、数字和下划线组成,在标识符后加一个冒号,就成了一个语句标号。

在C语言中可以在任何语句前加上语句标号。

3.goto语句

goto语句为无条件转向语句,goto语句的一般形式如下:

goto语句标号;

goto语句的作用:

把程序的执行转向语句标号所在的位置,这个语句标号必须与此goto语句同在一个函数内,滥用goto语句将使程序的流程毫无规律,可读性差,因此初学者应慎用。

一、选择题:

1.下列错误的语句是()。

A.if(a>

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

B.if(&

);

a=m;

C.if

(1)a=m;

elsea=n;

D.if(a>

0);

{eldea=n;

2.读下列程序:

#include<

stdio.h>

main()

floata,b,t;

scanf(“%f,%f”,&

a,&

b);

t=a;

a=b;

b=t;

printf(“%5.2f,%5.2f”,a,b);

运行时从键盘输入3.8和则正确的输出结果是()。

A.-3.40,-3.80B.-3.40,3.80

C.-3.4,3.8D.3.80,-3.40

3.读下列程序:

intx,y;

scanf(“%d”,&

x);

y=0;

if(x>

=0)

{if(x>

0)y=1;

elsey=-1;

printf(“%d”,y);

当从键盘输入32时,程序的输出结果为()

()

A.0B.-1C.1D.不确定值

4.对下述程序,()是正确判断。

scanf(“%d,%d”,&

x,&

y);

x=y;

y=x;

elsex++;

y++;

printf(“%d,%d”,x,y);

A.有语法错误,不能通过编译B.若输入数据3和4,则输出4和5

C.若输入数据4和3,则输出3和4D.若输入数据4和3,则输出4和4

5.以下程序的输出结果是()。

intx=1,y=0,a=0,b=0;

switch(x)

case1:

switch(y)

case0:

a++p;

break;

b++;

case2:

a++;

case3:

a++,b++;

printf(“\na=%d,b=%d”,a,b);

A.a=2,b=0B.a=2,b=1C.a=1,b=1D.a=2,b=2

6.这表示关系:

x≥y≥z,应使用的C语言表达式是()。

A.(x>

=y)&

(y>

=z)B.(x>

=y)AND(Y>

=Z)

C.(x>

=y>

=z)D.(x>

=z)

7.以下程序正确的输出结果是()

stdilo.h>

inta=2,b=-1,c=2;

if(a<

if(b<

0)c=0;

elsec+=1;

printf(“%d\n”,c);

A.0B.2C.3D.4

8.以下程序的输出结果是()。

intw=4,x=3,y=2,z=1;

printf(“%d\n”,(w<

x?

w:

z<

y?

x));

A.1B.2C.3D.4

9.以下程序的运行结果是()。

intk=2;

switch(k)

printf(“%d\n”,k++);

printf(“%d”,k++);

case4:

printf(“%D\n”,k++);

defaulf:

printf(“Full!

A.13B.23C.22D.32

10.下列程序的运行结果是()

inta=2,c=5;

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

A.a=%2,b=%5B.a=2,b=5

C.a=d,b=dD.a=%d,b=%d

11.语句printf(”a\bre\’hi\’y\\\bou\n”);

的输出结果是()。

A.a\bre\’hi\’y\\bouB.a\bre\’hi\y’\bou

C.re’hi’youD.abre’hi’\bou

12.如下程序的输出结果是()

intx=1,a=0,b=0;

case0:

case1:

case2:

printf(“a=%d,b=%d\n”,a,b);

A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=2

13.如下程序的输出结果是()。

{floatx=2.0,y;

if(x<

0.0)y=0.0;

elseif(x<

10.0)y=1.0/x;

elsey=1.0.;

printf(“%f\n”,y);

A.0.B.0.C.0.D.1.

14.如下程序的输出结果是()

inta=12,b=5,c=-3;

elsec++;

A.0B.1C.-2D.-3

15.阅读以下程序:

intx;

if(x--<

5)printf(“%d”,x);

elseprintf(“%d”,x++);

程序运行后,如果从键盘输入5,则输出结果是()。

A.3B.4C.5D.6

16.以下程序的输出结果是()。

inta=15,b=21,m=0;

switch(a%3)

m++;

case1:

switch(b%2)

case0m++;

printf(“%d\n”,m);

17.下面的程序()。

intx=3,y=0,z=0;

if(x=y+z)printf(“****”);

elseprintf(“####”);

A.有语法错误不能通过编译

B.输出****

C.可以通过编译,但是不能通过连接,因而不能运行

D.输出####

18.两次运行下面的程序,如果从键盘上输入6和4,则输出结果是()。

intx;

if(x++>

elseprintf(“%d\n”,x--);

A.7和5B.6和3C.7和4D.6和4

19.以下程序的输出结果的是()。

inta=-1,b=4,k;

k=(++a<

0)&

(b--<

=0);

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

A.104B.103C.003D.004

20.能正确表示a≥10或a≤0的关系表达式是()。

A.a>

=10ora<

=0B.a>

=10|a<

=0

C.a>

=10&

a<

=0D.a>

=10||a<

21.假定所有变量均已正确说明,下列程序段运行后x的值是()。

a=b=c=0;

x=35;

if(!

a)x--;

elseif(b);

if(c)x=3;

elsex=4;

A.34B.4C.35D.3

22.表示关系X≤Y≤Z的C语言表达式()。

A.(X<

=Y)&

(Y<

=Z)B.(X<

=Y)and(Y<

+Z)

C.(X<

=Y<

=Z)D.(X<

23.如下程序的输出结果是()。

inta,b,c=246;

a=c/100%9;

b=(-1)&

(-1)

printf(“%d,%d\n”,a,b);

A.2,1B.3,2C.4,3D.2,-1

24.当a=1、b=3、c=5、d=5时,执行下面的程序段后,x的值为()。

if(c<

d)x=1;

elseif(a<

c)

if(b<

d)x=2;

elsex=3;

elsex=6;

elsex=7;

A.1B.2C.3D.6

25.能正确表示a和b同时为正或同时为负的逻辑表达式是()。

A.(a>

=0||b>

=0)&

(a<

0||b<

0)B.(b>

=0&

b>

0&

b<

0)

C.(a+b>

(a+b<

=0)D.a*b>

26.以下程序的输出结果是()。

inta=-1,b=1,k;

if(++a<

printf(“%d%d\n”,a,b);

printf(“%d%d\n”,b,a);

A.-11B.01C.10D.00

27.下列关于switch语句和break语句的结论中,正确的是()。

A.break语句是switch语句中的一部分

B.在switch语句中可以根据需要使用或不使用break语句

C.在switch语句中必须使用break语句

D.break语句只能用于switch语句中

28.设有说明语句“inta=1,b=0;

”,则执行了下列语句后,输出为()。

switch(a)

switch(b)

printf(“**0**”);

printf(“**1**”)

printf(“**2**”);

A.**0**B.**0****2**

C.**0******1****2**D.主语法错误

29.以下关于运算符优先顺序的描述中正确的是()。

A.关系运算符<

算术运算符赋值运算符<

逻辑运算符

B.逻辑运算符<

关系运算符<

算术运算符<

赋值运算符

C.赋值运算符<

逻辑运算符<

算术运算符

D.算术运算符<

赋值运算符<

30.为了避免在嵌套的条件语句if...else中产生二义性,C语言规定:

else子句总是与()配对。

A.缩排位置相同的ifB.其之前最近的if

C.其之后的最近的ifD.同一行上的if

二、填空题:

1.若有定义:

inta=10,b=9,c=8;

接着顺序执行下列语句后,变量b中的值是3。

c=(a-=(b-5));

c=(a%11)+(b=3);

2.表示“整数x的绝对值大于5”时值为“真”的C语言表达式是x>

5||x<

-5。

3.下列程序的输出结果是16.00,请填空。

inta=9,b=2;

floatx=6.6。

y=1.1,z;

z=a/2+b*x/y+1/2;

printf(“%5.2f\n”,z);

4.若从键盘输入58,则以下程序输出的结果是。

inta;

a);

if(a>

50)printf(“%d”,a);

if(a>

40)printf(“%d”,a);

if(a>

30)printf(“%d”,a);

5.以下程序输出的结果是0。

inta=5,b=4,c=3,d;

d=(a>

c);

printf(“%d\n”,d);

6.以下程序运行后的输出结果是20,0。

intx=0,y=20,t=0;

if(x==y)t=x;

y=t;

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

7.设a,b,c为整数,且a=2,b=3,c=4,且执行完语句a*=16+(b++)-(++c);

后,a的值是28。

8.20<

30或x<

-100的C语言表达式是((x>

20)&

(x<

30))||(x<

-100)。

9.若inti=10;

,则执行下列程序后,变量i的正确结果是13。

switch(i)

case9:

i+=1;

case10:

case11:

i+=1;

10.以下程序的输出结果是2。

intx=2,y=-1,z=2;

if(y<

0)z=0;

elsez+=1;

printf(“%d\n”,z);

11.若运行时输入12,则以下程序的运行结果是0。

y=x>

12?

x+10:

x-12;

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

12.设x,y,z均为int型变量,请写出描述“x或y中至少有一个小于z”的表达式x<

z||y<

z。

13.已知A=7.5,B=2,C=3.6,表达式A>

B&

C>

A||A<

C的值是0。

14.在C语言中,关系运算符的优先级别是<

、>

、<

=、>

=、==、!

=。

15.在C语言中,逻辑运算符的优先级别是!

、&

、||。

16.请写出以下程序的输出结果1。

inta=100;

100)

printf(“%d\n”,a>

100);

printf(“%d\n”,a<

=100);

17.请写出以下表达式的等价的表达式x<

=01。

(x>

0)!

18.当a=1,b=2,c=3时,以下语句执行后,a、b、c中的值分别为3、2、2。

b=a;

a=c;

c=b;

19.若变量已正确定义,以下语句段的输出结果是*#。

x=0;

y=2;

z=3;

switch(y==2)

{

print(“*”);

print(“%”);

switch(z)

print(“$”);

defailt:

printf(“#”);

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

当前位置:首页 > 总结汇报 > 学习总结

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

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