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