当前位置:文档之家› c语言程序设计教案程序的控制结构—选择结构

c语言程序设计教案程序的控制结构—选择结构

c语言程序设计教案程序的控制结构—选择结构
c语言程序设计教案程序的控制结构—选择结构

《C语言程序设计》课程教案表

授课题目

第三章程序的控制结构(3)——选择结构if 课时安排 1 授课时间

教学目的和要求

1.掌握:条件表达式、if语句

2.熟悉:关系运算符和关系表达式、逻辑运算符和逻辑表达式

教学内容

1.基本内容:(1)关系运算符和关系表达式(2)逻辑运算符和逻辑表达式(3)条件语句2.重点:条件语句

讲课进程和时间分配

引子(15分钟)

关系运算就是比较运算,即将两个数据进行比较,判定两个数据是否符合给定的关系。

a >

b a = = b a != b

1、关系运算符和关系表达式

(1)关系运算符及其优先次序

1)关系运算符

C语言中关系运算符为二目运算符,共有6种:

< 小于关系运算符

<= 小于等于

> 大于

>= 大于等于

= = 等于)

!= 不等于

关系操作数可以是数值类型数据和字符型数据。

2)关系运算符的优先级

①<、<=、> 和>= 为同一级,== 和!= 为同一级。且前4个高于后2个;结合方向

均为自左至右。

②关系运算符的优先级低于算术运算符,但高于赋值运算符。

例如:

a+b > b+c 等效于(a+b)>(b+c)。

(2+a)==(b-a) 等效于2+a == b-a。

(2)关系表达式

1)关系表达式的概念

是指用关系运算符将两个表达式连接起来进行关系运算的式子。

例如:

a +

b > b +

c 比较两个算术表达式的值

a <= 2 *

b 比较变量和算术表达式的值

'a' < 'b' 比较两个字符的ASCII码值

2)关系表达式的值—逻辑值(“真”或“假”)

由于C语言没有逻辑型数据,所以,用整数“1”表示“逻辑真”,用整数“0”表示“逻辑假”。

例如,假设a=3,b=4,c=5则:

a>b的值为0(假)。

(a>b)!=c的值为1(真)。

(a

注意:C语言用整数“1”表示“逻辑真”,用整数“0”表示“逻辑假”。所以,关系表达式的值,还可以参与其它种类的运算,例如算术运算、逻辑运算等。

3)关系运算符的结合律

C语言规定关系表达式采取左结合律。表达式中出现优先级别为同一级别的运算符时,则按从左到右结合方向处理。

例如:

int a=2,b=3,c=1;

a>b

先计算a>b,值是0 ,

再计算0

6>3<2 值: 1

先计算6>3 ,值是1 ,

再计算1<2,值为1

2、逻辑运算符和逻辑表达式

(1)逻辑运算符

C语言提供3种逻辑运算符:

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

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

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

其中,&&和||为双目运算符,且结合方向为自左至右;! 为单目运算符,仅对其右边的操作数进行逻辑求反运算。

1)逻辑非!

逻辑非是一元运算符。

操作数值为0,逻辑非运算的结果为1(逻辑真);

当操作数值为非0时,逻辑非运算的结果为0。例如:

int a=5,b=3;

!a 结果:0

!(a < b) 结果:1。因为a < b 的值为 0

2)逻辑与 &&

逻辑与是二元运算,只有参加逻辑与运算的两个操作数值均为非0(逻辑真)时,结果才为真。例如:

int a = 5,b = 3;

a && b

值: 1

(a < b) && (a > 0)

值:0,因为a

3)逻辑或||

逻辑或也是二元运算,只要两个操作数中有一个为非0(逻辑真),结果就为1。

例如:

int a=5,b=3

a ||

b 值:1

(a < b) || (a > 0) 值:1

因为a > 0 的值为1。

(2)逻辑运算符优先级

C 语言逻辑运算符的优先级规定如下:

1) 优先级顺序为 ! → && → ||

2) 与其他种类运算符的优先关系:

例如:!a&& b > 5 计算顺序:(!a )&&(b > 5)a = = b || a < c

计算顺序:a = = (b||(a< c))

(3)逻辑表达式

1)逻辑表达式的概念

所谓逻辑表达式是指,用逻辑运算符将1个或多个表达式连接起来,进行逻辑运算的式子。在C 语言中,可以用逻辑表达式表示多个条件的组合。

例如:!(a > b) 对关系表达式的值取非,

(a > b )&&(b > c )

(a > b )&&(b > c )||(b == 0)

2)逻辑量的真假判定

C语言用整数“1”表示“逻辑真”,用“0”表示“逻辑假”。但在判断一个表达式或变量的“真”或“假”时,如果为0,则判定为“逻辑假”;如果为非0,则判定为“逻辑真”。

3)逻辑运算符的结合性

C 语言逻辑运算符采用左结合律。表达式中出现优先级别为同一级别的运算符时, 按从左到右的结合方向处理。例如:a && b && c 计算顺序为:(a&& b)&& c 。

3、条件语句(25分钟)

(1)if 语句的三种格式

引子:例如计算分段函数

y=

计算 x<0 ,如果结果为1:计算:y=3-x;

否则,计算:y=2 * x;

需要根据x 的值进行流程选择(分支)。

赋值运算符 &&和 || 关系运算符 算术运算符 !(非) 3-x (x<0) 2x (x>=0) 首先先判断表达式的值

若为非0则执行下面的语句

