1、12教学内容第一章 C语言概述第二章 算法第三章 数据类型、运算符与表达式第四章 最简单的C程序设计第五章 选择结构程序设计第六章 循环控制第七章 数组第八章 函数第九章 预处理命令第十章 指针第十一章 结构体第十三章 文件3前 言前 言一、计算机语言一、计算机语言1、机器语言2、汇编语言3、高级语言4、高级语言向机器语言的过渡高级语言高级语言源程序源程序机器语言机器语言目标程序目标程序计算结果计算结果编译编译解释解释执行执行机器指令的集合符号化的机器语言通用自然的算法语言4前 言二、程序与程序设计二、程序与程序设计完成某一功能的计算机指令的有序集合1、程序2、程序设计设计、编制、调试程序的过
2、程53、程序设计的基本步骤(1)分析问题(2)确定解题思路和算法(3)编制流程图(4)编写源程序(5)静态检查(6)上机调试(7)正式运行前 言6&本章内容1.1 C语言发展史1.2 C语言特点1.3 简单C程序分析第一章 C语言概述返回7第一章 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 L
3、anguage)跳转8第一章 C语言概述1.2 C语言特点1、简练、自由、结构化 (32个关键字、9种控制语句)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倍。/*example 1.2*/#include“math.h”main()float x,y;x=4
4、5;y=2*sin(x*3.14/180);printf(“Y=%f n”,y);运行结果:Y=1.41365011第一章 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*(p-a)*(p-b)*(p-c);printf(“P=%f n S=%f”,p,s);输入:4,5,6 输出:P=7.500000S=9.92156712第一章 C语言概述max(int x,int y)main()
5、/*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,求其中的最大数。13第一章 C语言概述C程序结构1、C程序由函数构成C程序=一个主函数(main函数)一个主函数+若干其他函数(子或库)说明部分2、函数 函数体 数据定义执行部分(语句)Turbo C有300多个跳转3、语句书写自由,后带分号“;”4、可用/*/对C程序作注释前一页14&本章内容2.1 算法的概念2.4 算法的表示2.5 结构化程序
6、设计第二章 算法返回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 算法的概念算法:为解决一个问题而采取的方法和步骤。17第二章 算法2.4 算法的表示(用流程图表示算法)起止框处理框判断框输入/出框流程线连接点注
7、释框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结束开始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、定义:用算术运算符和括号将运算
8、对象连接起来且符合C语法规则的式子2、运算顺序 a*b/c-1.5+a 483、运算类型(3.7混合运算)(1)同类型运算结果类型不变(2)不同类型运算先按类型级 别低向高转换成同一类型,再计算double floatlongunsignedint char,short 高低 10+a+i*f-d/ldoubledouble doubleint4、优先级和结合性 double第三章 数据类型、运算符与表达式49第三章 数据类型、运算符与表达式(类型关键字)(表达式)例:(int)a (float)(5%3)(double)(x+y)三、强制类型转换运算注意:(int)x+y 只转换 x的类型后
9、与y相加 (int)x 不等同于int(x)50第三章 数据类型、运算符与表达式举例3.10main()int i;float x;x=3.6;i=(int)x;printf(“x=%f,i=%dn”,x,i);运行结果:x=3.600000,i=351第三章 数据类型、运算符与表达式四、自增、自减运算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;52第三章 数据类型、运算符与表达式3、例53第三章 数据类型、运算符与表达式3.9 赋值运
10、算符和赋值表达式一、赋值运算符及其操作=将一个表达式的值赋给一个变量二、赋值表达式 说明:(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%=b a=a%b 例:设 a=3 求下列表达式的值a+=a-=a*aa+=(a-=a*a)a+=(a=a-a*a)a=a+(a=a-a*a)-1255第三章 数据类型、运算符与表达式3.10 逗号运
11、算符和逗号表达式1、逗号表达式表达式1,表达式2,表达式n2、运算规则从左到右依次计算各表达式的值,以表达式n的值作为最终值(其优先级最低)例:比较(设a=3)a=3*5,a*4a=(3*5,a*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 格式输入与输
12、出第四章 最简单的C程序设计返回58第四章 最简单的C程序设计4.1 C语句概述第四章 最简单的C程序设计C语句控制语句(条件、分支、循环)函数调用语句(函数加分号)表达式语句(表达式加分号)空语句(一个单独的分号)复合语句(用 将若干语句括起)59第四章 最简单的C程序设计4.2 赋值语句语句格式:赋值表达式;例如:if(a=b)0)t=a;if(a=b)x=a;if(a=b)y=a;在 if 后面的小括号内必须是表达式60 C 程序最基本的成分是程序最基本的成分是语句句目前我目前我们已掌握的已掌握的语句:句:变量量说明明语句句:int a,b,c;表达式表达式语句:句:x+y;特特别地:地
13、:a=5;赋值语句句61 可以可以编写写简单程序如:程序如:main()int x,y;x=5;y=2*x*x+3*x-1;该程序程序语法上完整,但法上完整,但还缺少缺少输出。出。62 数据的数据的输出出用用输出函数出函数实现,其中的两种其中的两种输出函数:出函数:1.putchar 函数函数(字符(字符输出函数)出函数)用于用于输出一个字符。出一个字符。如如:putchar(a);putchar(100);char c=b;putchar(c);63 例例:输出出单词Boy的完整程序:的完整程序:#include“stdio.h”注意该语句的作用注意该语句的作用 main()char a,b
14、,c;a=B;b=o;c=y;putchar(a);putchar(b);putchar(c);64 2.printf2.printf函数(格式函数(格式输出函数)出函数)任意任意类型、任意格式、任意个数。型、任意格式、任意个数。例如:例如:int a=100,b=56;printf(printf(“a=%d,b=%da=%d,b=%d”,a,b);,a,b);普通字符普通字符格式格式说明明格式控制格式控制 输出表列出表列 输出出结果:果:a=100,b=56a=100,b=56“%”后的字符称格式字符,不同格式字符后的字符称格式字符,不同格式字符对应不同的数据不同的数据类型。型。65 d d
15、格式符:按整数格式格式符:按整数格式输出出 几种用法:几种用法:%d 不指定不指定宽度,按度,按实际宽度度输出出%md 按指定按指定宽度度输出,出,m为宽度度%ld 用于用于输出出长整型数整型数66例:例:int a=125,b=453;int a=125,b=453;long c=65535;long c=65535;printf(printf(“a=%d,b=%5d,c=%lda=%d,b=%5d,c=%ld”,a,b,c);,a,b,c);输出出结果:果:a=125,b=453,c=65535a=125,b=453,c=6553567 c格式符:用于格式符:用于输出字符出字符 char
16、c=char c=A A;printf(printf(“c=%c,%cc=%c,%c”,c,c,B B););输出出结果果:c=A,Bc=A,B 输出出对象象既既可可以以是是字字符符变量量、字字符符常常量量,还可可以以是是整整型型表表达达式。式。68 如:如:int a=100;int a=100;char b=char b=A A;printf(printf(“n%d,%cn%d,%c”,a,a);,a,a);printf(printf(“n%c,%dn%c,%d”,b,b);,b,b);输出出结果:果:100,d100,d A,65 A,6569完整前面的程序:完整前面的程序:完整前面的程
17、序:完整前面的程序:main()int x,y;x=5;y=2*x*x+3*x-1;printf(“n y=%d”,y);70例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);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
18、;zy35x35372第四章 最简单的C程序设计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=getchar();putchar(c);74第四章 最简单的C程序设计1、语句格式输入 scanf(格式控制,地址表列);输出 printf(格式控制,输出表列);2、语句功能按格
19、式控制描述的格式给地址表列中的量 输入值或输出输出表列中各量的值3、格式控制“”括起来的一串格式字符和其它字符4.4 格式输入与输出75第四章 最简单的C程序设计4、格式字符指定输出宽度在格式符中插入:m.n例:%10d%10.4f%12.5e 76&本章内容5.1 关系运算符和关系表达式5.2 逻辑运算符和逻辑表达式5.3 if 语句5.4 switch 语句4.5 格式输入与输出第五章 选择结构程序设计返回77第五章 逻辑运算和判断选取控制第五章 选择结构程序设计5.1 关系运算符和关系表达式一、运算符与优先级(左结合性)=!=同级同级高低算术运算 关系运算 赋值运算高低78第五章 逻辑运
20、算和判断选取控制二、关系表达式1、关系表达式的形式 2、关系表达式的值1 真0 假下列是合法的关系表达式: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;思考题:上式去掉括号后m=ab&n=cd 结果如何?82第五章 逻辑运算和判断选取控制5.3 if 语句
21、(条件语句)一、语句格式任意表达式可以是复合语句格式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:if(e)语句计算 e 的值并判断。e 值非0,则执行语句;否则,执行下条语句。格式2:if(e)语句1 else 语句2计算 e 的值并判断。e 值非0,则执行语句1;否则,执行语句2。下条语句语句1语句2e非00下条语句e语句非00goto84第五章 逻辑运算和判断选取控制格式3:i
22、f(e )语句1 else if(e )语句2 else if(e )语句3 .else if(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 从键盘输入两个整型数,输出最大数。main()int a,b;scanf(“%d,%d”,&a,&b);if(a=b)printf(“max=%d
23、n”,a);if(ba)printf(“max=%dn”,b);开 始enda,babaa)a=b;printf(“max=%dn”,a);开 始enda,bbaaa=b非0087第五章 逻辑运算和判断选取控制例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);开 始enda,bbaa,ba b非0088第五章 逻辑运算和判断选取控制例5.3 输入互不相等的三个数,按从小到大 顺序输出它们。分析:设已知的三个数为a,b,c。(1)可直接通过
24、逻辑表达式和条件语句 设计程序。(2)可通过条件语句和互换变量值设计 程序,即经过处理后使:abc89第五章 逻辑运算和判断选取控制方法(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=
25、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);91例5.4 求一元二次方程 ax2+bx+c=0 的解第五章 逻辑运算和判断选取控制求x1、x2x1、x2endd=0无实根yn开 始d=b2-4aca,b,c开 始求根:x1、x 2x1、x 2enda,b,cd=b2-4ac92第五章 逻辑运算和判断选取控制#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
26、)/(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%折扣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
27、=0.02;else d=0.0;f=p*w*s*(1-d);printf(“f=%15.2f”,f);95第五章 逻辑运算和判断选取控制三、if 语句的嵌套嵌套 if 的一般形式if()if()语句1 else 语句2else 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 语句297第五章
28、 逻辑运算和判断选取控制分析:a=0 不是二次方程。b2-4ac=0 有两个相等实根。b2-4ac0 有两不等实根。b2-4ac0求xyynnd=b-4ac2yna=0开 始a,b,cend99第五章 逻辑运算和判断选取控制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,%f”,x1,x2);else xr=-b/(2*a);xi=sqrt(-d)/(2*a);printf(“Complex
29、roots:%f,%f”,xr,xi);100第五章 逻辑运算和判断选取控制四、条件运算符与条件表达式1、条件表达式的一般形式?:2、运算规则先计算表达式1,若为非0,则以表达式2的值作为条件表达式的值;否则,以表达式3的值为条件表达式的值。3、优先级算术 关系 逻辑运算(!除外)条件运算 赋值运算高低右结合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:(
30、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;102第五章 逻辑运算和判断选取控制5.4 switch 语句一、语句格式 switch(表达式)case 常量表达式1:语句1 case 常量表达式2:语句2 case 常量表达式n:语句n default :语句n+1 103第五章 逻辑运算和判断选取控制二、执行过程当switch后的表达式的值与某一个case后的常量表达式的值相等时,执行其后的语句;若无匹配,则执行default后的语句。三、
31、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: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
32、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.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
33、”,&x);if(x1)y=x;else if(x10)y=2*x-1;else y=3*x-11;printf(“x=%f,y=%fn”,x,y);程序2:109第五章 逻辑运算和判断选取控制习题5.6分析:设百分制成绩为x,成绩等级为yAx90B80 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+2)122222222111&本章内容6.1 概述6.2 goto语句6.3
34、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.2 goto语句及其构成的循环一、goto语句2、语句功能使控制转到语句标号所标识的语句 goto L1;L2:语句 .L1:语句 goto L2;例:1、语句格式 goto 语句标号写在语句前的标识符 (后加:)114第六章 循环控制二、用法1
35、、与if语句联合使用构成循环2、用来实现从多重循环体内转出L1:if(e)循环体 goto L1;(当型循环)L2:循环体 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第六章 循环控制
36、6.3 while语句“当型”循环一、语句格式while(e)循环体二、执行过程(先判断后执行)当表达式 e 值为非0时,执行循环体,然后重复执行while语句;当e 的值为0 时,结束循环,执行后继语句。非00循环体e单语句或复合语句117第六章 循环控制例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=%d”,s);main()int i=1,s=0,n;scanf(“%d”,&n);while(i=n)s+=i+;printf(“s=%d
37、”,s);118第六章 循环控制6.4 do-while语句“直到型”循环一、语句格式do 循环体while(e);二、执行过程(先执行后判断)先执行do后的循环体,然后判断表达式e 的值,若为非0,重复执行循环体,直到while中的表达式e 为0,结束循环。循环体e0非0单语句或复合语句119第六章 循环控制例6.3 求 s=1+2+.+n 的值(用do-while循环n=100)。main()int i=1,s=0,n;scanf(“%d”,&n);do s=s+i;i+;while(i=n);printf(“s=%d”,s);main()int i=1,s=0,n;scanf(“%d”,
38、&n);do s+=i+;while(i=n);printf(“s=%d”,s);120第六章 循环控制6.5 for语句及其构成的循环一、语句格式for(表达式1;表达式2;表达式3)循环体计算表达式1计算表达式3表达式2循环体下一条语句0非0二、执行过程1、计算表达式1。2、判断表达式2。若非0,执行循环体,转3;否则,结束循环,转4。3、计算表达式3。转2。4、执行for语句的下一条语句。121第六章 循环控制三、说明1、for语句最简单、最常用的应用形式for(循环变量赋初值;循环条件;循环变量增值)循环体例6.4 求 s=1+2+.+n 的值(用for循环n=100)。main()i
39、nt i,s=0,n;scanf(“%d”,&n);for(i=1;i=n;i+)s=s+i;printf(“s=%d”,s);122第六章 循环控制2、for语句中的三个表达式均可省略 注意:(1)分号不能省略。(2)应保证循环正确执行。例 main()int i,s,n;scanf(“%d”,&n);for(i=1,s=0;i=n;)s+=i+;printf(“s=%d”,s);main()int i=1,s=0,n;scanf(“%d”,&n);for(;in)break;printf(“s=%d”,s);123第六章 循环控制例6.5 给一年级的小学生出10道100以内的加法练习题。分
40、析:1、出题 2、回答 3、判断对错#include“stdlib.h”main()int i,x,y,z;randomize();for(i=1;i=10;i+)x=random(99);y=random(99);printf(“%d+%d=”,x,y);scanf(“%d”,&z);if(z=x+y)printf(“nright!n”);else printf(“nwrong!n”);思考:1、做对几题 2、总成绩#include“stdlib.h”main()int i,x,y,z;int count=0,score=0;randomize();for(i=1;i=3)(注:一行打印3个
41、数字)main()long i=1,j=1,k;int n;printf(“%8ld%8ld”,i,j);for(n=3;n=30;n+)k=i+j;printf(“%8ld”,k);if(n%3=0)printf(“n”);i=j;j=k;125第六章 循环控制例6.7 求分数序列:1/2,2/3,3/5,5/8,8/13,13/21,.的前20项之和。main()int k;float i=1,j=2,s=0;for(k=1;k=20;k+)s=s+i/j;j=i+j;i=j-i;printf(“sum=%10.6fn”,s);126第六章 循环控制1、循环的嵌套概念对各种循环结构是一样的
42、,即某一循环的循环体内包含另一循环结构。2、各种循环结构可以互相嵌套。例for嵌套for(;).for(;).for-while嵌套for(;).while().6.6 循环的嵌套多重循环127第六章 循环控制1、各种循环结构可以互相替代,但不提倡使用 用goto构成的循环。2、在while和do-while语句构成的循环体中必须 有使循环趋于结束的语句,如i+。6.7 几种循环的比较3、在while和do-while语句构成的循环中,循环 变量的初始化必须在循环之前完成。4、在while、do-while和for语句构成的循环中,可以用break和continue跳出或结束本次循环 128第
43、六章 循环控制6.8 break语句和continue语句一、break语句1、用来跳出switch结构。2、用来跳出当前循环。循 环break;二、continue语句用来结束本次循环,即跳过当前循环中后继尚未执行的语句,进行下 一次循环循 环continue;129第六章 循环控制例6.8 利用公式 2/6=1-2+2-2+3-2+4-2+.求的 近似值,直到最后一项的值小于10-8为止。#include“math.h”main()long i=1;double pi=0;while(i*i=1e8)pi=pi+1.0/(i*i);i+;pi=sqrt(6.0*pi);printf(“pi
44、=%10.6fn”,pi);6.9程序举例130第六章 循环控制例6.8 利用公式 2/6=1-2+2-2+3-2+4-2+.求的 近似值,直到最后一项的值小于10-8为止。#include“math.h”main()long i;double pi=0;for(i=1;i=1e8)break;pi=pi+1.0/(i*i);pi=sqrt(6.0*pi);printf(“pi=%10.6fn”,pi);131第六章 循环控制例6.9 打印100以内个位数为6,且能被3整除的数。main()int i,j;for(i=0;i=9;i+)j=i*10+6;if(j%3!=0)continue;p
45、rintf(%d ,j);可以省略132第六章 循环控制例6.10 写出下列程序的运行结果。main()int i,j,a=0;for(i=0;i2;i+)for(j=0;j4;j+)if(j%2)break;a+;a+;printf(%dn,a);133第六章 循环控制例6.11 打印99表。1*1=11*2=2 2*2=41*3=3 2*3=6 3*3=91*4=4 2*4=8 3*4=12 4*4=161*5=5 2*5=10 3*5=15 4*5=20 5*5=251*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=361*7=7 2*7=14 3*7=21 4
46、*7=28 5*7=35 6*7=42 7*7=491*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=641*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81134第六章 循环控制例6.11 打印99表。main()int i,j;for(i=1;i=9;i+)for(j=1;j=i;j+)printf(“%d*%d=%-3d”,j,i,i*j);printf(n);135第六章 循环控制例6.12 百鸡百钱问题。公鸡一只5元,母鸡一只3元,小鸡三只1元,用100元买一百
47、只鸡,问公鸡、母鸡、小鸡各多少只?设:公鸡x只、母鸡y只、小鸡z只列等式:x+y+z=10015*x+9*y+z=300136第六章 循环控制例6.12 百鸡百钱问题。main()int x,y,z;for(x=1;x=20;x+)for(y=1;y=33;y+)for(z=1;z=100;z+)if(x+y+z=100&15*x+9*y+z=300)printf(“%d,%d,%dn”,x,y,z);137第六章 循环控制例6.13 求e x的台劳级数展开式的前n项之和。e x=1+x+(-x)x22!x33!xn-1 (n-1)!main()float x,s=1,t=1,f=1;int
48、i,n;scanf(“%f,%d”,&x,&n);for(i=1;i1;i-)if(m%i=0)break;if(i=1)printf(“%d is a prime number.n”,m);else printf(“%d is not a prime number.n”,m);139第六章 循环控制例6.15 用牛顿迭代法求代数方程e x-x=0在x=-2附近的一个实根。直到满足|xn+1-xn|=10-6为止。牛顿迭代公式:令:f(x)=e-x-x xn+1=xn-f(xn)是f(x)曲线在xn点处的切线斜率 f(xn)f(xn)f(x)x1f(x1)x2f(x2)x2=x1-f(x1)f
49、(x1)f(x1)=f(x1)x1-x2140第六章 循环控制例6.15 用牛顿迭代法求代数方程e x-x=0的实根。#include“math.h”main()float f1,f0,x1=-2,x0;do x0=x1;f0=exp(-x0)-x0;f1=-exp(-x0)-1;x1=x0-f0/f1;while(fabs(x1-x0)1e-6);printf(“%fn”,x1);141第六章作业上机调试作业第129页 6.2,6.8,6.14第129页 6.2,6.4,6.6,6.8第六章 循环控制142&本章内容7.1 一维数组7.2 二维数组7.3 字符数组第七章 数组返回143第七章
50、 数组第七章 数组7.1 一维数组一、定义类型关键字 数组名常数表达式;标识符数组体积二、数组元素数组名下标下界为 0,上界为常数表达式-1144第七章 数组例:int a10;float b5;定义一维整型数组 a和实型数组ba数组中的元素是:a0,a1,a2,a3,a4,a5,a6,a7,a8,a9;b数组中的元素是:b0,b1,b2,b3,b4 145第七章 数组三、数组的引用以数组元素作为引用对象例7.1 求 s=a1+a2+a10 main()int i;float s=0,a10;for(i=0;i10;i+)scanf(“%f”,&ai);s=s+ai;printf(“s=%fn