您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 市场营销 > chap2_用C语言编写程序(4-5)
2.4输出华氏-摄氏温度转换表【例2-8】输出华氏温度从30~40°F之间的每一度所对应的摄氏温度。fc30-1.131-0.6320.0330.6341.1351.7362.2372.8383.3393.9404.42.4.1程序解析-温度转换表#includestdio.hvoidmain(){intlower,upper;doublec,f;lower=30;upper=40;printf(fc\n);/*华氏温度f从lower到upper,每次增1*/for(f=lower;f=upper;f++){c=5.0/9.0*(f-32.0);printf(%3.0f%6.1f\n,f,c);}}fc30-1.131-0.6320.0330.6341.1351.7362.2372.8383.3393.9404.4f=f+1f占3位,0位小数;c占6位,1位小数求50~90F的转换表?例2-8for语句的流程for(f=lower;f=upper;f++){c=5.0/9.0*(f-32.0);printf(%3.0f%6.1f\n,f,c);}改为f=f+2会怎样?f=lowerc=5.0/9.0*(f-32.0)输出一行f和cf=upperf++真假f=f+2for(表达式1;表达式2;表达式3)循环体语句重复执行循环体语句2.4.2for语句-循环语句for语句中的循环变量赋初值判断其值改变其值什么是循环变量?·1.有初值;·2.出现在表达式2中作为循环条件;·3.每次循环中其值会发生变化for(f=lower;f=upper;f++)for(f=lower;f=upper;f++){……}表达式1:为循环变量赋初值,指定循环的起点。f=lower表达式2:给出循环的条件,决定循环的继续或结束。f=upper表达式3:设置循环的步长,修改循环变量的值,从而改变表达式2的真假性。f++循环体:被反复执行的一条语句。for语句的说明for(f=lower;f=upper;f++){c=(5.0/9.0)*(f-32.0);printf(“%3.0f%6.1f\n”,f,c);}for(f=lower;f=upper;f++)c=(5.0/9.0)*(f-32.0);printf(“%3.0f%6.1f\n”,f,c);循环体语句for(f=lower;f=upper;f++);{c=(5.0/9.0)*(f-32.0);printf(“%3.0f%6.1f\n”,f,c);}不要随意去大括号{}不要随意加分号;错例:【例2-9】求抽取具有共性的算式:sum=sum+isum初值为0,该算式重复100次,i从1变到100设i为循环变量,则:指定循环起点的表达式1:i=1给出循环条件的表达式2:i=100设置循环步长的表达式3:i++循环体语句:sum=sum+i;1001iifor(i=1;i=100;i++)sum=sum+i;/*计算1+2+3+……+100*/#includestdio.hvoidmain(){inti,sum;sum=0;/*sum的初值为0*/for(i=1;i=100;i++)/*循环重复100次*/sum=sum+i;/*反复累加*/printf(“sum=%d\n”,sum);/*输出累加和*/}例2-9源程序for(i=1;i=100;i++){sum=0;sum=sum+i;}sum=5050P46:9?10+11+12+..+20for(i=10;i=20;i++)求#includestdio.hvoidmain(){inti,sum;sum=0;for(i=1;i=100;i++)sum=sum+i;printf(“sum=%d\n”,sum);}for(i=1;i=100;i++)sum=sum+1.0/i;inti;doublesum;printf(“sum=%f\n”,sum);10011iiP46:10?1/5+1/6+..+1/15【例2-10】求的前n项之和分析:共循环n次,每次累加1项:for(i=1;i=n;i++)sum=sum+item(第i项)第i项item为item=1.0/(2*i-1)1111...357121i找出与循环变量有关的变化规律!#includestdio.hvoidmain(){inti,n;doubleitem,sum=0;printf(inputn:\n);scanf(“%d”,&n);/*输入n*/for(i=1;i=n;i++){item=1.0/(2*i-1);/*计算第i项*/sum=sum+item;/*累加第i项*/}printf(sum=%f\n,sum);}例2-10源程序【例2-11】求的前n项和求多项式前n项和:循环n次,每次累加1项。for(i=1;i=n;i++)sum=sum+item(第i项)第i项为item=flag*1.0/(2*i-1)flag=-flag1111...357flag的值为1或-11(1)21ii#includestdio.hvoidmain(){inti,n,flag;doubleitem,sum;printf(inputn:);scanf(“%d”,&n);/*输入n*/flag=1;sum=0;for(i=1;i=n;i++){item=flag*1.0/(2*i-1);/*计算第i项*/sum=sum+item;/*累加第i项*/flag=-flag;/*改变下一项符号*/}printf(sum=%f\n,sum);}例2-11源程序#includestdio.hvoidmain(){inti,n;doublex,power;printf(inputx,n:\n);scanf(%lf%d,&x,&n);power=1;/*power的初值为1*/for(i=1;i=n;i++)/*循环n次,计算xn*/power=power*x;printf(%0.f\n,power);}例2-13源程序%0.f:保留整数,按实际长度输出。例如:123.456--1231234.5678--1235输入double型变量,格式为“%lf”小结与作业◆小结:用for语句实现循环功能for语句的格式和流程◆作业:P45:8~102.5计算12!/(5!+7!)Whatwillwelearn?◆如何定义函数?◆如何声明函数?◆如何调用函数?#includestdio.hdoublefact(intn);/*函数声明*/voidmain(){printf(“%f\n”,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!/(5!+7!)◆函数:完成特定工作的独立程序模块系统函数:由C语言系统提供定义,如:scanf()、printf()自定义函数:用户自己定义,如:求阶乘函数fact()◆C程序:1个main()+0~n个函数◆函数的类型:有返回值:函数经过运算得到一个明确的运算结果,并将该结果送回给调用者,则需要定义函数类型。如:阶乘函数fact的返回值类型为int或double。无返回值:函数只是完成一系列操作步骤,不需要回送任何运算结果,则函数类型为void(void可以省略)。2.5.2函数的定义函数类型函数名(参数表)/*函数首部*/{/*函数体*/函数实现过程return表达式;}返回运算结果的函数定义把函数运算的结果回送给主函数有无分号?函数返回值的类型doublefact(intn){inti;doubleresult=1;for(i=1;i=n;i++)result=result*i;returnresult;}void函数名(参数表)/*函数首部*/{/*函数体*/函数实现过程return;/*此句可省略*/}不返回结果的函数定义不返回结果voidmain(){….}函数的声明◆函数定义好之后,还需要在程序的开始部分加以声明◆两种方式:1.简单声明:只列出函数类型格式:函数类型函数名();doublefact();floatmax();2.原型声明:列出函数类型和参数表格式:函数类型函数名(参数表);doublefact(intn);floatmax(floatx1,floatx2);都在末尾加分号;#includestdio.hvoidoutput1();/*函数声明*/voidmain(){output1();/*函数调用*/}voidoutput1()/*函数定义*/{inti;for(i=0;i5;i++)/*输出5行星号*/printf(*******\n);}例2-15输出五行******#includestdio.hvoidoutput2(introw);/*函数声明*/voidmain(){output2(5);}输出n行******通过参数指定输出的行数,使函数的功能更灵活参数是函数运行必需的已知条件!voidoutput2(introw)/*参数row给出行数*/{inti;for(i=0;irow;i++)/*输出row行星号*/printf(*******\n);}上讲回顾与补充说明◆for语句实现累加、累乘等工作;◆函数的定义与声明:函数定义的格式:函数类型函数名(参数表)函数返回值类型:void,int,float,double,…与该函数return值类型一致;若省略函数类型,默认为int(有return语句),或void(无return语句);函数名:取名规则同标识符;参数表:由0个、1个或多个参数构成,各参数之间用逗号分开,圆括号不可省略。◆函数声明:如果被调用函数写在主函数之后,必须事先声明在VC++中,不允许采用简单声明方式,必须采用原型说明doublefact(intn)voidoutput1()intadd(intx1,intx2)参数表(类型1参数1,类型2参数2,……,类型n参数n)(intx,inty,floatz)参数表?(intx,y,floatz)!一个参数对应一个类型#includestdio.hdoubleexpon(doublex,intn);voidmain(){inta;doubles,y;y=expon(3.5,4);printf(3.5^4=%f\n,y);printf(inputs,a:\n);scanf(%lf%d,&s,&a);y=expon(s,a);printf(%.2f^%d=%f\n,s,a,y);}2.5.3函数的调用doubleexpon(doublex,intn){inti;doublepower=1.0;for(i=1;i=n;i++)power=power*x;returnpower;}◆在执行程序时,总是从主函数main开始执行;◆当遇到函数调用,暂停主函数,把参数传给被调用函数,并开始执行被调用函数;◆当被调用函数执行完毕,返回主函数,从原先暂停的位置处继续往下执行。◆何时返回主函数?执行到return语句或最后的大括号函数的调用过程◆函数定义中的参数被称为形式参数(形参)doubleexpon(doublex,intn)◆函数调用时的参数被称为实际参数(实参)expon(3.5,4)expon(t,a)expon(x+2,a)◆实参形参实参的值复制给形参实参和形参一一对应:个数相同、类型一致。形参:变量实参:常量、变量或表达式函数的参数单向传递!实参与形参可以同名也可不同名#includestdio.hdoubleexpon(doubl
本文标题:chap2_用C语言编写程序(4-5)
链接地址:https://www.777doc.com/doc-3300287 .html