若为0则跳过该语句

1)单分支选择语句

一般形式:i f (表达式) 语句

例:main()

{ float x , y;

scanf(“%f ”, &x);

y = 2 * x ;

if ( x < 0 )

printf(“y= %6.2f”, y );

}

如果x<0为真,则打印y 的值,否则跳过printf(“y= %6.2f”, y )直接执行下面的语句。 练习:运行下面程序时,若从键盘输入“3,4”,则程序的输出结果是[ ]

main()

{

int a,b,s;

scanf(“%d,%d”,&a,&b);

s=a;

if(s

s=s*s;

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

}

A 、14

B 、16

C 、18

D 、20

2)双分支选择语句

if (表达式) 语句1

else 语句2

例: 输入两个数, 比较其大小, 将较大的数输出

流程分析:

? (1) 输入两个数据a,b ;

? (2) 如果a>b 则输出a ;否则,输出b 。

#include

main( )

{

float a, b;

scanf(“%f, %f”,&a, &b);

语句 真(非0) 假(0) 表达式

if (a>b) printf (“%f”, a );

else printf (“%f”, b );

}

练习:下面程序的输出结果是[ ]

main()

{ int x=2,y=-1,z=2;

if(y<0) z=0

else z+=1;

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

}

3)多分支选择语句

一般形式:if (表达式) 语句1

else if (表达式)语句2

else …

写一个程序完成下列功能:

1 输入一个分数score

2 score<60 输出E

3 60<=score <70 输出 D

4 75<=score <80 输出 C

5 80<=score <90 输出 B

5 90<=score 输出 A

main( )

{ int score;

scanf(“%d”, &score);

if ( score<60) printf(“%c” , ’E’);

else if ( score <70) printf(“%c” , ’D’);

else if (score <80)

printf(“%c” , ’C’);

else if (score <90)

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

else

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

}

说明:if语句中的表达式一般为关系或逻辑表达式,也可以为任何数值类型的表达式。执行语句可以是一条简单语句、空语句或复合语句,也可以嵌套其它流程控制语句。4)复杂条件选择

问题: 输入两个字符ch1和ch2,

如果ch1==‘Z’ 且ch2==‘B’,

则输出“You are right ! “

main()

{ char ch1,ch2;

ch1=getchar( );

ch2=getchar( );

if ( ch1 == ‘Z’ && ch2==‘B’ )

printf( “You are right ! “ );

}

练习:

以下不正确的语句为[ ]

A、if(x>y) ;

B、if(x>y) { x++; y++; }

C、if(x=y)&&(x!=0)x+=y;

D、if(x!=y) scanf(“%d”,&x);

else scanf(“%d”,&y);

运行下面程序时,若从键盘输入字母“b”,则输入结果是[ ]

main( )

{ char c;

c=getchar();

if (c>=‘a’&&c<=‘u’) c=c+4;

else if (c>=‘v’&&c<=‘z’) c=c-21;

else printf(“input error!\n”);

putchar(c);

}

A) g B)w C)f D) d

5)if语句的嵌套

一个if又包含一个或多个if语句,称为if语句的嵌套。在if语句中可以根据需要,用if语句的三种形式进行互相嵌套。一般形式如下:

①if()内嵌if

if()〈语句1〉

else 〈语句2〉

else

if()〈语句3〉

else 〈语句4〉

②if()

if()〈语句1〉

else

if()〈语句2〉

else 〈语句3〉

说明:①if与else的配对关系,从最内层开始,else总是与离它最近的未曾配对的if配对。

②if与else的个数最好相同,从内层到外层一一对应,以避免出错。

③如果if与else的个数不相同,可以用花括号来确定配对关系。例如:

if()

{if()〈语句1〉}

else

〈语句2〉

这时{}限定了内嵌if语句的范围,因此else与第一个if配对。

例4.3 对下面的函数编程,要求输入一个x值,输出对应的y值

-1 (x<0)

y= 0 (x=0)

1 (x>0)

方法1:main()

int x,y;

scanf(″%d″,&x);

if(x<0)y=-1;

else if(x= =0)y=0;

else y=1;

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

方法2:main()

int x,y;

scanf(″%d″,&x);

y=-1;

if(x= =0)y=0;

else if(x>0)y=1;

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

练习:运行下面程序,若从键盘输入“3”和“5”,则程序的输出结果是[ ] main()

{ int x,y;

scanf(“%d,%d”,&x,&y);

if(x==y) printf(“x==y”);

else if(x>y)

printf(“x>y”);

else

printf(“x

}

A)3<5 B)5>3 C)x>y D)x

执行下列程序的输出结果是[ ]

main()

{ int a=258;

if(a>=100)

{

if(a>=1000) printf(“%d is gr eater than 1000\n”,a);

else printf(“%d is 100 to 999\n”,a);

}

else

{

if(a<10) printf(“%d is less than 10\n”,a);

printf(“%d is 10 to 99\n”,a);

}

}

A.a is less than 10

B.a is 10 to 99

C.a is greater than 1000

D.258 is 100 to 999

4、总结(5分钟)

讨论、思考题、作业:

实验指导书习题

参考资料(含参考书、文献等):

叶斌陈世强. C语言程序设计. 北京:科学出版社

授课类型:理论课?讨论课□实验课□练习课□其他□

教学方式:传统授课?双语□讨论□示教□指导□其他□教学资源:多媒体?模型□实物□挂图□音像□其他□

相关主题
文本预览