《《用C语言编写程序》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《用C语言编写程序》PPT课件.ppt(40页珍藏版)》请在装配图网上搜索。
1、4输出华氏摄氏温度转换表,4.1程序解析4.2for语句4.3指定次数的循环程序设计,4.1程序解析,例8输出一张华氏摄氏温度转换表,将华氏温度从3040F之间的每一度,分别转换成相应的摄氏温度并输出。fahrcelsius30-1.131-0.6320.0330.6341.1351.7362.2372.8383.3393.9404.4,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.4,fahr=fahr+1,例8中for语句的流程,for(fahr=lower;fahr=upper;fahr+)celsius=(5.0/9.0)*(fahr-32.0);printf(%3.0f%6.1fn,fahr,celsius);,fahrcelsi。
3、us30-1.131-0.6320.0330.6341.1351.7362.2372.8383.3393.9404.4,fahr=fahr+2输出?,for(表达式1;表达式2;表达式3)循环体语句;实现C语句的重复执行,4.2for语句-循环语句,3个表达式、循环体语句!书写顺序和执行顺序不同!表达式1只执行一次,循环(控制)变量:for语句中,通过改变或判断某个变量的值来控制循环的执行for(fahr=lower;fahr=upper;fahr+)celsius=(5.0/9.0)*(fahr-32.0);printf(%3.0f%6.1fn,fahr,celsius);,for语句中的循。
4、环变量,赋初值,判断其值,改变其值,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语句的说明,for(fahr=lower;fahr=upper;fahr+)celsius=(5.0/9.0)*(f。
5、ahr-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语句中随意加分号,抽取具有共性的算式:sum=sum+isum初值为。
6、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;,例9求1+2+100,/*计算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);/*输出累加和*/,例9源程序,for(i=1;i=100;i+)sum。
7、=0;sum=sum+i;,sum=5050,#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/100,for(i=1;i=100;i+)sum=sum+1.0/i;,inti;doublesum;,printf(“sum=%fn”,sum);,应该包含四个部分(例9):初始化:指定循环起点给循环变量赋初值,如i=1;进入循环之前,设置相关变量的初值,如sum=0。。
8、条件控制:只要i100,循环结束。,4.3指定次数的循环程序设计,输入一个正整数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,#includevoidmain()inti,sum;printf(inputn:n);scanf(%d,求1+1/2+1/3+1/n,#includevoidmain()inti;doublesum;pr。
9、intf(inputn:n);scanf(%d,求前n项和,即循环n次,每次累加1项。for(i=1;i=n;i+)sum=sum+item(第i项)item=1.0/(2*i-1),例10求1+1/3+1/5+的前n项和,#includevoidmain()inti,n;doubleitem,sum;printf(inputn:n);scanf(%d,例10源程序,求前n项和,即循环n次,每次累加1项。for(i=1;i=n;i+)sum=sum+item(第i项)item=flag*1.0/tt=t+2flag=-flag,例11求1-1/3+1/5-的前n项和,item=flag*1.0。
10、/(2*i-1),#includevoidmain()inti,n;doubleitem,t,flag,sum;printf(inputn:);scanf(%d,例11源程序,n!=1*2*nfor(i=1;i=n;i+)product=product*item(第i项)item=i,例12求n!,product=?,#includevoidmain()inti,n;doubleproduct;printf(inputn:n);scanf(%d,例12源程序,输入实数x和正整数n,计算xn=x*x*xfor(i=1;i=n;i+)power=power*item(第i项)item=?,例13求。
11、xn,x,#includevoidmain()inti,n;doublex,power;printf(inputx,n:n);scanf(“%lf%d,例13源程序,5计算12!/(5!7!),5.1程序解析5.2函数的定义5.3函数的调用5.4使用函数编写程序,#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;returnres。
12、ult;/*把结果回送主函数*/,5.1程序解析求12!/(5!7!)例14,函数:完成一个特定工作的独立程序模块系统函数:C语言系统提供定义,如:scanf()、printf()自定义函数:用户自己定义,如:求阶乘函数fact()C程序:1个main()0.n个函数程序调用某个函数,该函数会完成一些特定的工作,然后返回到调用它的地方。函数经过运算,得到一个明确的运算结果,并需要回送该结果。如:求阶乘函数fact要回送计算出的阶乘值。函数只是完成一系列操作步骤,不需要回送任何运算结果。,5.2函数的定义,函数类型函数名(参数表)/*函数首部*/*函数体*/函数实现过程return表达式;,返回。
13、运算结果的函数定义,把函数运算的结果回送给主函数,?分号,函数返回值的类型,doublefact(intn)inti;doubleresult=1;for(i=1;i=n;i+)result=result*i;returnresult;,void函数名(参数表)/*函数首部*/*函数体*/函数实现过程return;/*可省略*/,不返回结果的函数定义,不返回结果,#includevoidoutput1();/*函数声明*/voidmain()output1();voidoutput1()inti;for(i=0;i5;i+)/*输出5行星号*/printf(*n);,例2-15输出五行*,#i。
14、ncludevoidoutput2(introw);/*函数声明*/voidmain()output2(5);,输出n行*,通过参数指定输出的行数,使函数的功能更灵活,参数是函数运行需要具备的已知条件,voidoutput2(introw)/*参数row给出行数*/inti;for(i=0;irow;i+)/*输出row行星号*/printf(*n);,doublefact(intn)voidoutput1()voidoutput2(introw)参数表类型1参数1,类型2参数2,类型n参数nintx,inty,floatz,参数表,?intx,y,floatz,#includedoublee。
15、xpon(doublex,intn);voidmain()inta;doublet,y;y=expon(3.5,4);printf(3.54=%fn,y);printf(inputt,a:n);scanf(%lf%d,5.3函数的调用,doubleexpon(doublex,intn)inti;doublepower=1.0;for(i=1;i0;n-)power=power*x;returnpower;,1调用语句printf(“%f”,result);output2(5);通常用于void类型函数的调用2表达式调用sum=expon(t,a)+expon(3.5,4);3作函数参数prin。
16、tf(%fn,expon(t,a);相当于:y=expon(t,a);printf(%fn,y);,函数调用的3种形式,例17重做例4输入x,求分段函数f(x)的值,保留2位小数。要求定义和调用函数fun(x)实现该分段函数。exx1f(x)=x2-1x1,4.4使用函数编写程序,/*计算二分段函数*/#include#includefloatfun(floatx);voidmain()floatx,y;printf(inputx:n);scanf(%f,例17源程序,floatfun(floatx)floaty;if(x=1)y=exp(x);elsey=x*x-1;returny;,输出一。
17、张华氏摄氏温度转换表其中华氏温度的取值区间是0F,300F,温度间隔20F。要求定义和调用函数ftoc(fahr),将华氏温度C转换为摄氏温度F计算公式:C=(5/9)(F-32)。,例18输出华氏摄氏温度转换,#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);printf(%3.0f%6.1fn,fahr,celsius);,例18源程序,floatftoc(doublefahr)return(5.0/9.0)*(fahr-32.0);,celsius=ftoc(fahr),要求定义和调用函数total(n1,n2)计算n1+.+n2,例19输入n1和n2,求n1+.+n2,#includeinttotal(intn1,intn2);voidmain()intn1,n2;printf(inputn1,n2:n);scanf(%d%d,inttotal(intn1,intn2)inti,sum=0;for(i=n1;i=n2;i+)sum=sum+i;returnsum。