1、.1.2第一章第一章 C语言概述语言概述第二章第二章 算法算法第三章第三章 数据类型、运算符与表达式数据类型、运算符与表达式第四章第四章 最简单的最简单的C程序设计程序设计第五章第五章 选择结构程序设计选择结构程序设计第六章第六章 循环控制循环控制第七章第七章 数组数组第八章第八章 函数函数第九章第九章 预处理命令预处理命令第十章第十章 指针指针第十一章第十一章 结构体结构体第十三章第十三章 文件文件.3前前 言言.4前前 言言.5前前 言言.6&本章内容本章内容1.1 C语言发展史语言发展史1.2 C语言特点语言特点1.3 简单简单C程序分析程序分析第一章第一章 C语言概述语言概述.7第一章
2、第一章 C语言概述语言概述第一章第一章 C语言概述语言概述 1.1 C语言发展史语言发展史1960 ALGOL60 (Algorithmic Language)1987 87 ANSI C 1990 ISO C1972 C (取取BCPL第二个字母第二个字母)1970 B (取取BCPL第一个字母第一个字母)1978 标准标准C 1983 ANSI C1967 BCPL (Basic CombinedProgramming Language).8第一章第一章 C语言概述语言概述 1.2 C语言特点语言特点1、简练、自由、结构化、简练、自由、结构化 (32个关键字、个关键字、9种控制语句)种控制
3、语句)2、运算符丰富(附录、运算符丰富(附录)34种种3、数据结构丰富、数据结构丰富4、可直接对硬件进行操作、可直接对硬件进行操作5、目标程序质量高、目标程序质量高6、可移植性好、可移植性好.9第一章第一章 C语言概述语言概述 1.3 简单简单C程序分析程序分析例例1.1 打印(显示)一串字符打印(显示)一串字符。运行结果运行结果: This is an example./* example1.1 */ main( ) printf(“This is an example. n”); .10第一章第一章 C语言概述语言概述例例1.2 已知角度值已知角度值45 , 求正弦值的求正弦值的2倍。倍。
4、 /*example 1.2*/ #include “math.h” main( ) float x, y; x=45; y=2*sin(x*3.14/180); printf(“Y=%f n”, y); 运行结果运行结果: Y=1.413650.11第一章第一章 C语言概述语言概述例例1.3 已知三角形三边已知三角形三边 a, b, c, 求面积。求面积。 /*example 1.3*/ #include “math.h” main( ) float a, b, c, p, s; scanf(“%f, %f, %f ”, &a, &b, &c); p=(a+b+c)/2; s=sqrt(p*
5、(p-a)*(p-b)*(p-c); printf(“P=%f n S=%f ”, p, s); 输入:输入:4,5,6 输出:输出:P=7.500000S=9.921567.12第一章第一章 C语言概述语言概述max( int x , int y ) main( ) /*max number*/ int z ; int a , b , c ; if(xy) z=x ; scanf(“%d,%d”,&a,&b); else z=y ; c=max( a , b ) ; return(z) ; printf(“max=%dn ”, c) ; 例例1.4 已知整数已知整数 a, b, 求求其中的最
6、大数。其中的最大数。.13第一章第一章 C语言概述语言概述C程序结构程序结构1、C程序由函数构成程序由函数构成C程序程序=一个主函数(一个主函数(main函数)函数)一个主函数一个主函数+若干其他函数若干其他函数(子或库子或库)说明部分说明部分2、函数、函数 函数体函数体 数据定义数据定义执行部分执行部分(语句)(语句)Turbo C有有300多个多个3、语句书写自由,后带分号、语句书写自由,后带分号“;”4、可用、可用 /*/ 对对C程序作注释程序作注释.14&本章内容本章内容2.1 算法的概念算法的概念2.4 算法的表示算法的表示2.5 结构化程序设计结构化程序设计第二章第二章 算法算法.
7、15第二章第二章 算法算法第二章第二章 算法算法程序程序 = 数据结构数据结构 + 算法算法程序程序=数据结构数据结构+算法算法+程序设计方法程序设计方法+语言工具和环境语言工具和环境数据结构数据结构:对数据的描述对数据的描述算法算法:对操作的描述对操作的描述#include “math.h” main( ) float x, y; x=45; y=2*sin(x*3.14/180); printf(“Y=%f n”, y); .16例如:例如:1+2+3+100=5050 或或100+1+99+2+98+49+51+50=100+49*100+50=5050第二章第二章 算法算法 2.1 算
8、法的概念算法的概念算法算法:为解决一个问题而采取的方法和步骤。为解决一个问题而采取的方法和步骤。.17第二章第二章 算法算法 2.4 算法的表示算法的表示(用流程图表示算法用流程图表示算法)起止框起止框处理框处理框判断框判断框输入输入/出框出框流程线流程线连接点连接点注释框注释框.18第二章第二章 算法算法例例2.1 计算计算265的平方根的平方根顺序结构顺序结构开始开始X=265Y=X输出输出Y结束结束NS图图X=265Y=XY开始开始结束结束.19第二章第二章 算法算法例例2.2 打印打印X的绝对值的绝对值分支结构分支结构NS图图X=0y n 打印打印x 打印打印 -xX=0? x -x结
9、束结束开始开始.20第二章第二章 算法算法例例2.3 计算计算1到到100的和的和循环结构循环结构i=100nNS图图 i=1,s=0s=s+ii=i+1打印打印sy i=1,s=0s=s+ii=i+1打印打印s当当i = = !=逻辑运算符逻辑运算符 ! & |赋值运算符赋值运算符 =条件运算符条件运算符 ? :逗号运算符逗号运算符 , 指针运算符指针运算符 * & 强制类型转换运算符强制类型转换运算符 (类型关键字类型关键字).47第三章第三章 数据类型、运算符与表达式数据类型、运算符与表达式二、算术表达式二、算术表达式1、定义:用、定义:用算术运算符算术运算符和和括号括号将将运算对象运算
10、对象连连接起来且接起来且符合符合C语法语法规则规则的式子的式子2、运算顺序、运算顺序 a*b/c-1.5+a 优优 先先 级级 运运 算算 符符 结结 合合 方方 向向 1 ( ) 里里 层层 优优 先先 2 + + - - 自自 右右 至至 左左 3 * / % 自自 左左 至至 右右 4 + - 自自 左左 至至 右右 .483、运算类型(、运算类型( 3.7混合运算混合运算 )(1) 同类型运算结果类型不变同类型运算结果类型不变 不同类型运算先按类型级不同类型运算先按类型级 别低向高转换成同一类别低向高转换成同一类型,型, 再计算再计算double floatlongunsignedin
11、t char, short 高高低低 10+ a+ i * f - d/ldoubledouble doubleint4、优先级和结合性、优先级和结合性 double第三章第三章 数据类型、运算符与表达式数据类型、运算符与表达式.49第三章第三章 数据类型、运算符与表达式数据类型、运算符与表达式(类型关键字类型关键字)(表达式表达式)例:例: (int) a (float)(5%3) (double)(x+y)三、强制类型转换运算三、强制类型转换运算注意注意: (int) x+y 只转换只转换 x的类型后与的类型后与y相加相加 (int) x 不等同于不等同于int (x).50第三章第三章
12、数据类型、运算符与表达式数据类型、运算符与表达式举例举例3.10main()int i ; float x ; x=3.6 ; i=(int)x ; printf(“x=%f , i=%dn” , x , i ) ; 运行结果:运行结果:x=3.600000 , i=3.51第三章第三章 数据类型、运算符与表达式数据类型、运算符与表达式四、自增、自减运算四、自增、自减运算1、运算规则、运算规则+i -i 使用前使使用前使i值值加加(减减) 1i+ i- 使用后使使用后使i值值加加(减减) 12、注意、注意(1) 只能用于变量只能用于变量(2) 右结合方向右结合方向(3) 使用时谨防出错使用时谨
13、防出错j=+i;j=i+;相当于相当于i=i+1;j=i;j=i;i=i+1;.52第三章第三章 数据类型、运算符与表达式数据类型、运算符与表达式3、例、例运运算算前前 表表达达式式 运运算算后后 i=3 j=(i+)+(i+)+(i+) i=6, j=9 i=3 j=(+i)+(+i)+(+i) i=6, j=18 i=3, j=4 k=i+j i=4, k=7 i=3 j= -i+ i=4, j=-3 i=3 printf(“%d,%d”,i,i+) 结结果果:4,3 .53第三章第三章 数据类型、运算符与表达式数据类型、运算符与表达式 3.9 赋值运算符和赋值表达式赋值运算符和赋值表达式
14、一、赋值运算符及其操作一、赋值运算符及其操作= 将一个表达式的值赋给一个变量将一个表达式的值赋给一个变量二、赋值表达式二、赋值表达式 说明:说明:(1) 发生类型转换(自学发生类型转换(自学60-61页)页) (2) 右结合右结合例:例:x= -b/(2*a) a=b=c=5 a= (b=4)+(c=6) 那么那么a=5=b=c?.54第三章第三章 数据类型、运算符与表达式数据类型、运算符与表达式三、复合赋值运算三、复合赋值运算复合赋值运算符复合赋值运算符=运算符运算符+赋值号赋值号例:例:a+= 3 a+= 3 a=a+3a*= x+y a*= x+y a=a*(x+y)a%= b a%=
15、b a=a%b 例例: 设设 a=3 求下列表达式的值求下列表达式的值a+=a-=a*aa+=(a-=a*a)a+=(a=a-a*a)a=a+(a=a-a*a) -12.55第三章第三章 数据类型、运算符与表达式数据类型、运算符与表达式 3.10 逗号运算符和逗号表达式逗号运算符和逗号表达式1、逗号表达式、逗号表达式表达式表达式1,表达式,表达式2,表达式表达式n2、运算规则、运算规则从左到右依次计算各表达式的值,以从左到右依次计算各表达式的值,以表达式表达式n的值作为最终值(其优先级最低)的值作为最终值(其优先级最低)例:比较例:比较 (设设a=3)a= 3*5, a*4a= (3*5, a
16、*4)计算后:计算后:值值60,a=15 a=12 .56第三章第三章 数据类型、运算符与表达式数据类型、运算符与表达式举例举例3.11main()int i ; float f=7.2 ; printf(“i=%d n” ,(f+=4 , i=f) ; printf(“f=%f n” , f ) ; 运行结果:运行结果:i=11f=11.200000 .57&本章内容本章内容4.1 C语句概述语句概述4.2 赋值语句赋值语句4.3 I/O的概念及在的概念及在C语言中的实现语言中的实现4.4 字符数据的输入字符数据的输入/输出输出4.5 格式输入与输出格式输入与输出第四章第四章 最简单的最简单
17、的C C程序设计程序设计.58第四章第四章 最简单的最简单的C程序设计程序设计 4.1 C语句概述语句概述第四章第四章 最简单的最简单的C C程序设计程序设计C语句语句控制语句(条件、分支、循环)控制语句(条件、分支、循环)函数调用语句(函数加分号)函数调用语句(函数加分号)表达式语句(表达式加分号)表达式语句(表达式加分号)空语句(一个单独的分号)空语句(一个单独的分号)复合语句(用复合语句(用 将若干语句括起)将若干语句括起).59第四章第四章 最简单的最简单的C程序设计程序设计 4.2 赋值语句赋值语句语句格式:语句格式:赋值表达式;赋值表达式;例如:例如:if ( ( a=b ) 0
18、) t=a ; if ( ( a=b ) ) x=a; if (a=b ) y=a;在在 if 后面的小括号内必须是表达式后面的小括号内必须是表达式.60 C C 程序最基本的成分是语句程序最基本的成分是语句 目前我们已掌握的语句:目前我们已掌握的语句: 变量说明语句变量说明语句: int a,b,c;: int a,b,c; 表达式语句:表达式语句: x+y;x+y; 特别地:特别地: a=5; a=5; 赋值语句赋值语句.61 可以编写简单程序如:可以编写简单程序如: main()main() int x,y; int x,y; x=5; x=5; y=2 y=2* *x x* *x+3x
19、+3* *x-1;x-1; 该程序语法上完整,但还缺少输出。该程序语法上完整,但还缺少输出。 .62 数据的输出数据的输出 用输出函数实现用输出函数实现, ,其中的两种输出函数:其中的两种输出函数: 1.putchar 1.putchar 函数函数 (字符输出函数)(字符输出函数) 用于输出一个字符。用于输出一个字符。 如如: : putchar (a); putchar (100); char c=b; putchar (c);.63 例例:输出单词:输出单词BoyBoy的完整程序:的完整程序: #include “stdio.h” 注意该语句的作用注意该语句的作用 main() char
20、a, b, c; a=B; b=o; c=y; putchar (a); putchar (b); putchar (c); .64 2. printf2. printf函数(格式输出函数)函数(格式输出函数) 任意类型、任意格式、任意个数。任意类型、任意格式、任意个数。 例如:例如: int a=100,b=56;int a=100,b=56; printf(“a=%d,b=%d”,a,b);printf(“a=%d,b=%d”,a,b); 普通字符普通字符 格式说明格式说明 格式控制格式控制 输出表列输出表列 输出结果:输出结果:a=100,b=56a=100,b=56“%” “%” 后的
21、字符称格式字符,不同格式字符对应不同的数据类型。后的字符称格式字符,不同格式字符对应不同的数据类型。.65 d d格式符:按整数格式输出格式符:按整数格式输出 几种用法:几种用法: %d %d 不指定宽度,按实际宽度输出不指定宽度,按实际宽度输出 %md %md 按指定宽度输出,按指定宽度输出,m m为宽度为宽度 %ld %ld 用于输出长整型数用于输出长整型数.66 例:例: int a=125,b=453;int a=125,b=453; long c=65535; long c=65535; printf(“a=%d,b=%5d,c=%ld”,a,b,c); printf(“a=%d,b
22、=%5d,c=%ld”,a,b,c); 输出结果:输出结果: a=125,b= 453,c=65535a=125,b= 453,c=65535.67 c c格式符:用于输出字符格式符:用于输出字符 char c=A;char c=A; printf(“c=%c,%c”,c,B); printf(“c=%c,%c”,c,B); 输出结果输出结果:c=A,Bc=A,B 输出对象既可以是字符变量、字符常量,还可以输出对象既可以是字符变量、字符常量,还可以是整型表达式。是整型表达式。.68 如:如: int a=100;int a=100; char b=A; char b=A; printf(“n%
23、d,%c”,a,a); printf(“n%d,%c”,a,a); printf(“n%c,%d”,b,b); printf(“n%c,%d”,b,b); 输出结果:输出结果: 100,d100,d A,65 A,65.69完整前面的程序:完整前面的程序:main()main() int x,y; int x,y; x=5; x=5; y=2 y=2* *x x* *x+3x+3* *x-1;x-1; printf(“n y=%d”,y); printf(“n y=%d”,y); .70例例4.1 已知三角形三边已知三角形三边 a, b, c, 求面积求面积 #include “math.h”
24、main( ) float a, b, c, p, s; scanf(“%f, %f, %f ”, &a, &b, &c); p=(a+b+c)/2; s=sqrt(p*(p-a)*(p-b)*(p-c); printf(“p=%fns=%f n”, p, s); 第四章第四章 最简单的最简单的C程序设计程序设计.71第四章第四章 最简单的最简单的C程序设计程序设计例例4.2 已知整型变量已知整型变量x,y的值分别是的值分别是3和和5, 试将它们的值互换。试将它们的值互换。int x=3, y=5, z;z=x; x=y; y=z;zy35x353.72第四章第四章 最简单的最简单的C程序设计
25、程序设计 4.3字符数据的输入字符数据的输入/输出输出2、语句功能:从指定设备、语句功能:从指定设备读一个字符读一个字符输出输出c的值的值(字符字符)1、语句格式、语句格式输入:输入:getchar( );输出:输出:putchar(c);3、说明、说明使用标准使用标准I/O函数时,应在程序前加预函数时,应在程序前加预编译命令:编译命令: #include “stdio.h”字符变字符变量量.73第四章第四章 最简单的最简单的C程序设计程序设计例例4.3 输入一个字符并把它输出出来输入一个字符并把它输出出来 #include “stdio.h” main( ) char c; c=getcha
26、r( ); putchar(c); .74第四章第四章 最简单的最简单的C程序设计程序设计1、语句格式、语句格式输入输入 scanf(格式控制,地址表列格式控制,地址表列);输出输出 printf(格式控制,输出表列格式控制,输出表列);2、语句功能、语句功能按按格式控制格式控制描述的格式给描述的格式给地址表列地址表列中的量中的量 输入值或输出输入值或输出输出表列输出表列中各量的值中各量的值3、格式控制、格式控制“”“”括起来的一串括起来的一串格式字符格式字符和其它字符和其它字符 4.4 格式输入与输出格式输入与输出.75第四章第四章 最简单的最简单的C程序设计程序设计4、格式字符、格式字符格
27、式字符格式字符 描述对象描述对象 说明说明 %d 整型数据整型数据 有有 %md ,%ld %f 实型数据实型数据 小数部分输出小数部分输出6位位 %e 带带e实数实数 指数指数4位,位,2位整数位整数 %c 字符数据字符数据 %s 字符串数据字符串数据 指定输出宽度在格式符中插入:指定输出宽度在格式符中插入:m.n例:例: %10d %10.4f %12.5e .76&本章内容本章内容5.1 关系运算符和关系表达式关系运算符和关系表达式5.2 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式5.3 if 语句语句5.4 switch 语句语句4.5 格式输入与输出格式输入与输出第五章第五章 选择
28、结构程序设计选择结构程序设计.77第五章第五章 逻辑运算和判断选取控制逻辑运算和判断选取控制第五章第五章 选择结构程序设计选择结构程序设计 5.1 关系运算符和关系表达式关系运算符和关系表达式一、运算符与优先级一、运算符与优先级 (左结合性左结合性) = = != = = !=同级同级同级同级高高低低算术运算算术运算 关系运算关系运算 赋值运算赋值运算高高低低.78第五章第五章 逻辑运算和判断选取控制逻辑运算和判断选取控制二、关系表达式二、关系表达式1、关系表达式的形式、关系表达式的形式 2、关系表达式的值、关系表达式的值1 真真0 假假下列是合法的关系表达式:下列是合法的关系表达式:a+b
29、c+d (a=3) b)=(cd)注意:注意:f=abc 表达式的值。如:表达式的值。如: 0 x 3 & 2 | 2 b)&(n=cd) 当当a=1,b=2,c=3,d=4,m=1,n=1时,执行结时,执行结 果果m=0, (n=cd)不被执行不被执行, n 仍然为仍然为13、运算中一旦能确定其值,终止计算、运算中一旦能确定其值,终止计算如计算:如计算: a&b&c a|b|c2、逻辑运算的对象并非仅限于逻辑量、逻辑运算的对象并非仅限于逻辑量C判断处理的原则判断处理的原则非非0 真真 0 假假例例 if (-5) x=10; else x=0;思考题思考题: 上式去掉括号后上式去掉括号后m=
30、ab & n=cd 结果如何结果如何?.82第五章第五章 逻辑运算和判断选取控制逻辑运算和判断选取控制 5.3 if 语句(条件语句)语句(条件语句)一、语句格式一、语句格式任意表达式任意表达式可以是复可以是复合语句合语句格式格式1:if (e) 语句语句格式格式2:if (e) 语句语句1 else 语句语句2格式格式3:if (e1 ) 语句语句1 else if (e2 ) 语句语句2 else if (e3 ) 语句语句3 . else if (em ) 语句语句m else 语句语句n .83第五章第五章 逻辑运算和判断选取控制逻辑运算和判断选取控制二、语句功能二、语句功能格式格式1
31、:if (e) 语句语句计算计算 e 的的值并判断值并判断。 e 值值非非0,则执行,则执行语句语句;否;否则,执行则,执行下条语句下条语句。格式格式2:if (e) 语句语句1 else 语句语句2计算计算 e 的的值并判断。值并判断。 e 值值非非0,则执行,则执行语句语句1;否;否则,执行则,执行语句语句2。下条语句下条语句语句语句1语句语句2e非非00下条语句下条语句e语句语句非非00goto.84第五章第五章 逻辑运算和判断选取控制逻辑运算和判断选取控制格式格式3:if (e ) 语句语句1 else if (e ) 语句语句2 else if (e ) 语句语句3 . else i
32、f (e ) 语句语句m else 语句语句n 123m计算计算 e1 的的值并判断,值并判断,其其值值非非0执行执行语句语句1;否则,判断;否则,判断 e2 的的值,值,其其值值非非0执行执行语句语句2; 否则,判断否则,判断 e3 的的值,值, 其其值值非非0执行执行语句语句3;否则,;否则,. 判判断断em 的的值,值,其其值值非非0执行执行语句语句m ;否则,否则,执行执行语句语句n00e1e3eme2语句语句1语句语句3语句语句2语句语句m语句语句n 下条语句下条语句非非0非非0非非0非非000.85第五章第五章 逻辑运算和判断选取控制逻辑运算和判断选取控制例例5.1 从键盘输入两个
33、整型数,输出最大数。从键盘输入两个整型数,输出最大数。main() int a ,b ; scanf(“%d,%d”,&a,&b); if(a=b)printf(“max=%dn”,a); if(ba)printf(“max=%dn”,b);开始开始enda , babaa) a=b; printf(“max=%dn”,a);开 始开 始enda , bbaaa=b非非00.87第五章第五章 逻辑运算和判断选取控制逻辑运算和判断选取控制例例5.2 输入两个整型数,按大小输出。输入两个整型数,按大小输出。main() int a ,b ,temp ; scanf(“%d,%d”,&a,&b);
34、if (ba) temp=a;a=b;b=temp; printf(“%d,%dn”,a,b);开始开始enda , bbaa,ba b非非00.88第五章第五章 逻辑运算和判断选取控制逻辑运算和判断选取控制例例5.3 输入互不相等的三个数,按从小到大输入互不相等的三个数,按从小到大 顺序输出它们。顺序输出它们。分析:设已知的三个数为分析:设已知的三个数为a, b, c。(1)可直接通过逻辑表达式和条件语句可直接通过逻辑表达式和条件语句 设计程序。设计程序。(2)可通过条件语句和互换变量值设计)可通过条件语句和互换变量值设计 程序,即经过处理后使:程序,即经过处理后使:abc.89第五章第五章
35、 逻辑运算和判断选取控制逻辑运算和判断选取控制方法(方法(1):):main( )float a, b, c; scanf(“%f %f %f ”,&a,&b,&c); if(ab&bc) printf(“%f,%f,%f”, a, b, c); if(ac&cb) printf(“%f,%f,%f”, a, c, b); if(ba&ac) printf(“%f,%f,%f”, b, a, c); if(bc&ca) printf(“%f,%f,%f”, b, c, a); if(cb&ba) printf(“%f,%f,%f”, c, b, a); if(ca&ab)t=a;a=b;b=t
36、; if(ac)t=a;a=c;c=t; if(bc)t=b;b=c;c=t; printf(“%5.2f, %5.2f, %5.2f ”, a, b, c);.91例例5.4 求一元二次方程求一元二次方程 ax2+bx+c=0 的解的解第五章第五章 逻辑运算和判断选取控制逻辑运算和判断选取控制求求x1、x2x1、x2endd=0无实根无实根yn开开 始始d=b2-4aca, b, c开 始开 始求根:求根:x1、x2x1、x2enda, b, cd=b2-4ac.92第五章第五章 逻辑运算和判断选取控制逻辑运算和判断选取控制#include main( ) float a, b, c, d,
37、 x1, x2; scanf(“%f %f %f ”,&a,&b,&c); d=b*b-4*a*c; if (d=0) x1=(-b+sqrt(d)/(2*a); x2=(-b-sqrt(d)/(2*a); printf(“x1=%f,x2=%fn ”, x1,x2); else printf(“It is no real roots.”); .93第五章第五章 逻辑运算和判断选取控制逻辑运算和判断选取控制例例5.5某运输公司吨公里基本运费为某运输公司吨公里基本运费为p,根根 据距离据距离s的远近计费标准如下:的远近计费标准如下: s250km没有折扣没有折扣 250 s500 2% 折扣折扣
38、500 s1000 5% 折扣折扣 1000 s2000 8% 折扣折扣 2000 s=3000) d=0.15; else if(s=2000) d=0.10; else if(s=1000) d=0.08; else if(s=500) d=0.05; else if(s=250) d=0.02; else d=0.0; f=p*w*s*(1-d); printf(“f=%15.2f ”, f); .95第五章第五章 逻辑运算和判断选取控制逻辑运算和判断选取控制三、三、if 语句的嵌套语句的嵌套嵌套嵌套 if 的一般形式的一般形式if ( ) if ( ) 语句语句1 else 语句语句2
39、else if ( ) 语句语句3 else 语句语句4内嵌内嵌 if内嵌内嵌 if注意:注意:else 总是与它上面最近的总是与它上面最近的 if 配对配对.96第五章第五章 逻辑运算和判断选取控制逻辑运算和判断选取控制if ( ) if ( ) 语句语句1else if ( ) 语句语句2 else 语句语句3内嵌内嵌 ifif ( ) if ( ) 语句语句1 else if ( ) 语句语句2 else 语句语句3内嵌内嵌 ifif ( ) if ( ) 语句语句1else 语句语句2if ( ) if ( ) 语句语句1 else 语句语句2.97第五章第五章 逻辑运算和判断选取控制
40、逻辑运算和判断选取控制分析:分析:a=0 不是二次方程。不是二次方程。 b2-4ac=0 有两个相等实根。有两个相等实根。 b2-4ac0 有两不等实根。有两不等实根。 b2-4ac0求求xyynnd=b -4ac2yna=0开开 始始a , b , cend.99第五章第五章 逻辑运算和判断选取控制逻辑运算和判断选取控制if ( fabs(a)1e-6) printf(“No!”);else d=b*b-4*a*c; if ( fabs(d)0 ) x1=(-b+sqrt(d)/(2*a); x2=(-b -sqrt(d)/(2*a); printf(“Two real roots:%f,%
41、f ”,x1,x2); else xr= -b/(2*a); xi=sqrt(-d)/(2*a); printf(“Complex roots:%f,%f ”, xr,xi); .100第五章第五章 逻辑运算和判断选取控制逻辑运算和判断选取控制四、条件运算符与条件表达式四、条件运算符与条件表达式1、条件表达式的一般形式、条件表达式的一般形式 ? :2、运算规则、运算规则先计算先计算表达式表达式1,若为,若为非非0,则以则以表达式表达式2的值作为条件表达式的值;的值作为条件表达式的值;否则,以否则,以表达式表达式3的值为条件表达式的值。的值为条件表达式的值。3、优先级、优先级算术算术 关系关系
42、逻辑运算逻辑运算(!除外除外) 条件运算条件运算 赋值运算赋值运算高高低低右结合右结合.101第五章第五章 逻辑运算和判断选取控制逻辑运算和判断选取控制(1)输出输出x和和y当中的最大值当中的最大值 z=xy ? x : y ; printf(“max=%d”,z);或或 printf(“max=%d”,xy?x:y); 或或 xy?printf (“%d”,x) : printf (“%d”,y); 举例举例:(2)ab?a:b+1等价于等价于ab?a:(b+1)而不是而不是(ab?a:b)+1(3)ab?a:cd?c:d等价于等价于ab?a:(cd?c:d)(4)xy?1:5.6 表达式的
43、值的类型取高的表达式的值的类型取高的(5)ch=(ch=A&ch=Z)?(ch+32):ch;.102第五章第五章 逻辑运算和判断选取控制逻辑运算和判断选取控制 5.4 switch 语句语句一、语句格式一、语句格式 switch(表达式表达式) case 常量表达式常量表达式1:语句:语句1 case 常量表达式常量表达式2:语句:语句2 case 常量表达式常量表达式n:语句语句n default :语句语句n+1 .103第五章第五章 逻辑运算和判断选取控制逻辑运算和判断选取控制二、执行过程二、执行过程当当switch后的表达式的值与某一个后的表达式的值与某一个case后后的常量表达式的
44、值相等时,执行其后的语的常量表达式的值相等时,执行其后的语句;若无匹配,则执行句;若无匹配,则执行default后的语句。后的语句。三、三、break 语句语句使流程跳出使流程跳出switch结构,结构,终止终止switch语句的执行。语句的执行。.104第五章第五章 逻辑运算和判断选取控制逻辑运算和判断选取控制例例5.7 用用switch语句设计语句设计“例例5.5运费程序运费程序” s 1 d=0 1 s 2 d=0.2 2 s 4 d=0.05 4 s 8 d=0.08 8 s 12 d=0.112 =3000) c=12; else c=s/250; switch(c) case 0
45、: d=0; break; case 1 : d=0.02; break; case 2 : case 3 : d=0.05; break; case 4 : case 5 : case 6 : case 7 : d=0.08; break; case 8 : case 9 : case 10: case 11: d=0.1; break; case 12: d=.15; break; f=p*w*s*(1-d); printf(“f=%15.2f ”, f); .106第五章作业第五章作业第第111页页 5.3 、 5.5、 5.7上机调试作业上机调试作业第第111-112页页 5.6、 5
46、.7第五章第五章 逻辑运算和判断选取控制逻辑运算和判断选取控制.107第五章第五章 逻辑运算和判断选取控制逻辑运算和判断选取控制习题习题5.5 已知已知x,求分段函数值求分段函数值ymain() float x, y; scanf(“%f”, &x); if(x=1&x=10) y=3*x-11; printf(“x=%f, y=%fn”, x, y); 程序程序1:.108第五章第五章 逻辑运算和判断选取控制逻辑运算和判断选取控制main() float x, y; scanf(“%f”, &x); if(x1) y=x; else if(x10) y=2*x-1; else y=3*x-1
47、1; printf(“x=%f, y=%fn”, x, y); 程序程序2:.109第五章第五章 逻辑运算和判断选取控制逻辑运算和判断选取控制习题习题5.6分析:设百分制成绩为分析:设百分制成绩为x, 成绩等级为成绩等级为y Ax 90B80 x90C70 x80D60 x70Ex60y=.110第五章第五章 逻辑运算和判断选取控制逻辑运算和判断选取控制习题习题5.1010a|b|c|d0其他其他h=分析:设坐标为(分析:设坐标为(x, y), 高度为高度为h设:设: a=(x-2) + (y-2) 1b=(x+2) + (y-2) 1c=(x+2) + (y+2) 1d=(x-2) + (y
48、+2) 122222222.111&本章内容本章内容6.1 概述概述6.2 goto语句语句6.3 while语句语句6.4 do-while语句语句6.5 for语句语句6.6 循环的嵌套循环的嵌套6.7 几种循环的比较几种循环的比较6.8 break语句和语句和continue语句语句第六章第六章 循环控制循环控制.112第六章第六章 循环控制循环控制第六章第六章 循环控制循环控制C 循环控制循环控制if - goto循环循环(6.2) while循环循环(6.3)do - while循环循环 (6.4)for循环循环(6.5) 6.1 概述概述.113第六章第六章 循环控制循环控制 6.
49、2 goto语句及其构成的循环语句及其构成的循环一、一、goto语句语句2、语句功能、语句功能使控制转到使控制转到语句标号语句标号所标识的语句所标识的语句 goto L1;L2: 语句语句 . L1: 语句语句 goto L2;例:例:1、语句格式、语句格式 goto 语句标号语句标号写在语句前的标识写在语句前的标识符符 (后加:后加:).114第六章第六章 循环控制循环控制二、用法二、用法1、与、与if语句联合使用构成循环语句联合使用构成循环2、用来实现从多重循环体内转出、用来实现从多重循环体内转出L1: if(e) 循环体循环体 goto L1; (当型循环)当型循环)L2: 循环体循环体
50、 if(e) goto L2; (直到型循环)直到型循环).115第六章第六章 循环控制循环控制例例6.1 求求 s=1+2+3+.+n 的值。的值。 main( ) int i=1, sum=0, n; scanf(“%d”,&n);L1:sum=sum+i; i+; if(i=n) goto L1; printf(“s=%d”,sum); main( ) int i=1, sum=0, n; scanf(“%d”,&n); L1:if(i=n) sum=sum+i; i+; goto L1; printf(“s=%d”,sum); .116第六章第六章 循环控制循环控制 6.3 while