C语言程序设计第3章.ppt
《C语言程序设计第3章.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计第3章.ppt(93页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、LOGO肖肖肖肖 洁洁洁洁大连工业大学管理学院大连工业大学管理学院大连工业大学管理学院大连工业大学管理学院第三章第三章 C语言程序的流程控制语言程序的流程控制 算算 法法1关系运算符和关系表达式关系运算符和关系表达式2选择结构程序设计选择结构程序设计3逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式4循环结构程序设计循环结构程序设计53.1 算算 法法 一一.算法的概念算法的概念 二二.算法的基本性质算法的基本性质 三三.结构化程序设计结构化程序设计 四四.算法的描述算法的描述一一.算法的概念算法的概念算法:算法:解决问题确定的方法和有限的步骤解决问题确定的方法和有限的步骤称作为算法称作为算法。一
2、个程序应包括两个方面的内容一个程序应包括两个方面的内容:对数据的描述:数据结构对数据的描述:数据结构对操作的描述:算法对操作的描述:算法完整的程序设计应该是完整的程序设计应该是:程序设计程序设计数据结构数据结构算法算法方法方法工具工具二二.算法的基本性质算法的基本性质l有穷性:有穷性:算法必须在执行有限个操作后终算法必须在执行有限个操作后终止;止;l确定性:确定性:算法中每一步的含义必须是确切算法中每一步的含义必须是确切的,不可出现任何二义性;的,不可出现任何二义性;l有效性:有效性:算法中的每一步操作都应该能有算法中的每一步操作都应该能有效执行,一个不可执行的操作是无效的;效执行,一个不可执
3、行的操作是无效的;l有有0 0个或多个输入个或多个输入;l有有1 1个或多个输出个或多个输出。三三.结构化程序设计结构化程序设计结构化程序设计方法主要包括:结构化程序设计方法主要包括:只采用顺序、选择、循环三种基本的程序只采用顺序、选择、循环三种基本的程序控制结构来编制程序,从而使程序具有良好控制结构来编制程序,从而使程序具有良好的结构;的结构;程序设计自顶而下;程序设计自顶而下;用结构化程序设计流程图表示算法。用结构化程序设计流程图表示算法。四四.算法的描述算法的描述1流程图流程图2N-S图图3伪代码伪代码四四.算法的描述算法的描述1.流程图流程图过程过程判断判断数据数据预定义过程预定义过程
4、起止起止流程线流程线连接连接注释注释常用的流程图标准化符号常用的流程图标准化符号 用流程图描述程序的三种基本结构用流程图描述程序的三种基本结构l特点:特点:一个入口,一个出口一个入口,一个出口顺序执行顺序执行 S1S2abl顺序结构顺序结构l选择结构选择结构(if语句语句)语句语句1 1语句语句2 2条件条件Y YN N功能功能:判断条件为真时执行语句,否则判断条件为真时执行语句,否则跳过跳过语句语句单选择单选择 双选择双选择用流程图描述程序的三种基本结构用流程图描述程序的三种基本结构语句语句N N条件条件Y Yl循环结构循环结构循循环体体N条件条件Ywhilewhile循环循环do-whil
5、edo-while型循环型循环条件条件NY循循环体体用流程图描述程序的三种基本结构用流程图描述程序的三种基本结构例:交换两个变量的值例:交换两个变量的值 a tb 123 t=aa=bb=t例例3.1 用流程图描述从三个数中取最大数的算法。用流程图描述从三个数中取最大数的算法。a=b输入a,b,cmax=a真假max=bmax=c真假输出max输出c开始结束i=maxmax=n求最大值、最小值问题求最大值、最小值问题 常用算法:例如一种打擂台的方法。常用算法:例如一种打擂台的方法。n n个数中,先假设个数中,先假设第一个数为最大值第一个数为最大值,成,成为擂主,依次同第为擂主,依次同第2 2,
6、3 3,nn个数据个数据逐一比逐一比较较,一旦某个数大,马上替换擂主一旦某个数大,马上替换擂主;所有值比;所有值比较完,最大值也就获得。较完,最大值也就获得。求最小值问题则先假设求最小值问题则先假设为最小值为最小值。bmax假真假输出max结束max=a真max=ccmaxmax=b开始输入a,b,c四四.算法的描述算法的描述 2.N-S图图N-S图的每一种基本结构都是一个矩形框图的每一种基本结构都是一个矩形框S1S2S3PS1S2当PS假真(c)当型重复结构)当型重复结构(a)顺序结构)顺序结构(b)选择结构)选择结构a=bmax=amax=b输入a,b,c假真max=c输出max输出c真假
7、当i=maxmax=n真假输入n初始化:max=0,i=1输出max四四.算法的描述算法的描述3.伪代码伪代码四四.算法的描述算法的描述输入输入a,b,c;if(a=b)max=a;else max=b;if(max=c)输出输出max;else 输出输出c;初始化:初始化:max=0,i=1;当(当(i=max)max=n;输出输出max;小小 结结算法概念算法特性结构化程序设计:顺序、选择、循环结构算法的描述:标准流程图、N-S图、伪代码交换两个数算法求一系列数最大值的算法3.2关系运算符和关系表达式关系运算符和关系表达式一、关系运算符一、关系运算符 关系运算是进行比较大小的运算,并产生运
8、算结果关系运算是进行比较大小的运算,并产生运算结果1 1(真)或(真)或 0 0(假)。(假)。语言中的关系运算符有种语言中的关系运算符有种:、!优先次序:前种同级,高于后种(后种同级)优先次序:前种同级,高于后种(后种同级)关系运算符的结合性为从左到右;关系运算符的结合性为从左到右;如:如:32 2+ac+6 c=ab;cb;(a-b)=1;(a-b)=1;b+ca;b+cbc;(f=abc;(自左至右自左至右 )3.2关系运算符和关系表达式关系运算符和关系表达式注意注意:避免对两个实数表达式作避免对两个实数表达式作“相等相等”或或“不相等不相等”的判别的判别 1.0/3.0*3.0=1.0
9、fabs(1.0/3.0*3.0-1.0)1e-53.2关系运算符和关系表达式关系运算符和关系表达式要表示要表示x在区间在区间a,b中,中,a=x=ba=x&x=b练练 习习1.1.设有变量定义设有变量定义 int z;int z;分析分析 z%2=0 z%2=0 的值?的值?如果如果z z为偶数,则为偶数,则 z%2=0z%2=0的值为的值为1 1;否则否则z z为奇数,则为奇数,则 z%2=0z%2=0的值为的值为0 0;因此,因此,z%2=0z%2=0是断言是断言“z z是偶数是偶数”的的c c语言判断式。语言判断式。2.x2.x与与y y的个位数字相同的个位数字相同 x%10=y%10
10、 x%10=y%10如何判断十位数上数字相同如何判断十位数上数字相同?3.3 逻辑运算与逻辑表达式逻辑运算与逻辑表达式一、逻辑运算符和表达式一、逻辑运算符和表达式 C C语言提供三种逻辑运算符:语言提供三种逻辑运算符:&(&(逻辑与逻辑与)、|(|(逻辑或逻辑或)、!(!(逻辑非逻辑非)说明说明:(1 1)“&”&”和和“|”|”是是“双目(元)运算符双目(元)运算符”,它它要求有两个操作数。要求有两个操作数。(2 2)“!”!”是是“单目(元)运算符单目(元)运算符”,只要求有一,只要求有一个操作数。个操作数。(3 3)优先级次序)优先级次序,高低:高低:!&|!&|a&b a、b均为真均为
11、真,则则a&b为为1(真)。(真)。a|b a、b之一为真之一为真,则,则a|b为为1(真)。(真)。!a 若若a为真为真,则则!a为假。为假。!(非)!(非)(高高)算术运算符算术运算符 关系运算符关系运算符逻辑运算符逻辑运算符&和和|赋值运算符赋值运算符 (低低)例例a+bn+3 (a+b)(n+3)3.3 逻辑运算与逻辑表达式逻辑运算与逻辑表达式例例:判别某一年:判别某一年year是否闰年。是否闰年。条件:条件:能被整除,但不能被能被整除,但不能被100整除。或能被整整除。或能被整 除,又能被除,又能被400整除。整除。判断闰年的逻辑表达式为:判断闰年的逻辑表达式为:(year%4=0&
12、year%100!0)|(year%400=0)判断非闰年的逻辑表达式为:判断非闰年的逻辑表达式为:(year%4!=0)|(year%100=0&year%400!=0)3.3 逻辑运算与逻辑表达式逻辑运算与逻辑表达式小小 结结关系运算符优先级、结合性关系运算表达式结果是是逻辑值:以数值以数值“”代表代表“真真”,以以“”代表代表“假假”逻辑运算符优先级、结合性逻辑运算表达式结果逻辑值可以用来表示选择或循环条件3.4 选择型程序设计选择型程序设计一一.if结构结构二二.ifelse if结构结构三三.switch结构结构四四.条件表达式条件表达式根据给定的条件判断决定要根据给定的条件判断决定
13、要执行的操作。执行的操作。功能功能:判断条件为真时执行语句判断条件为真时执行语句否则否则跳过跳过语句语句语句格式语句格式:if(if(条件条件)语句组语句组;例例:if(ab)x=a;if(ab)x=a;1.单选择单选择if语句语句 语句句假假(0)条件条件真真(!0)条件条件可以是关系表达式可以是关系表达式或逻辑表达式或逻辑表达式一、一、if 语句语句2.双选择双选择if语句语句语句格式语句格式:if(if(条件条件)语句组语句组1;1;else else 语句组语句组2;2;功能功能:当条件为非零时执行当条件为非零时执行语句组语句组1否则执行否则执行语句组语句组2。语句组1条件语句组2真真
14、(!0)假假(0)一、一、if 语句语句if(a60)printf(“及格及格n”);else printf(“不及格不及格n”);main()int a;scanf(“%d”,&a);if(a60)printf(“%dn”,a);输出不及格的成绩输出不及格的成绩例例1 1一、一、if 语句语句#include main()int a,b,max;printf(Input a and b=);scanf(%d%d,&a,&b);/*input number a and b*/if(ab)max=a;/*如果如果ab,则将则将a=max*/else max=b;/*否则,否则,b=max*/pr
15、intf(The max of a and b is:%dn,max);ab?max=bmax=aYN求求a a和和b b两数中较大的一个两数中较大的一个例例2 2一、一、if 语句语句 说出下列程序的输出结果说出下列程序的输出结果:#include main()int a;scanf(%d,&a);if(a50)printf(%d,a);if(a40)printf(%d,a);if(a30)printf(%d,a);例例3 3程序运行:输入输入58,输出输出?输入输入30,输出?输出?一、一、if 语句语句3.有关有关if语句的说明语句的说明l 条件后面不加分号条件后面不加分号l 语句之后有
16、分号语句之后有分号l else不是语句,不能单独使用不是语句,不能单独使用l 当当if后有多个执行语句时,必须用后有多个执行语句时,必须用 将多个语句括将多个语句括起来,构成一个复合语句,而起来,构成一个复合语句,而 之外不必有分号。之外不必有分号。lif后面的表达式一般为逻辑表达式或关系表达式,后面的表达式一般为逻辑表达式或关系表达式,也可以是任意数值类型表达式。也可以是任意数值类型表达式。一、一、if 语句语句该语句是合法的:该语句是合法的:if(3)printf(“ok!”);4、if语句的嵌套语句的嵌套格式:格式:if(表达式)(表达式)if(表达式表达式1)语句语句11;else 语
17、句语句12;else if(表达式表达式2)语句语句21;else 语句语句22;在在ifif语句的语句的“语句语句1”1”或或“语句语句2”2”中又包含着中又包含着ifif语句语句判断表达式的值,若为非判断表达式的值,若为非0,再判断,再判断表达式表达式1的的值,非值,非0执行语句执行语句11,否则执行语句,否则执行语句12若表达式的值为若表达式的值为0,再判断,再判断表达式表达式2的值,非的值,非0执行语句执行语句21,否则执行语句,否则执行语句22功能功能:外if内嵌if一、一、if 语句语句下列程序段表示的数学式下列程序段表示的数学式?y y=-1;=-1;if(x!=0)if(x!=
18、0)if(x0)y=2*sin(x)if(x0)y=2*sin(x);else y=0;else y=0;程序段表示的数学式程序段表示的数学式1:1:0 (0 (x0)x0)2sinx (x0)讨论讨论:给第二个给第二个ifif行加行加 后表示的数学式?后表示的数学式?程序段表示的数学式程序段表示的数学式2:2:-1 (-1 (x0)x0)2sinx (x0)数学式数学式1 1程序可表示为程序可表示为:y=-1;y=-1;if(x!=0)if(x!=0)if(x0)y=2*sin(x);if(x0)y=2*sin(x);else y=0;else y=0;思考思考强调强调:if和和else可成
19、对出现,可成对出现,也可不成对出现,每个也可不成对出现,每个else都与距其最近的都与距其最近的if配对。配对。一、一、if 语句语句写一程序,判断某一年是否闰年。写一程序,判断某一年是否闰年。其中:leap代表闰年的信息,leap=1闰年,leap=0 非闰年 main()int year,leap;scanf(“%d”,&year);leap=0;if(year%4=0&year%100!=0)|(year%400=0)leap=1;if(leap=1)printf(“%d is”,year);else printf(“%d is not”,year);printf(“a leap yea
20、rn”);#include main()int year,leap;scanf(%d,&year);leap=0;if(year%4=0&year%100!=0)|(year%400=0)leap=1;if(leap=1)printf(%dn is a leap year,year);else printf(%dn is not a leap year,year);return(0);例例4 4输入:1989 结果为:1989 is not a leap year输入:2000结果为:2000 is a leap year 1、if语句的多重选择形式:语句的多重选择形式:if(表达式表达式1)
21、语句语句 1 else if(表达式表达式2)语句语句 2 else if(表达式表达式3)语句语句 3 else if(表达式表达式m)语句语句 m else 语句语句 n仅执行表达式为真的后面内嵌语句仅执行表达式为真的后面内嵌语句,若所有的表达式若所有的表达式值都为值都为0,则执行最后一个则执行最后一个else后的内嵌语句后的内嵌语句.二、二、ifelse if结构结构语句1语句2语句3真假表达式1假真表达式2真假表达式3二、二、ifelse if结构结构 根据百分制分数决定成绩的等级:根据百分制分数决定成绩的等级:80 80分以上为分以上为A A级;级;70 70分及以上,分及以上,80
22、80分以下,分以下,B B级;级;60 60分及以上,分及以上,7070分以下,分以下,C C级;级;60 60分以下,分以下,D D级。级。真真假假score=80score=80score=70score=70等级等级A A真真假假输入输入scorescorescore=60score=60等级等级B B等级等级D D等级等级C C二、二、ifelse if结构结构例例5 5#include int main(void)float score;printf(Input a score:);scanf(%f,&score);if(score=80)printf(%f is An,score)
23、;else if(score=70)printf(%f is Bn,score);else if(score=60)printf(%f is Cn,score);else printf(%f is Dn,score);2、缩排缩排是源程序普遍使用的是源程序普遍使用的书写方法,它是语句书写方法,它是语句相对于上一条语句退相对于上一条语句退后若干个字符位置的后若干个字符位置的书写方法。书写方法。缩排的目的缩排的目的就是就是为了使源程序的层次为了使源程序的层次清晰明了,增加源程清晰明了,增加源程序的可读性。序的可读性。#include main()int x;scanf(“%d”,&x);if(x0
24、)printf(“X is positive.”);x=x+1;else printf(“X is negative.”);缩进缩进缩进二、二、ifelse if结构结构 main()int i=1,j=1,k=2;if(j+|k+)&i+)printf(“%d,%d,%dn”,i,j,k);程序输出结果是:程序输出结果是:(C)A1,1,2 B.2,2,1 C.2,2,2 D.2,2,3 main()int a=5,b=4,c=3,d=2;if(abc)printf(“%d”,d);else if(c-1=d)=1)printf(“%dn”,d+1);else printf(“%dn”,d+
25、2);程序输出结果是:程序输出结果是:(B)A.2 B.3 C.4 D.编译时有错,无结果编译时有错,无结果三、三、switch switch 语句语句1、一般格式:、一般格式:switch(表达式)(表达式)case 常量表达式常量表达式1:语句序列:语句序列1 break;case 常量表达式常量表达式2:语句序列:语句序列2 break;:case 常量表达式常量表达式n:语句序列:语句序列n break;default:语句序列:语句序列n+1 表达式表达式语句序列语句序列1语句序列语句序列2语句序列语句序列n语句序列语句序列n+1 常量表达式常量表达式1 1常量表达式常量表达式2 2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计
限制150内