您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 市场营销 > 第3讲 用C语言编写程序(2)
1/第三讲用C语言编写程序(二)赵欢欢计算机与信息工程学院2/知识回顾•常量、变量、数据类型•算术运算和赋值运算•格式化的输入和输出函数•If~else语句•关系运算和关系表达式•常用的库函数3/学习目标•理解循环语句的内涵•能够在编程中使用for语句•理解结构化程序设计思想4/输出华氏-摄氏温度转换表•程序解析•for语句•指定次数的循环程序设计5/程序解析例2-6输入2个整数lower和upper,输出一张华氏-摄氏温度转换表,华氏温度的取值范围是[lower,upper],每次增加1°F。fahrcelsius30-1.131-0.6320.0330.6341.1351.76/程序解析-温度转换表#includestdio.hintmain(void){intfahr,lower,upper;doublecelsius;printf(“Enterlower:”);//输入最低值scanf(%d,&lower);printf(“Enterupper:”);//输入最高值scanf(%d,&upper);printf(“fahrcelsius\n”);//温度重复转换:华氏温度从lower开始,到upper结束,每次增加1°Ffor(fahr=lower;fahr=upper;fahr++){celsius=(5.0/9.0)*(fahr-32);printf(%d%6.1f\n,fahr,celsius);//打印输出结果}return0;}Enterlower:30Enterupper:35fahrcelsius30-1.131-0.6320.0330.6341.1351.7fahr=fahr+17/for语句-循环语句for(表达式1;表达式2;表达式3)–3个表达式、循环体语句–书写顺序和执行顺序不同–表达式1只执行一次8/for语句中的循环变量循环(控制)变量:for语句中,通过改变或判断某个变量的值来控制循环的执行for(fahr=lower;fahr=upper;fahr++){celsius=(5.0/9.0)*(fahr-32.0);printf(%d%6.1f\n,fahr,celsius);}赋初值判断其值改变其值9/for语句的说明for(fahr=lower;fahr=upper;fahr++){celsius=(5.0/9.0)*(fahr-32.0);printf(%d%6.1f\n,fahr,celsius);}表达式1:给循环变量赋初值,指定循环的起点。fahr=lower表达式2:给出循环的条件,决定循环的继续或结束。fahr=upper表达式3:设置循环的步长,改变循环变量的值,从而可改变表达式2的真假性。fahr++语句:被反复执行的一组语句。10/复合语句{}和空语句;for(fahr=lower;fahr=upper;fahr++){celsius=(5.0/9.0)*(fahr-32.0);printf(%d%6.1f\n,fahr,celsius);}for(fahr=lower;fahr=upper;fahr=fahr+1);celsius=(5.0/9.0)*(fahr-32.0);printf(%d%6.1f\n,fahr,celsius);11/指定次数的循环程序设计求1+2+……+100抽取具有共性的算式: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;12/源程序-求1+2+……+100/*计算1+2+3+……+100*/#includestdio.hintmain(void){inti,sum;sum=0;/*置累加和sum的初值为0*/for(i=1;i=100;i++)/*循环重复100次*/sum=sum+i;/*反复累加*/printf(“sum=%d\n”,sum);/*输出累加和*/return0;}for(i=1;i=100;i++){sum=0;sum=sum+i;}13/求1+1/2+1/3+……+1/100#includestdio.hintmain(void){inti,sum;sum=0;for(i=1;i=100;i++)sum=sum+i;printf(“sum=%d\n”,sum);return0;}for(i=1;i=100;i++)sum=sum+1.0/i;inti;doublesum;printf(“sum=%f\n”,sum);14/指定次数的循环程序设计一般包含四个部分:•初始化:指定循环起点–给循环变量赋初值,如i=1;–进入循环之前,设置相关变量的初值,如sum=0。•条件控制:–只要i=100,循环就继续•工作:指重复执行的语句(循环体)。–一条语句,复合语句或空语句。如sum=sum+i。•改变循环变量:在每次循环中改变循环变量的值–如i++,以改变循环条件的真假。一旦i100,循环结束。15/例2-7求1+2+3+……+n输入一个正整数n,求前n项和,即循环n次#includestdio.hintmain(void){inti,sum;sum=0;for(i=1;i=100;i++)sum=sum+i;printf(“sum=%d\n”,sum);return0;}printf(“Entern:);scanf(%d,&n);for(i=1;i=n;i++)sum=sum+i;Entern:100Sum=505016/求1+1/2+1/3+……+1/n#includestdio.hintmain(void){inti,sum;printf(“Entern:);scanf(%d,&n);sum=0;for(i=1;i=n;i++)sum=sum+i;printf(“sum=%d\n”,sum);return0;}#includestdio.hintmain(void){inti;doublesum;printf(“Entern:);scanf(%d,&n);sum=0;for(i=1;i=n;i++)sum=sum+1.0/i;printf(“sum=%f\n”,sum);return0;}17/求1+1/3+1/5+…的前n项和求前n项和,即循环n次,每次累加1项。for(i=1;i=n;i++)sum=sum+item(第i项)item=1.0/(2*i-1)18/源程序-求1+1/3+1/5+…#includestdio.hintmain(void){inti,n;doubleitem,sum;printf(“Entern:);scanf(%d,&n);sum=0;for(i=1;i=n;i++){item=1.0/(2*i-1);/*计算第i项的值*/sum=sum+item;/*累加第i项的值*/}printf(sum=%f\n,sum);return0;}19/例2-8求1-1/3+1/5-…的前n项和求前n项和,即循环n次,每次累加1项。for(i=1;i=n;i++)sum=sum+item(第i项)item=flag*1.0/denominatordenominator=denominator+2flag=-flag20/#includestdio.hintmain(void){intdenominator,flag,i,n;doubleitem,sum;printf(“Entern:);scanf(%d,&n);flag=1;denominator=1;sum=0;for(i=1;i=n;i++){item=flag*1.0/denominator;/*计算第i项的值*/sum=sum+item;/*累加第i项的值*/flag=-flag;/*准备下一次循环*/denominator=denominator+2;}printf(sum=%f\n,sum);return0;}21/例2-9求n!n!=1*2*…*nfor(i=1;i=n;i++)product=product*item(第i项)item=i22/例2-9源程序#includestdio.hintmain(void){inti,n;doubleproduct;printf(inputn:\n);scanf(%d,&n);product=1;/*置阶乘product的初值为1*/for(i=1;i=n;i++)/*循环重复n次,计算n!*/product=product*i;printf(product=%.0f\n,product);return0;}23/求xn输入实数x和正整数n,计算xn=x*x*…*xfor(i=1;i=n;i++)power=power*item(第i项)item=?24/源程序-求xn#includestdio.hintmain(void){inti,n;doublex,power;printf(“Enterx,n:\n);scanf(%lf%d,&x,&n);power=1;/*置power的初值为1*/for(i=1;i=n;i++)/*循环重复n次,计算x的n次幂*/power=power*x;printf(%0.f\n,power);}25/练习•练习2-13:•练习2-17:#includestdio.hintmain(void){inti,n;doublesum;printf(Entern:);scanf(%d,&n);sum=0;for(i=1;i=n;i++)sum=sum+1.0/i;printf(sum=%f\n,sum);return0;}1026/生成乘方表和阶乘表程序解析结构化程序设计思想27/程序解析例2-10(1)输入一个正整数n,生成一张2的乘方表,输出20到2n的值,可以调用幂函数计算2的乘方。for(i=0;i=n;i++){/*调用幂函数pow(2,i)计算2的i次方*/power=pow(2,i);输出power的值;}28/源程序-生成乘方表#includestdio.h#includemath.hintmain(void){inti,n;doublepower;printf(Entern:);scanf(%d,&n);for(i=0;i=n;i++){power=pow(2,i);printf(pow(2,%d)=%.0f\n,i,power);}return0;}Entern:4pow(2,0)=1pow(2,1)=2pow(2,2)=4pow(2,3)=8pow(2,4)=1629/例2-10(2)生成阶乘表•输入一个正整数n,生成一张阶乘表,输出0!到n!的值。要求定义和调用函数fact(n)计算n!,函数类型是double。for(i=0;i=n;i++){product=fact(i);/*调用自定义函数fact(i)计算i!*/输出product的值;}30/源程序-生成阶乘表#includestdio.hdoublefact(intn);/*自定义函数的声明*/intmain(void){inti,n;doubleresult;printf(Entern:);scanf(%d,&n);for(i=0;i=n;i++){result=fact(i);/*调用自定义函数fact(i)计算i!*/printf(%d!=%.0f\n,i,result);}return0;}31/doublefact(intn){inti;doubleproduct;product=1;for(i=1;i=n;i++){product=product*i;}returnproduct;}源程序-生成阶乘表32/结构化程序
本文标题:第3讲 用C语言编写程序(2)
链接地址:https://www.777doc.com/doc-3793411 .html