第4章程序的控制结构..3选择结构_第1页
第4章程序的控制结构..3选择结构_第2页
第4章程序的控制结构..3选择结构_第3页
第4章程序的控制结构..3选择结构_第4页
第4章程序的控制结构..3选择结构_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 顺序结构是最简单的C语言程序结构,也是C语言程序中最常用的程序结构,其特点是完全按照语句出现的先后次序执行程序。 顺序结构没有专用的控制语句,在该种结构中通常只包括:变量声明语句、赋值语句、输入/输出函数语句等。 顺序结构虽然简单,但毕竟处理问题有限。4.2 顺序结构顺序结构4.3.1 关系运算符和关系表达式关系运算符和关系表达式4.3.2 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式4.3.3 if语句语句4.3.4 switch语句语句一一 关系运算符关系运算符C语言提供6种关系运算符: = (优先级高) = != (优先级低)二二 优先次序优先次序 前四种关系运算符的优先级相同,后两种

2、也相同。前四种高于后两种。 关系运算符的优先级低于算术运算符。 关系运算符的优先级高于赋值运算符。4.3.1 关系运算符和关系表达式关系运算符和关系表达式算术运算符赋值运算符关系运算符 (低)(高)例如:例如: c a + b 等效于等效于 c (a + b) a b = c 等效于等效于 (a b) = c a = b c 等效于等效于 a = (b c)三三 关系表达式关系表达式 定义:定义: 用关系运算符将两个表达式连接起来的式子。用关系运算符将两个表达式连接起来的式子。例如:例如: a b , a + b b + c , (a = 3) (b = 5) , a b) (b b”的值为的

3、值为“真真”,即:关系表达式的值为,即:关系表达式的值为“1”。 “b + c b c f = ?再如再如 : f = 0.1 0.5 b) & (x y) (a b) | (x y) “!”是“一目(元)运算符”,只要求有一个运算量。例如:例如: ! (a b) 逻辑运算举例例如:例如: a & b 若若a、b都为真,则都为真,则a & b为真。为真。 a | b 若若a、b之一为真,则之一为真,则a | b为真。为真。 !a 若若a为真,则为真,则 !a为假。为假。2. 逻辑运算符的优先次序逻辑运算符的优先次序 !(非) & (与) | (或) (“!”的优

4、先级最高) 逻辑运算符中的“&”和“|”低于关系运算符,“!”高于算术运算符。!(非非)算术运算符算术运算符关系运算符关系运算符&赋值运算符赋值运算符(低低)(高)(高) |例如: a b & x y !a | a b 在在C语言中规定非零为语言中规定非零为“真真”,零为,零为“假假”例如:例如: 若若a = 4,则,则 !a 0 若若a = 4,b = 5,则,则 a &b 1 a = 4,b = 5,则,则 !a | b 1 4.3 & 0 | -0.52 1 a & b 1 !(0.1 0.6 0.9) & A 10) &

5、(y=5+4) & (z = 7)思考:计算表达式后以下变量和表达式的值 x = ? y =? z = ? 表达式的值为:?(x=3 , y、z变量的值“不确定”,表达式值为0)(2)“|”运算 (x = 1) | (y = 2) (z = 1) | (x + z) = y思考:计算表达式后以下变量和表达式的值 x = ? y =? z = ? 表达式的值为:?(x=1 , y、z变量的值“不确定”,表达式值为1)4.3.3 if语句语句 if语句是语句是选择结构选择结构的控制语句的控制语句。一一 if语句的三种形式语句的三种形式 if (表达式表达式) 语句;语句;注:为单分支控制结

6、构;注:为单分支控制结构; 其中表达式可是常量、变量、其中表达式可是常量、变量、函数和表达式,表示判别条件;函数和表达式,表示判别条件; 语句可是简单或复合语句。语句可是简单或复合语句。表达式表达式语句语句真假例例1:有一个函数:有一个函数: y=-1 x0编一程序,输入一个编一程序,输入一个x值,输出值,输出y值。值。#include int main(void)int x, y;printf(Please input x:);scanf(%d, &x);if (x 0) y = 1;printf(x=%d,y=%dn, x, y); return 0; 例例2:输入任意三个整数,然

