《C语言程序设计4完整版教学课件全书电子讲义(最新).ppt》由会员分享,可在线阅读,更多相关《C语言程序设计4完整版教学课件全书电子讲义(最新).ppt(463页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、主讲教师主讲教师:C C语言程序设计语言程序设计第一章第一章 简单简单C C程序的编写程序的编写第一节第一节 阅读简单的阅读简单的C C程序程序例例例例1.1 1.1 1.1 1.1 阅读一个简单程序。阅读一个简单程序。阅读一个简单程序。阅读一个简单程序。运行程序main()/*main()/*main()/*main()/*主函数主函数主函数主函数*/int a,b;/*int a,b;/*int a,b;/*int a,b;/*声明定义两个整型变量声明定义两个整型变量声明定义两个整型变量声明定义两个整型变量*/a=1;b=a+1;/*a=1;b=a+1;/*a=1;b=a+1;/*a=1;
2、b=a+1;/*给两个变量赋初值给两个变量赋初值给两个变量赋初值给两个变量赋初值*/printf(%d,b);/*printf(%d,b);/*printf(%d,b);/*printf(%d,b);/*输出输出输出输出b b b b的值的值的值的值*/例例例例1.2 1.2 1.2 1.2 阅读下面程序,写出结果。阅读下面程序,写出结果。阅读下面程序,写出结果。阅读下面程序,写出结果。运行程序myoutput()/*myoutput()/*myoutput()/*myoutput()/*自定义函数自定义函数自定义函数自定义函数*/printf(n*Hello!How do you do?*n
3、);printf(n*Hello!How do you do?*n);printf(n*Hello!How do you do?*n);printf(n*Hello!How do you do?*n);/*/*/*/*输出字符串输出字符串输出字符串输出字符串*/main()/*main()/*main()/*main()/*主函数主函数主函数主函数*/myoutput();/*myoutput();/*myoutput();/*myoutput();/*调用函数调用函数调用函数调用函数*/printf(*n);printf(*n);printf(*n);printf(*n);一、一、一、一、C
4、 C C C语言的程序结构语言的程序结构语言的程序结构语言的程序结构 所有所有所有所有C C C C程序都是由一个或多个文件组成,程序都是由一个或多个文件组成,程序都是由一个或多个文件组成,程序都是由一个或多个文件组成,一个文件又由一个或多个函数组成。一个文件又由一个或多个函数组成。一个文件又由一个或多个函数组成。一个文件又由一个或多个函数组成。一个函数由函数头和函数体组成。一个函数由函数头和函数体组成。一个函数由函数头和函数体组成。一个函数由函数头和函数体组成。一个一个一个一个C C C C程序有且仅有一个主程序有且仅有一个主程序有且仅有一个主程序有且仅有一个主(main)(main)(ma
5、in)(main)函数。函数。函数。函数。一个一个一个一个C C C C程序总是从程序总是从程序总是从程序总是从mainmainmainmain函数开始执行,函数开始执行,函数开始执行,函数开始执行,不管不管不管不管mainmainmainmain函数出现在任何位置。函数出现在任何位置。函数出现在任何位置。函数出现在任何位置。一、一、一、一、C C C C语言的程序结构语言的程序结构语言的程序结构语言的程序结构 C C C C程序使用程序使用程序使用程序使用“;”作为语句的终止符或作为语句的终止符或作为语句的终止符或作为语句的终止符或分隔符。分隔符。分隔符。分隔符。C C C C程序中用程序中
6、用程序中用程序中用“”表示程序的结构层表示程序的结构层表示程序的结构层表示程序的结构层次范围。次范围。次范围。次范围。可以对可以对可以对可以对C C C C程序作注释,主要是对程序功程序作注释,主要是对程序功程序作注释,主要是对程序功程序作注释,主要是对程序功能的必要说明和解释。能的必要说明和解释。能的必要说明和解释。能的必要说明和解释。二、二、二、二、C C C C语言的特点语言的特点语言的特点语言的特点 C C C C语言简洁、紧凑语言简洁、紧凑语言简洁、紧凑语言简洁、紧凑C C C C语言是一种结构化的程序设计语言语言是一种结构化的程序设计语言语言是一种结构化的程序设计语言语言是一种结构
7、化的程序设计语言C C C C语言具有丰富的数据类型语言具有丰富的数据类型语言具有丰富的数据类型语言具有丰富的数据类型C C C C语言提供了丰富的运算符语言提供了丰富的运算符语言提供了丰富的运算符语言提供了丰富的运算符C C C C语言可以直接对硬件进行操作语言可以直接对硬件进行操作语言可以直接对硬件进行操作语言可以直接对硬件进行操作C C C C语言的移植性好语言的移植性好语言的移植性好语言的移植性好三、三、三、三、C C C C程序的书写格式程序的书写格式程序的书写格式程序的书写格式 每行通常写一条语句每行通常写一条语句每行通常写一条语句每行通常写一条语句每条语句结束时加分号每条语句结束
8、时加分号每条语句结束时加分号每条语句结束时加分号“:”作为语句作为语句作为语句作为语句结束符结束符结束符结束符花括号内的语句通常向右缩进两个字符花括号内的语句通常向右缩进两个字符花括号内的语句通常向右缩进两个字符花括号内的语句通常向右缩进两个字符或一个水平制表符或一个水平制表符或一个水平制表符或一个水平制表符适当采取缩进格式适当采取缩进格式适当采取缩进格式适当采取缩进格式在程序中尽量使用注释信息在程序中尽量使用注释信息在程序中尽量使用注释信息在程序中尽量使用注释信息 第二节第二节 设计简单设计简单C C程序程序例例例例1.3 1.3 1.3 1.3 设计程序:已知设计程序:已知设计程序:已知设
9、计程序:已知a=3,b=5a=3,b=5a=3,b=5a=3,b=5;求求求求sum=2*a+b;sum=2*a+b;sum=2*a+b;sum=2*a+b;运行程序main()main()main()main()int a,b,sum;int a,b,sum;int a,b,sum;int a,b,sum;a=3;b=5;a=3;b=5;a=3;b=5;a=3;b=5;sum=2*a+b;sum=2*a+b;sum=2*a+b;sum=2*a+b;printf(sum=%d,sum);printf(sum=%d,sum);printf(sum=%d,sum);printf(sum=%d,su
10、m);一、编程实例一、编程实例一、编程实例一、编程实例二、二、二、二、算法及算法表示算法及算法表示算法及算法表示算法及算法表示1 1 1 1、算法的概念、算法的概念、算法的概念、算法的概念 程序算法数据结构程序算法数据结构程序算法数据结构程序算法数据结构 所谓算法,就是一个有穷规则的集合,所谓算法,就是一个有穷规则的集合,所谓算法,就是一个有穷规则的集合,所谓算法,就是一个有穷规则的集合,其中的规则确定了一个解决某个特定类型其中的规则确定了一个解决某个特定类型其中的规则确定了一个解决某个特定类型其中的规则确定了一个解决某个特定类型问题的运算序列。问题的运算序列。问题的运算序列。问题的运算序列。
11、算法的两大要素算法的两大要素算法的两大要素算法的两大要素操作操作操作操作控制结构控制结构控制结构控制结构 例题:某人乘坐火车从本地出发(秦皇岛),例题:某人乘坐火车从本地出发(秦皇岛),例题:某人乘坐火车从本地出发(秦皇岛),例题:某人乘坐火车从本地出发(秦皇岛),终点到北京出差。终点到北京出差。终点到北京出差。终点到北京出差。操作:买票,候车,坐车等。操作:买票,候车,坐车等。操作:买票,候车,坐车等。操作:买票,候车,坐车等。控制结构:控制结构:控制结构:控制结构:秦皇岛站秦皇岛站秦皇岛站秦皇岛站 直达直达直达直达 北京站北京站北京站北京站秦皇岛站秦皇岛站秦皇岛站秦皇岛站 天津站天津站天津
12、站天津站 北京站北京站北京站北京站说明:说明:说明:说明:每一个算法是由一系列的操作组成,同每一个算法是由一系列的操作组成,同每一个算法是由一系列的操作组成,同每一个算法是由一系列的操作组成,同 一操作序列,按不同的顺序执行,会得一操作序列,按不同的顺序执行,会得一操作序列,按不同的顺序执行,会得一操作序列,按不同的顺序执行,会得 出不同的结果和执行效率。控制结构即出不同的结果和执行效率。控制结构即出不同的结果和执行效率。控制结构即出不同的结果和执行效率。控制结构即 控制组成算法的各操作的执行顺序。控制组成算法的各操作的执行顺序。控制组成算法的各操作的执行顺序。控制组成算法的各操作的执行顺序。
13、程序的三种基本控制结构程序的三种基本控制结构 顺序结构顺序结构顺序结构顺序结构选择结构选择结构选择结构选择结构循环结构循环结构循环结构循环结构 两数进行交换两数进行交换两数进行交换两数进行交换A A A AB B B B交交交交 换换换换C C C C如下执行过程:如下执行过程:如下执行过程:如下执行过程:C=A C=A C=A C=A;A=B A=B A=B A=B;B=C B=C B=C B=C;A AC CB BA AC CB B三个数中取最大值三个数中取最大值三个数中取最大值三个数中取最大值算法算法算法算法1 1:采用两两比较找大数。:采用两两比较找大数。:采用两两比较找大数。:采用两
14、两比较找大数。实现步骤:实现步骤:实现步骤:实现步骤:(1 1)首先用)首先用)首先用)首先用a a与与与与c c进行比较;进行比较;进行比较;进行比较;(2 2)其次用)其次用)其次用)其次用c c与与与与b b进行比较;进行比较;进行比较;进行比较;(3 3)再次用)再次用)再次用)再次用a a与与与与b b进行比较;进行比较;进行比较;进行比较;acacacacbcbcbbabababmaxbmaxbmaxcmaxcmaxcmaxcmax=amax=a;max=cmax=c;(4 4)最后输出最大值)最后输出最大值)最后输出最大值)最后输出最大值maxmax。实现过程如下:实现过程如下:
15、实现过程如下:实现过程如下:int a,b,c,max;int a,b,c,max;max=a;max=a;if (maxb)max=b;if (maxb)max=b;if (maxc)max=c;if (maxc)max=c;选择选择选择选择结构结构结构结构三、多个数排序三、多个数排序三、多个数排序三、多个数排序升序升序升序升序有如下一组数据:有如下一组数据:有如下一组数据:有如下一组数据:5 7 6 9 25 7 6 9 2实现步骤:实现步骤:实现步骤:实现步骤:(1 1 1 1)首先用第一个数与第二个数比较,若大于第)首先用第一个数与第二个数比较,若大于第)首先用第一个数与第二个数比较,
16、若大于第)首先用第一个数与第二个数比较,若大于第二个数,就进行交换;接着用第二数与第三个数比二个数,就进行交换;接着用第二数与第三个数比二个数,就进行交换;接着用第二数与第三个数比二个数,就进行交换;接着用第二数与第三个数比较,依次类推,直到第四个数与第五个数比较为止较,依次类推,直到第四个数与第五个数比较为止较,依次类推,直到第四个数与第五个数比较为止较,依次类推,直到第四个数与第五个数比较为止5 7 6 9 25 7 6 9 25 6 7 9 25 6 7 9 25 6 7 2 95 6 7 2 9(2 2)然后从前四个数中,再重复()然后从前四个数中,再重复()然后从前四个数中,再重复(
17、)然后从前四个数中,再重复(1 1)过程;)过程;)过程;)过程;5 6 7 2 95 6 7 2 95 6 2 7 95 6 2 7 9(3 3)依次类推,从前三个数中,重复上述比较;)依次类推,从前三个数中,重复上述比较;)依次类推,从前三个数中,重复上述比较;)依次类推,从前三个数中,重复上述比较;5 6 2 7 95 6 2 7 95 2 6 7 95 2 6 7 9(4 4)最后用从前二个数中,再重复上述过程。)最后用从前二个数中,再重复上述过程。)最后用从前二个数中,再重复上述过程。)最后用从前二个数中,再重复上述过程。5 2 6 7 95 2 6 7 92 5 6 7 92 5
18、6 7 9思考:如果按降序排列,如何实现?思考:如果按降序排列,如何实现?思考:如果按降序排列,如何实现?思考:如果按降序排列,如何实现?上述多个数进行排序问题,采用什么上述多个数进行排序问题,采用什么上述多个数进行排序问题,采用什么上述多个数进行排序问题,采用什么 控制结构合理?控制结构合理?控制结构合理?控制结构合理?四、求四、求四、求四、求1 1 1 12 2 2 23 3 3 3 99999999100100100100的累加和。的累加和。的累加和。的累加和。1 12 23 34 45 5 97 9798989999100100观察观察观察观察:1 1 1 1、相邻两数相差、相邻两数相
19、差、相邻两数相差、相邻两数相差1 1 1 1;假设:假设:假设:假设:a=1a=1;sum=0sum=0;sum=sum+asum=sum+a;a=a+1;a=a+1;sum=a;sum=a;a=a+1;a=a+1;sum=sum+a;sum=sum+a;a=a+1;a=a+1;sum=sum+a;sum=sum+a;2 2 2 2、数据依次加、数据依次加、数据依次加、数据依次加1 1 1 1可得到上述数列;可得到上述数列;可得到上述数列;可得到上述数列;衡量算法的正确性衡量算法的正确性衡量算法的正确性衡量算法的正确性 有穷性有穷性有穷性有穷性确定性确定性确定性确定性有效性有效性有效性有效性没
20、有输入或有多个输入没有输入或有多个输入没有输入或有多个输入没有输入或有多个输入有一个或多个输出有一个或多个输出有一个或多个输出有一个或多个输出 2 2 2 2、算法的描述、算法的描述、算法的描述、算法的描述 设计算法时,可以使用不同的算法描设计算法时,可以使用不同的算法描设计算法时,可以使用不同的算法描设计算法时,可以使用不同的算法描述工具,常用的有传统流程图、述工具,常用的有传统流程图、述工具,常用的有传统流程图、述工具,常用的有传统流程图、N-SN-SN-SN-S图、图、图、图、自然语言、伪代码等。自然语言、伪代码等。自然语言、伪代码等。自然语言、伪代码等。流程图描述流程图描述流程图描述流
21、程图描述 开始开始开始开始/结结结结束框束框束框束框处处处处理框理框理框理框判断框判断框判断框判断框输输输输入入入入/输输输输出框出框出框出框流程流程流程流程线线线线连连连连接符接符接符接符开开开开 始始始始输入输入输入输入a a a a,b b b b输出输出输出输出maxmaxmaxmax结结结结 束束束束max=bmax=bmax=bmax=bmax=amax=amax=amax=aT F T F T F T F ababababN-SN-SN-SN-S图的描述图的描述图的描述图的描述 假假假假max=amax=amax=amax=a真真真真假假假假maxbmaxbmaxbmaxbmax
22、=bmax=bmax=bmax=b真真真真maxcmaxcmaxcmax*/%-+-(1)(2)(3)说明:“-”可为单目运算符时,右结合性两整数相除,结果为整数%要求两侧均为整型数据例 5/2 =-5/2.0 =例 5%2 =-5%2 =1%10 =5%1 =5.5%2例 5/2 =2 -5/2.0=-2.5例 5%2 =1 -5%2 =-1 1%10 =1 5%1 =0 5.5%2 ()2 2 2 2、自反算、自反算、自反算、自反算术赋值术赋值术赋值术赋值运算符运算符运算符运算符 a=2 a=2 a=2 a=2 a=4;a=4;a=4;a=4;a-=2;a-=2;a-=2;a-=2;a-=
23、b a-=b a-=b a-=b a=a-ba=a-ba=a-ba=a-b自反减自反减自反减自反减-=-=-=-=a=6a=6a=6a=6a=4;a=4;a=4;a=4;a+=2;a+=2;a+=2;a+=2;整型或整型或整型或整型或实实实实 型型型型整型或整型或整型或整型或实实实实型型型型 a+=b a+=b a+=b a+=b a=a+b a=a+b a=a+b a=a+b自反加自反加自反加自反加+=+=+=+=a=0a=0a=0a=0a=4;a=4;a=4;a=4;a%=2;a%=2;a%=2;a%=2;整整整整 型型型型整型整型整型整型a%=b a%=b a%=b a%=b a=a%b
24、a=a%ba=a%ba=a%b自反模自反模自反模自反模%=%=%=%=a=2a=2a=2a=2a=4;a=4;a=4;a=4;a/=2;a/=2;a/=2;a/=2;a/=b a/=b a/=b a/=b a=a/ba=a/ba=a/ba=a/b自反除自反除自反除自反除/=/=/=/=a=8 a=8 a=8 a=8a=4;a=4;a=4;a=4;a*=2;a*=2;a*=2;a*=2;从右从右从右从右向左向左向左向左整型或整型或整型或整型或实实实实型型型型双目双目双目双目整型或整型或整型或整型或实实实实型型型型a*=b a*=b a*=b a*=b a=a*ba=a*ba=a*ba=a*b自反
25、乘自反乘自反乘自反乘*=*=*=*=表达表达表达表达 式式式式值值值值举举举举例例例例结结结结合合合合方向方向方向方向运算运算运算运算结结结结果果果果对对对对象象象象个数个数个数个数运算运算运算运算对对对对象象象象运算运算运算运算规则规则规则规则 名称名称名称名称运算符运算符运算符运算符复合的赋值运算符复合的赋值运算符1复合运算符:复合运算符:10种种 +=,=,*=,/=,%=,&,|,位运算(左移、右移、按位与、位运算(左移、右移、按位与、按位或、按位异或)按位或、按位异或)例如:例如:a+=3 相当于相当于 a=a+3 x*=y+8 相当于相当于 x=x*(y+8)x%=3 相当于相当于
26、 x=x%32意义:意义:简化程序,使程序精炼。简化程序,使程序精炼。提高编译效率。提高编译效率。例:a=b=c=5 a=(b=5)a=5+(c=6)a=(b=4)+(c=6)a=(b=10)/(c=2)/表达式值为5,a,b,c值为5/b=5;a=5/表达式值11,c=6,a=11/表达式值10,a=10,b=4,c=6/表达式值5,a=5,b=10,c=2赋值表达式赋值表达式1概念:概念:由赋值运算符将一个变量和一个表达式连接起来的式子。由赋值运算符将一个变量和一个表达式连接起来的式子。2一般形式:一般形式:变量赋值运算符表达式变量赋值运算符表达式例例 a=b=c=5 (自右向左自右向左右
27、结合右结合,注意:连续赋值在这里的注意:连续赋值在这里的表达式表达式中是允许的,但在前面讲的中是允许的,但在前面讲的定义语句定义语句中是不可以的中是不可以的。)。)赋值运算说明:结合方向:自右向左优先级:左侧必须是变量,不能是常量或表达式赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型赋值表达式的值与变量值相等,且可嵌套例:a=12;a+=a-=a*a例:int a=2;a%=4-1;a+=a*=a-=a*=3;/a=-264 等价于a=a+(a=a-(a*a)/a=0 等价于a=a+(a=a*(a=a-(a=a*3)3 3 3 3、自增和自减运算符、自增和自减运算符、自增和自减运
28、算符、自增和自减运算符运算符运算符运算符运算符 名称名称名称名称运算运算运算运算规则规则规则规则运算运算运算运算对对对对象象象象对对对对象象象象个数个数个数个数运算运算运算运算结结结结果果果果结结结结合合合合方向方向方向方向举举举举 例例例例表达表达表达表达式式式式值值值值+增增增增1 1 1 1(前(前(前(前缀缀缀缀)先增先增先增先增值值值值后引用后引用后引用后引用整型、整型、整型、整型、实实实实型型型型或字或字或字或字符型符型符型符型单单单单目目目目同运同运同运同运算算算算对对对对象的象的象的象的数据数据数据数据类类类类型型型型从右从右从右从右 向左向左向左向左a=2;x=+a;a=2;
29、x=+a;a=2;x=+a;a=2;x=+a;x=3x=3x=3x=3+增增增增1 1 1 1(后(后(后(后缀缀缀缀)先引用先引用先引用先引用后增后增后增后增值值值值a=2;x=a+;a=2;x=a+;a=2;x=a+;a=2;x=a+;x=2x=2x=2x=2-减减减减1 1 1 1(前(前(前(前缀缀缀缀)先减先减先减先减值值值值后引用后引用后引用后引用a=2;x=-a;a=2;x=-a;a=2;x=-a;a=2;x=-a;x=1x=1x=1x=1-减减减减1 1 1 1(后(后(后(后缀缀缀缀)先引用先引用先引用先引用后减后减后减后减值值值值a=2;x=a-;a=2;x=a-;a=2;
30、x=a-;a=2;x=a-;x=2x=2x=2x=2自增、自减运算符+-作用:使变量值加1或减1种类:前置 +i,-i (先执行i+1或i-1,再使用i值)后置 i+,i-(先使用i值,再执行i+1或i-1)例 j=3;k=+j;j=3;k=j+;j=3;printf(“%d”,+j);j=3;printf(“%d”,j+);a=3;b=5;c=(+a)*b;a=3;b=5;c=(a+)*b;/k=4,j=4/k=3,j=4/4/3/c=20,a=4/c=15,a=4说明:+-不能用于常量和表达式,如5+,(a+b)+-结合方向:自右向左优先级:-+-*/%-+-(1)(2)(3)4 4、正负
31、号运算符正负号运算符 运算符运算符运算符运算符名称名称名称名称 运算运算运算运算 规则规则规则规则运算运算运算运算 对对对对象象象象对对对对象象象象个数个数个数个数运算运算运算运算结结结结果果果果结结结结合合合合方向方向方向方向举举举举 例例例例表达式表达式表达式表达式值值值值+正号正号正号正号取原取原取原取原值值值值整型整型整型整型或或或或实实实实型型型型单单单单目目目目整型整型整型整型或或或或实实实实型型型型从右从右从右从右向左向左向左向左a=2;t=+a;a=2;t=+a;a=2;t=+a;a=2;t=+a;t=2t=2t=2t=2-负负负负号号号号取取取取负值负值负值负值a=2;t=-
32、a;a=2;t=-a;a=2;t=-a;a=2;t=-a;t=-2t=-2t=-2t=-25 5、强制类型转换运算符强制类型转换运算符运算符运算符运算符运算符名称名称名称名称运算运算运算运算 规则规则规则规则 运算运算运算运算 对对对对象象象象对对对对象象象象个数个数个数个数运算运算运算运算结结结结果果果果结结结结合合合合方向方向方向方向 举举举举 例例例例表达表达表达表达式式式式值值值值(类类类类型)型)型)型)类类类类型型型型转换转换转换转换转换转换转换转换 为为为为指指指指定定定定类类类类型型型型整型或整型或整型或整型或实实实实 型型型型单单单单目目目目整型或整型或整型或整型或实实实实型
33、型型型从右从右从右从右向左向左向左向左float x=2.3;float x=2.3;float x=2.3;float x=2.3;(int)x;(int)x;(int)x;(int)x;2 2 2 2强制类型转换运算符:强制类型转换运算符:将一个表达式转换成所需类型。将一个表达式转换成所需类型。一般形式:一般形式:(类型名)(表达式)(类型名)(表达式)例 (int)x (int)(x+y)(int)x+y (double)(3/2)(int)3.6 说明:强制转换得到所需类型的中间变量,原变量类型不变 例 main()float x;int i;x=3.6;i=(int)x;printf
34、(“x=%f,i=%d”,x,i);结果:x=3.600000,i=3二、关系运算符及其表达式二、关系运算符及其表达式 运算符运算符运算符运算符 名名名名 称称称称运算运算运算运算规则规则规则规则运算运算运算运算对对对对象象象象对对对对象象象象个数个数个数个数运算运算运算运算结结结结果果果果结结结结合合合合方向方向方向方向举举举举 例例例例表达表达表达表达式式式式值值值值 小于小于小于小于满满满满足足足足则则则则为为为为真真真真,结结结结果果果果为为为为1 1 1 1;不不不不满满满满足足足足则则则则为为为为假假假假,结结结结果果果果为为为为0 0 0 0整型、整型、整型、整型、实实实实型型型
35、型或字或字或字或字符型符型符型符型双双双双目目目目逻辑逻辑逻辑逻辑值值值值(整(整(整(整型)型)型)型)从左从左从左从左向右向右向右向右a=1;b=2;ab;a=1;b=2;ab;a=1;b=2;ab;a=1;b=2;ab;1 1 1 1=小于或等于小于或等于小于或等于小于或等于a=1;b=2;a=b;a=1;b=2;a=b;a=1;b=2;a=b;a=1;b=2;a 大于大于大于大于a=1;b=2;ab;a=1;b=2;ab;a=1;b=2;ab;a=1;b=2;ab;0 0 0 0=大于或大于大于或大于大于或大于大于或大于a=1;b=2;a=b;a=1;b=2;a=b;a=1;b=2;a
36、=b;a=1;b=2;a=b;0 0 0 0=等于等于等于等于a=1;b=2;a=b;a=1;b=2;a=b;a=1;b=2;a=b;a=1;b=2;a=b;0 0 0 0!=!=!=!=不等于不等于不等于不等于a=1;b=2;a!=b;a=1;b=2;a!=b;a=1;b=2;a!=b;a=1;b=2;a!=b;1 1 1 1关系运算符和关系表达式关系运算符和关系表达式(一)、关系运算符及其优先次序1、C语言的6种关系运算符 =!=2、优先次序 前4种运算符的优先级相同,后两种也相同,且前4种高于后2种。关系运算符优先级低于算术运算符 关系运算符的优先级高于赋值运算符例:ca+b c(a+b
37、)ab!=c (ab)!=c a=bc a=(bc a=(bc)注:即 相当于 算术运算符 关系运算符 赋值运算符(二)、关系表达式1概念:用关系运算符将两个表达式连接起来的式子,称关系表达式。例:ab,(a=3)(b=5),ab)(bb表达式的值为1(ab)=c表达式的值为1b+cb d的值为1f=abcf的值为0三、三、逻辑运算符及其表达式逻辑运算符及其表达式运算符运算符运算符运算符名称名称名称名称运算运算运算运算规则规则规则规则运算运算运算运算对对对对象象象象对对对对象象象象个数个数个数个数运算运算运算运算结结结结果果果果结结结结合合合合方向方向方向方向举举举举 例例例例表达表达表达表达
38、式式式式值值值值!非非非非逻辑逻辑逻辑逻辑非非非非整型、整型、整型、整型、实实实实型型型型或字或字或字或字符型符型符型符型单单单单目目目目逻辑逻辑逻辑逻辑值值值值(整(整(整(整型)型)型)型)从右从右从右从右向左向左向左向左a=1;!a;a=1;!a;a=1;!a;a=1;!a;0 0 0 0&与与与与逻辑逻辑逻辑逻辑与与与与双目双目双目双目从左从左从左从左向右向右向右向右a=1;b=0;a&b;a=1;b=0;a&b;a=1;b=0;a&b;a=1;b=0;a&b;0 0 0 0|或或或或逻辑逻辑逻辑逻辑或或或或a=1;b=0;a|b;a=1;b=0;a|b;a=1;b=0;a|b;a=1
39、;b=0;a|b;1 1 1 1C语言有三种基本的逻辑运算(布尔运算):与 (逻辑乘)用&表示,(相当于其它语言中的AND)或 (逻辑加)用|表示(相当于其它语言中的 OR)非 (逻辑非)用!表示(相当于其它语言中的NOT)逻辑运算的结果值有两个:false(假)、true(真)规则规则规则规则:设有两个布尔量x1,x2 与运算:x1&x2 当x1,x2均为真时,x1&x2 结果为真,否则为假;或运算:x1|x2 当x1,x2二者其中有一个为真时,结果即为真,只有均为假时,才为假;非运算:!x1当x1为真时,结果为假;当x1为假时,结果为真。逻辑运算符与逻辑表达式逻辑运算符与逻辑表达式根据上面
40、的运算规则考虑:a a a&b a|b !atrue truefalse truetrue falsefalse false true truefalse falsetruetrue falsetruefalse falsefalsetrue真 值 表1逻辑运算符&逻辑与 二目(元)运算符|逻辑或 !逻辑非一目(元)运算符说明说明:2优先级 !&|,即“!”为三者中最高的。逻辑运算符中的“&”和“|”低于关系运算符,“!”高 于算术运算符。!(非)算术运算符关系运算符&和|赋值运算符 高低强调强调强调强调:1、当同时使用几个布尔量时,运算的优先级别为!(非)(与)|(或),可以用括号改变其运算
41、的先后次序。2、关系运算的结果为布尔量如 53 结果为 true sqrt(2.5)1 结果为 true(1)a b 结果为假 false(0)3、关系运算顺序在逻辑运算&、|之前(与PASCAL相反)例如:判断(x,y)是否在第一象限,即判断 x,y是否均大于零,表达式为(x0)&(y0)可以写成 x0&y0而(a=b)|(x=y)可以写成 a=b|x=y 不必加括号。例:a=4,b=5!a值为0a&b 值为1a|b值为1!a|b值为14&0|2值为1 在进行逻辑表达式的求解中,并不是所有的逻辑运算都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。例:a&b&c
42、0 非0 0 非0 0 非0 0abc课堂练习:四、赋值运算符及其表达式四、赋值运算符及其表达式 运算符运算符运算符运算符名称名称名称名称运算运算运算运算规则规则规则规则运算运算运算运算对对对对象象象象对对对对象象象象个数个数个数个数运算运算运算运算结结结结果果果果结结结结合合合合方向方向方向方向举举举举例例例例表达表达表达表达式式式式值值值值 赋值赋值赋值赋值给变给变给变给变量量量量赋值赋值赋值赋值任何任何任何任何类类类类型型型型双目双目双目双目任何任何任何任何类类类类型型型型从右从右从右从右向左向左向左向左a=5;a=5;a=5;a=5;5 5 5 5五、逗号运算符及其表达式五、逗号运算符
43、及其表达式 运算符运算符运算符运算符名称名称名称名称运算运算运算运算规则规则规则规则运算运算运算运算对对对对象象象象对对对对象象象象个数个数个数个数运算运算运算运算结结结结果果果果结结结结合合合合方向方向方向方向举举举举 例例例例表达表达表达表达式式式式值值值值,逗号逗号逗号逗号最后一最后一最后一最后一个表达个表达个表达个表达式的式的式的式的值值值值表达式表达式表达式表达式双目双目双目双目最后一最后一最后一最后一个表达个表达个表达个表达式的式的式的式的值值值值从左从左从左从左向右向右向右向右2*3,5+7;2*3,5+7;2*3,5+7;2*3,5+7;12121212逗号运算符和逗号表达式逗
44、号运算符和逗号表达式一、逗号运算符又称一、逗号运算符又称 顺序求值运算符顺序求值运算符二、一般表达式:二、一般表达式:表达式表达式1,表达式,表达式2三、求解过程:三、求解过程:先求解表达式先求解表达式1,再求解表达式,再求解表达式2,整个表达式的值是,整个表达式的值是表达式表达式2的值的值。例:例:a=3*5,a*4 a的值为的值为15,右边表达式的值为,右边表达式的值为60 注意:注意:在在c语言中,逗号优先级最低(低于赋值运算)语言中,逗号优先级最低(低于赋值运算)注意:注意:1、应用逗号表达式的目的一般是想得到各个表达式的值,常用于循、应用逗号表达式的目的一般是想得到各个表达式的值,常
45、用于循环的环的FOR语句中,而并非一定需要和使用整个逗号表达式的值。如例语句中,而并非一定需要和使用整个逗号表达式的值。如例1、2。2、并非所有的地方出现的逗号都作为逗号表达式看待,在函数中只是起、并非所有的地方出现的逗号都作为逗号表达式看待,在函数中只是起参数分隔的作用。参数分隔的作用。例如:例如:printf(%d,%d,a,b);区别:区别:printf(%d,%d,%d,(a,b),a,b);此句中此句中(a,b)则是逗号表达式,其值为则是逗号表达式,其值为b的值。的值。例 a=3*5,a*4 a=3*5,a*4,a+5例 x=(a=3,6*3)x=a=3,6*a例 a=1;b=2;c
46、=3;printf(“%d,%d,%d”,a,b,c);printf(“%d,%d,%d”,(a,b,c),b,c);/赋值表达式,表达式值18,x=18/a=15,表达式值60/a=15,表达式值20/逗号表达式,表达式值18,x=3/1,2,3/3,2,3/赋值表达式,表达式值18,x=18例:/*ch2_6.c*/#include main()int x,y=7;float z=4;x=(y=y+6,y/z);printf(x=%dn,x);运行结果:x=3六、六、各类型数据之间的转换各类型数据之间的转换各类型数据之间的转换各类型数据之间的转换 int int int intdouble
47、doubledoubledoubleunsignedunsignedunsignedunsignedlonglonglonglongfloatfloatfloatfloatcharcharcharchar,shortshortshortshort高高高高低低低低main()main()main()main()int a,b,c;int a,b,c;int a,b,c;int a,b,c;float x,y,z;float x,y,z;float x,y,z;float x,y,z;a=b=1;b+=2;a=b=1;b+=2;a=b=1;b+=2;a=b=1;b+=2;x=a+;y=-b;z=-
48、(-b);x=a+;y=-b;z=-(-b);x=a+;y=-b;z=-(-b);x=a+;y=-b;z=-(-b);c=(int)z;c=(int)z;c=(int)z;c=(int)z;printf(x=%f,y=%f,z=%fn,x,y,z);printf(x=%f,y=%f,z=%fn,x,y,z);printf(x=%f,y=%f,z=%fn,x,y,z);printf(x=%f,y=%f,z=%fn,x,y,z);printf(a=%d,b=%d,c=%dn,a,b,c);printf(a=%d,b=%d,c=%dn,a,b,c);printf(a=%d,b=%d,c=%dn,a,
49、b,c);printf(a=%d,b=%d,c=%dn,a,b,c);【例例例例2.52.52.52.5】写出程序运行的结果写出程序运行的结果写出程序运行的结果写出程序运行的结果main()main()main()main()int a,b,c;int a,b,c;int a,b,c;int a,b,c;float x,y,z;float x,y,z;float x,y,z;float x,y,z;a=b=1;b+=2;a=b=1;b+=2;a=b=1;b+=2;a=b=1;b+=2;x=a+;y=-b;z=-(-b);x=a+;y=-b;z=-(-b);x=a+;y=-b;z=-(-b);x
50、=a+;y=-b;z=-(-b);c=(int)z;c=(int)z;c=(int)z;c=(int)z;printf(x=%f,y=%f,z=%fn,x,y,z);printf(x=%f,y=%f,z=%fn,x,y,z);printf(x=%f,y=%f,z=%fn,x,y,z);printf(x=%f,y=%f,z=%fn,x,y,z);printf(a=%d,b=%d,c=%dn,a,b,c);printf(a=%d,b=%d,c=%dn,a,b,c);printf(a=%d,b=%d,c=%dn,a,b,c);printf(a=%d,b=%d,c=%dn,a,b,c);【例例例例2.