《用C语言编写程序4 5.pptx》由会员分享,可在线阅读,更多相关《用C语言编写程序4 5.pptx(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2.4.1 程序解析例2-8 输出一张华氏摄氏温度转换表,将华氏温度从 3040F 之间的每一度,分别转换成相应的摄氏温度并输出。fahr celsius 30 -1.1 31 -0.6 32 0.0 33 0.6 34 1.1 35 1.7 36 2.2 37 2.8 38 3.3 39 3.9 40 4.4第1页/共40页2.4.1 程序解析-温度转换表#includevoidmain()intlower,upper;doublecelsius,fahr;lower=30;upper=40;printf(fahrcelsiusn);/温度转换规则:华氏温度从lower到upper,每次增加
2、1Ffor(fahr=lower;fahr=upper;fahr+)celsius=(5.0/9.0)*(fahr-32.0);printf(%3.0f%6.1fn,fahr,celsius);fahrcelsius30-1.131-0.6320.0330.6341.1351.7362.2372.8383.3393.9404.4fahr=fahr+1第2页/共40页例2-8中for语句的流程for(fahr=lower;fahr=upper;fahr+)celsius=(5.0/9.0)*(fahr-32.0);printf(%3.0f%6.1fn,fahr,celsius);fahrcels
3、ius30-1.131-0.6320.0330.6341.1351.7362.2372.8383.3393.9404.4fahr=fahr+2输出?第3页/共40页for(表达式1;表达式2;表达式3)循环体语句实现C语句的重复执行2.4.2 for语句-循环语句3个表达式、循环体语句!书写顺序和执行顺序不同!表达式1只执行一次第4页/共40页循环(控制)变量:for语句中,通过改变或判断某个变量的值来控制循环的执行for(fahr=lower;fahr=upper;fahr+)celsius=(5.0/9.0)*(fahr-32.0);printf(%3.0f%6.1fn,fahr,cels
4、ius);for语句中的循环变量赋初值判断其值改变其值第5页/共40页for(fahr=lower;fahr=upper;fahr+)celsius=(5.0/9.0)*(fahr-32.0);printf(%3.0f%6.1fn,fahr,celsius);表达式1:给循环变量赋初值,指定循环的起点。fahr=lower表达式2:给出循环的条件,决定循环的继续或结束。fahr=upper表达式3:设置循环的步长,改变循环变量的值,从而可改变表达式2的真假性。fahr+语句:被反复执行的语句,一条语句。for语句的说明第6页/共40页for(fahr=lower;fahr=upper;fahr
5、+)celsius=(5.0/9.0)*(fahr-32.0);printf(%3.0f%6.1fn,fahr,celsius);for(fahr=lower;fahr=upper;fahr=fahr+1)celsius=(5.0/9.0)*(fahr-32.0);printf(%3.0f%6.1fn,fahr,celsius);复合语句 和空语句;for(fahr=lower;fahr=upper;fahr=fahr+1);celsius=(5.0/9.0)*(fahr-32.0);printf(%3.0f%6.1fn,fahr,celsius);!不要在for语句中随意加分号第7页/共40
6、页抽取具有共性的算式:sum=sum+isum初值为0,该算式重复100次,i从1变到100设i为循环变量,则:指定循环起点的表达式1:i=1给出循环条件的表达式2:i=100设置循环步长的表达式3:i+循环体语句:sum=sum+i;for(i=1;i=100;i+)sum=sum+i;例2-9 求 1+2+100第8页/共40页/*计算1+2+3+100*/#includevoidmain()inti,sum;sum=0;/*置累加和sum的初值为0*/for(i=1;i=100;i+)/*循环重复100次*/sum=sum+i;/*反复累加*/printf(“sum=%dn”,sum);
7、/*输出累加和*/例2-9 源程序for(i=1;i=100;i+)sum=0;sum=sum+i;sum=5050第9页/共40页#includevoidmain()inti,sum;sum=0;/*置累加和sum的初值为0*/for(i=1;i=100;i+)/*循环重复100次*/sum=sum+i;/*反复累加*/printf(“sum=%dn”,sum);/*输出累加和*/求 1+1/2+1/3+1/100for(i=1;i=100;i+)sum=sum+1.0/i;inti;doublesum;printf(“sum=%fn”,sum);第10页/共40页应该包含四个部分(例2-9
8、):初始化:指定循环起点给循环变量赋初值,如i=1;进入循环之前,设置相关变量的初值,如sum=0。条件控制:只要i100,循环结束。2.4.3 指定次数的循环程序设计第11页/共40页输入一个正整数n,求前n项和,即循环n次#includevoidmain()inti,sum;sum=0;for(i=1;i=100;i+)sum=sum+i;printf(“sum=%dn”,sum);求 1+2+3+n for(i=1;i=n;i+)sum=sum+i;printf(inputn:n);scanf(%d,&n);第12页/共40页#includevoidmain()inti,sum;prin
9、tf(inputn:n);scanf(%d,&n);sum=0;for(i=1;i=n;i+)sum=sum+i;printf(“sum=%dn”,sum);求1+1/2+1/3+1/n#includevoidmain()inti;doublesum;printf(inputn:n);scanf(%d,&n);sum=0;for(i=1;i=n;i+)sum=sum+1.0/i;printf(“sum=%fn”,sum);第13页/共40页求前n项和,即循环n次,每次累加1项。for(i=1;i=n;i+)sum=sum+item(第i项)item=1.0/(2*i-1)例2-10求 1+1/
10、3+1/5+的前n项和第14页/共40页#includevoidmain()inti,n;doubleitem,sum;printf(inputn:n);scanf(%d,&n);sum=0;for(i=1;i=n;i+)item=1.0/(2*i-1);/*计算第i项的值*/sum=sum+item;/*累加第i项的值*/printf(sum=%fn,sum);例2-10 源程序第15页/共40页求前n项和,即循环n次,每次累加1项。for(i=1;i=n;i+)sum=sum+item(第i项)item=flag*1.0/tt=t+2flag=-flag例2-11 求 1-1/3+1/5-
11、的前n项和item=flag*1.0/(2*i-1)第16页/共40页#includevoidmain()inti,n;doubleitem,sum;printf(inputn:);scanf(%d,&n);flag=1;t=1;sum=0;for(i=1;i=n;i+)item=flag*1.0/item;/*计算第i项的值*/sum=sum+item;/*累加第i项的值*/flag=-flag;/*准备下一次循环*/t=t+2;printf(sum=%fn,sum);例2-11 源程序第17页/共40页#includevoidmain()inti,n;doubleproduct;print
12、f(inputn:n);scanf(%d,&n);product=1;/*置阶乘product的初值为1*/for(i=1;i=n;i+)/*循环重复n次,计算n!*/product=product*i;printf(product=%.0fn,product);例2-12 源程序第19页/共40页#includevoidmain()inti,n;doublex,power;printf(inputx,n:n);scanf(%lf%d,&x,&n);power=1;/*置power的初值为1*/for(i=1;i=n;i+)/*循环重复n次,计算x的n次幂*/power=power*x;pri
13、ntf(%0.fn,power);例2-13 源程序第21页/共40页2.5 计算12!/(5!7!)2.5.1程序解析2.5.2函数的定义2.5.3函数的调用2.5.4使用函数编写程序第22页/共40页#includedoublefact(intn);/*函数声明*/voidmain()printf(%fn,fact(12)/(fact(5)+fact(7);doublefact(intn)/*定义求n!的函数*/inti;doubleresult=1;for(i=1;i=n;i+)result=result*i;returnresult;/*把结果回送主函数*/2.5.1 程序解析 求12
14、!/(5!7!)第23页/共40页函数:完成一个特定工作的独立程序模块系统函数:C语言系统提供定义,如:scanf()、printf()自定义函数:用户自己定义,如:求阶乘函数fact()C程序:1个main()0.n个函数程序调用某个函数,该函数会完成一些特定的工作,然后返回到调用它的地方。函数经过运算,得到一个明确的运算结果,并需要回送该结果。如:求阶乘函数fact要回送计算出的阶乘值。函数只是完成一系列操作步骤,不需要回送任何运算结果。2.5.2 函数的定义第24页/共40页函数类型函数名(参数表)/*函数首部*/*函数体*/函数实现过程return表达式;返回运算结果的函数定义 把函数
15、运算的结果回送给主函数?分号函数返回值的类型doublefact(intn)inti;doubleresult=1;for(i=1;i=n;i+)result=result*i;returnresult;第25页/共40页void函数名(参数表)/*函数首部*/*函数体*/函数实现过程return;/*可省略*/不返回结果的函数定义不返回结果第26页/共40页#includevoidoutput1();/*函数声明*/voidmain()output1();voidoutput1()inti;for(i=0;i5;i+)/*输出5行星号*/printf(*n);例2-15 输出五行*第27页/
16、共40页#includevoidoutput2(introw);/*函数声明*/voidmain()output2(5);输出n行*通过参数指定输出的行数,使函数的功能更灵活参数是函数运行需要具备的已知条件voidoutput2(introw)/*参数row给出行数*/inti;for(i=0;irow;i+)/*输出row行星号*/printf(*n);第28页/共40页doublefact(intn)voidoutput1()voidoutput2(introw)参数表类型1参数1,类型2参数2,类型n参数nintx,inty,floatz参数表?intx,y,floatz第29页/共40
17、页#includedoubleexpon(doublex,intn);voidmain()inta;doublet,y;y=expon(3.5,4);printf(3.54=%fn,y);printf(inputt,a:n);scanf(%lf%d,&t,&a);y=expon(t,a);printf(%.2f%d=%f n,t,a,y);2.5.3 函数的调用 doubleexpon(doublex,intn)inti;doublepower=1.0;for(i=1;i=n;i+)power=power*x;returnpower;第30页/共40页计算机在执行程序时,从主函数main开始执
18、行,如果遇到某个函数调用,主函数被暂停执行,转而执行相应的函数,该函数执行完后,将返回主函数,然后再从原先暂停的位置继续执行。函数遇return或最后的大括号,返回主函数函数的调用过程第31页/共40页函数定义时的参数被称为形式参数(形参)doubleexpon(doublex,intn)函数调用时的参数被称为实际参数(实参)expon(3.5,4)expon(t,a)实参形参在参数传递过程中,实参把值复制给形参实参和形参一一对应,个数相同,类型一致。形参:变量实参:常量、变量或表达式函数的参数单向传递第32页/共40页#includedoubleexpon(doublex,intn);voi
19、dmain()inta;doubley;a=4;y=expon(3.5,a);printf(a=%d,y=%fn,a,y);单向传递示例 doubleexpon(doublex,intn)doublepower;for(power=1.0;n0;n-)power=power*x;returnpower;第33页/共40页1调用语句printf(“%f”,result);output2(5);通常用于void类型函数的调用2表达式调用sum=expon(t,a)+expon(3.5,4);3作函数参数printf(%fn,expon(t,a);相当于:y=expon(t,a);printf(%f
20、n,y);函数调用的3种形式第34页/共40页例2-17重做例2-4输入x,求分段函数f(x)的值,保留2位小数。要求定义和调用函数fun(x)实现该分段函数。exx1f(x)=x2-1x12.4.4 使用函数编写程序第35页/共40页/*计算二分段函数*/#include#includefloatfun(floatx);voidmain()floatx,y;printf(inputx:n);scanf(%f,&x);y=fun(x);printf(f(%f)=%.2fn,x,y);例2-17源程序floatfun(floatx)floaty;if(x=1)y=exp(x);elsey=x*x
21、-1;returny;第36页/共40页输出一张华氏摄氏温度转换表其中华氏温度的取值区间是 0F,300F,温度间隔20F。要求定义和调用函数ftoc(fahr),将华氏温度C转换为摄氏温度F计算公式:C=(5/9)(F-32)。例2-18 输出华氏摄氏温度转换第37页/共40页#includevoidmain()intlower,upper;doublecelsius,fahr;lower=0;upper=300;printf(fahrcelsiusn);for(fahr=lower;fahr=upper;fahr=fahr+20)celsius=(5.0/9.0)*(fahr-32.0);
22、printf(%3.0f%6.1fn,fahr,celsius);例2-18 源程序floatftoc(doublefahr)return(5.0/9.0)*(fahr-32.0);celsius=ftoc(fahr)第38页/共40页要求定义和调用函数total(n1,n2)计算n1+.+n2例2-19 输入n1和n2,求n1+.+n2#includeinttotal(intn1,intn2);voidmain()intn1,n2;printf(inputn1,n2:n);scanf(%d%d,&n1,&n2);printf(sum=%dn,total(n1,n2);inttotal(intn1,intn2)inti,sum=0;for(i=n1;i=n2;i+)sum=sum+i;returnsum;第39页/共40页感谢您的观看!第40页/共40页