7、后按从小到大的顺序输出。#include int main(void) int a, b, c, t; scanf(%d%d%d, &a, &b, &c); if (a b) t = a; a = b; b = t; if (a c) t = a; a = c; c = t; if (b c) t = b; b = c; c = t; printf(a=%d b=%d c=%dn, a, b, c); return 0;2. if(表达式表达式) 语句语句1 ; else 语句语句2;注意:双分支控制结构;注意:双分支控制结构; 当条件表达式值为真当条件表达式值为真(非

8、(非0)则选择执行)则选择执行语句语句1;当值为假(;当值为假(0)则选择执行语句则选择执行语句2。语句语句1表达式表达式语句语句2 假假真真例例3:输入任意三个整数,求其中的最大数。分析:分析:1.输入a,b,c的值2.处理:求三个数的最大(小)数算法:“两两比较”法3.输出最大值#include int main(void)int a, b, c, max; printf(Please input a,b,c data: );scanf(%d%d%d, &a, &b, &c);if (a b)max = a;elsemax = b;if (c max)max = c

9、;printf(Max data is :%dn, max);return 0;3. if (表达式表达式1) 语句语句1 ; else if (表达式表达式2) 语句语句2; else if (表达式表达式m) 语句语句m ; else 语句语句n;表达式表达式2表达式表达式3表达式表达式1语句语句1语句语句2语句语句4语句语句3假假真真 真真真真假假假假多分支控制结构多分支控制结构例例4:有一个函数:有一个函数: y=-1 x0编一程序,输入一个编一程序,输入一个x值,输出值,输出y值。值。#include int main(void)int x, y;printf(Please inpu

10、t x:);scanf(%d, &x);if (x 0) y = -1;else if (x = 0)y = 0;else y = 1;printf(x=%d,y=%dn, x, y);return 0; 二二 if 语句的嵌套语句的嵌套 定义:定义: 在在if语句中又包含一个或多个语句中又包含一个或多个if语句,称语句,称为为if语句的嵌套。语句的嵌套。 一般形式:一般形式: if ( ) if ( ) 语句语句1; else 语句语句2; else if ( ) 语句语句3; else 语句语句4;例例4:有一个函数:有一个函数: y=-1 x0编一程序,输入一个编一程序,输入一个

11、x值,输出值,输出y值。值。#include int main(void)int x, y;printf(Please input x:);scanf(%d, &x);if (x =90,等级为“A”若80=score90,等级为“B”若70=score80,等级为“C”若60=score70,等级为“D”若score= 90) grade = A;else if (score = 80) grade = B;else if (score = 70) grade = C;else if (score = 60) grade = D;else grade = E;printf(“Scor

12、e=%.2f Grade=%cn”, score, grade);三三 条件运算符条件运算符1 .条件运算符(条件运算符(三目运算符三目运算符) 一般形式 表达式表达式1?表达式表达式2 : 表达式表达式3例如:例如: (a b) ? A : b 执行过程表达式表达式1条件表达式取条件表达式取表达式表达式2的值的值条件表达式取条件表达式取表达式表达式3的值的值假假真真算术运算符关系运算符条件运算符赋值运算符(低)(高)2.几点说明:几点说明: 优先级例如:例如:a b ? a : b + 1 等价于等价于 (a b) ? a : (b + 1)例例7:输入一个字符,判别它是否大写字母,如果是,

13、将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。#include int main(void)char ch;scanf(“%c”, &ch);ch = (ch = A & ch = A & ch = Z) ch = ch + 32; else ch = ch; 4.3.4 switch语句语句 switch语句是多分支选择语句,用来实现多分支选择结构。一一 、一般形式、一般形式switch (表达式表达式)case 常量表达式常量表达式1:语句:语句1 ; case 常量表达式常量表达式2:语句:语句2 ;case 常量表达式常量表达式3:语句:语句3;

14、 case 常量表达式常量表达式n:语句:语句n;default: 语句语句n+1;注意注意: (表达式)必须是有序类型:整型、字符型等。表达式)必须是有序类型:整型、字符型等。 switch-case语句仅仅是起一种开关的作用。语句仅仅是起一种开关的作用。switch语句的执行流程表达式表达式常量1常量2常量3常量ndefault语句1语句2语句3语句n语句n+1注意:当起用某个开关后,其实质是一种顺序执行流程。switch语句的另一种形式二、在二、在switch结构中可选用结构中可选用break子句子句switch (表达式表达式)case 常量表达式常量表达式1:语句:语句1 ; bre

15、ak;case 常量表达式常量表达式2:语句:语句2 ; break;case 常量表达式常量表达式3:语句:语句3; break; case 常量表达式常量表达式n:语句:语句n; break;default: 语句语句n+1;注意:加上注意:加上break子句将改变原来的顺序执行流程。子句将改变原来的顺序执行流程。switch语句的另一种执行流程表达式表达式常量1常量2常量3常量ndefault语句1语句2语句3语句n语句n+1breakbreakbreakbreak注意:加注意:加break后,已经不再是顺序执行流程了。后,已经不再是顺序执行流程了。例例8:输入任意的日期值,求该日期是该

16、年的输入任意的日期值,求该日期是该年的第几天。第几天。#include int main(void) int y, m, d, len; printf(“Please input year,month,day data:”); scanf(“%d%d%d”, &y, &m, &d); len = d; switch (m - 1) case 11: len += 30; case 10: len += 31; case 9: len += 30; case 8: len += 31; case 7: len += 31; case 6: len += 30; case

17、5: len += 31; case 4: len += 30; case 3: len += 31; case 2: len += (y % 4 = 0 & y % 100 !=0)| (y % 400 = 0) ? 29:28; case 1: len += 31; printf(“Len = %dn”, len); return 0;例例9:输入任意的年份与月份,求该年该月有输入任意的年份与月份,求该年该月有几天?几天?#include int main(void) int y, m, d; printf(“Please input year,month data:”); sca

18、nf(“%d%d”, &y, &m); switch (m) case 12: case 10: case 8: case 7: case 5: case 3: case 1: d = 31;break; case 11 : case 9: case 6: case 4: d = 30;break; case 2: d = (y % 4 = 0 & y % 100 !=0)| (y % 400 = 0) ? 29:28; default: printf(“error!n); return 0; printf(“Day = %dn”, day); return 0;例例1

19、0:要求按照考试成绩的等级打印出百分要求按照考试成绩的等级打印出百分制分数段。制分数段。#include int main(void)char grade; scanf(%c, &grade); switch (grade) case A:printf(85100n); case B:printf(7084n); case C:printf(6069n); case D:printf(60n); default :printf(errorn); return 0;不用不用break语句语句#include int main(void)char grade; scanf(%c, &

20、;grade); switch (grade) case A:printf(85100n);break; case B:printf(7084n);break; case C:printf(6069n);break; case D:printf(60n);break; default :printf(errorn); return 0;使用使用break语句语句例例11:思考:以下程序的功能是什么?:思考:以下程序的功能是什么?#include int main(void ) char grade; scanf(%c, &grade); switch (grade) case A: case B:case C:case D:printf(“60n);break;default:printf(“60n); return 0;多个多个case可以共用一组执行语句可以共用一组执行语句switch语句编程举例语句编程举例:例例12:编写一个简单计算器程序,输入格式编写一个简单计算器程序,输入格式为:为:data1 op data2。其中。其中data1和和data2是参加是参加运算的两个数运算的两个数(data1、data2必须定义为必须定义为int,但二者相加可能超出但二者相加可能超出int

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论