欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载  

    C语言课件第5章PPT.ppt

    • 资源ID:3479898       资源大小:377.02KB        全文页数:44页
    • 资源格式: PPT        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言课件第5章PPT.ppt

    第5章 循环结构的语句及流程控制,问题1:假如全班41人,欲从键盘上输入每人的数学成绩,然后计算出平均成绩; 问题2: 编程计算n! . 这些都是重复计算的问题,需要由循环结构来解决。C 提供了以下3种重复计算的结构:,n while (表达式) 语句 n do 语句 while (表达式) n for (表达式1;表达式2;表达式3) 语句,循环结构的语句及流程控制,格式1: while (表达式) 语句 功能: 当表达式的值非0时,执行语句,该语句一般是复合语句,被称之为循环体.,例1: 解问题2 ,求 n! 的值. 需要定义的变量: mul - 存放累乘积 ; i - 计数; n -,程序:,#include void main() int i=1, n; double mul=1; printf(“n Input n:”); scanf(“%d”, ,说明:,循环体可以用复合语句 while语句前应有为测试表达式中的循环控制变量赋初值的语句,以确保循环的正常开始; 循环体内应有改变循环控制变量的语句,以确保循环进行有限次后正常结束; 如: i=1; while (i=100) sum=sum+1; (死循环) while 循环的特点是先判断后执行,故循环有可能一次都不被执行; 如: i=3; while (i3) printf(“i=%dn”, i);,例2:求整数a和b的最小公倍数,算法流图如下:,程序如下:,void main( ) int a,b, i; scanf(“%d%d”, ,void main( ) int a,b, i,m,n; scanf(“%d%d”, ,#include #include ,循环结构的语句及流程控制,格式2: do 语句 while (表达式); 功能: 先执行语句,该语句一般是复合语句,被称之为循环体.当表达式的值非0时, 继续执行该语句,直到表达式的值为0. 例3: sum=1+2+3+100.(c604.c),#include void main() int i=1,sum=0; do sum=sum+i; i+; while (i=100); printf(“n sum=%d“,sum); ,#include void main() int i=1,sum=0; do sum+=i+; while (i=100); printf(“n sum=%d“,sum); ,例子4,需要定义的变量: e - 存放累加值; i - 计数; n - 存放计算阶 乘值.,计算: e1+1/1!+1/2!+.+1/100!,通常该类问题会给出一个计算误差,例如,可设定当某项的值小于10-7时停止计算。,#include void main() int i=1; double e=1.; double n=1.; do n=n*i; e=e+1./n; i=i+1; while (i=100); printf(“n e=%f“,e); ,#include void main() int i=1; double t,e=1.,n=1.; e=1.,n=1.; do n=n*i; / 计算i的阶乘 t=1./n; e=e+t; i=i+1; /为计算下一项作准备 while (t =1e-7); printf(“n e=%f“,e); ,循环结构,格式3: for (表达式1;表达式2;表达式3) 语句 也可理解为: for (循环变量初值; 循环条件; 循环变量增值) 语句,N,Y,该语句的执行过程是: (1)执行for后面的表达式1; (2)执行表达式2,若表达式2的值为真,则执行for语句的内嵌语句(即循环体语句),然后执行第(3)步,若为假,则循环结束,执行第(5)步; (3)执行表达式3; (4)返回继续执行第(2)步; (5)循环结束,执行for语句的循环体下面的语句。,程序示例,例: 计算 sum=1+2+3+100,#include void main() int i, sum=0; for(i=1;i=100;i+) sum+=i; printf(“n sum=%d“,sum); ,例: 计算: e1+1/1!+1/2!+.+1/100!,#include void main() int i ; double e=1. ; double n=1.; for (i=1;i=100;i+) n=n*i ; e=e+1./n; printf(“n e=%f“,e); ,综合例子:,用/41-1/3+1/5-1/7+近似公式计算的值直到最后一项1/n10-6,需要定义如下变量: t- 计算存放各分 项值; n-计算各项分母 的值; s-确定各项的符号; pi-存放求和的值.,参考程序,#include void main() int s; /*确定各项的符号*/ float n, t, pi; /* n:分母;t:分项值;pi:和值.*/ t=1. ; pi=0. ; n=1.; s=1; do pi=pi+s*t; n=n+2; s=-s; t=1./n; while(t1e-7); pi=pi*4; printf(“n pi=%10.6f“,pi); ,求Fibonacci数列的前40个数,这是一个古典数学问题:一对兔子从它出生后第3个月起,每个月都生一对小兔子,小兔子3个月后又生一对小兔子,假设兔子都不死,求每个月的兔子对数。该数列为: 1 1 2 3 5 8 13 21 即从第3项开始,其该项是前两项之和。,需要定义的变量: i - 计数; f1 - 计算前项值; f2 - 计算下项值.,参考程序,#include void main() int i; long int f1, f2; f1=f2=1; for (i=1; i=20; i+) printf(“%12ld %12ld“,f1,f2); if (i%2=0) printf(“n”); /*输出两次后换行*/ f1=f1+f2; f2=f2+f1; ,计算下列公式的和,要求最后一项小于10-5,通项公式:,#include void main() int p=1; /*说明符号位*/ long n; float t ,sum; t=1.0/3.0; sum=1 - 1/3.0; for( n=3 ; t=1.0e-5; n+) t=1.0/(n*n+1); sum=sum+p*t ; p=-p; printf(“n sum= %f n”,sum); ,输入30个字符,分别统计其中数字、字母及其它字符的个数。,main() char c; int k; int n1=0,a1=0,u1=0; /*分别存放数字、字母及其它字符个数*/ printf(“n Input 30 chars:”); for (k=1; k=A ,求 s=1+(1+2)+(1+2+3)+,并输出其结果,#include void main() long s=0,sn=0; int k, n; printf(“n Input n=“); scanf(“%d”, ,百钱买百鸡问题,大公鸡5钱一只,母鸡3钱一只,雏鸡一钱买3只,有几种买法,求出所有解。,参考程序,#include void main() int x,y,z; printf(“n 大公鸡 母鸡 雏鸡“); for (x=0; x20; x+) for (y=0;y34;y+) z=100-x-y; if (z%3!=0) continue; if (5*x+3*y+z/3=100) printf(“n%8d %8d %8d“,x,y,z); 循环次数为20*34次,0 25 75 4 18 78 8 11 81 12 4 84,输出以下图案,* * * * * * *,#include void main() int i , j; for (i=1 ; i0 ; i-) for (j=1; j=40-i ; j+) printf(“ ”); for (j=1; j=2*i-1;j+) printf(“*”); printf(“n”); ,输出九九乘法表,#include void main() int k,m; for( k=1; k=9; k+) for (m=1; m=k; k+) printf(“%d*%d=%-2d “,m,k,m*k); printf(“n”); ,求1000 2000之间的素数,参考程序,#include #include void main() int i,j,k,m; printf(“10002000之间的素数:n”); for (i=1000; i2000; i+) k=0; /*用于标识是否素数*/ m= sqrt(i); for (j=2; j= m; j+) if (i%j=0) k=1; break; if (k=0) printf(“%8d“,i); ,输入两个正整数,求它们的最大公约数。 分析:求最大公约数可以用“辗转相除法”,方法如下: (1)比较两数,并使m大于n。 (2)将m作被除数,n作除数,相除后余数为r。 (3)将mn,nr; (4)若r=0,则m为最大公约数,结束循环。若r0,执行步骤步骤(2)和(3) 根据此分析画出流程图,如图所示。,说明: 求两个数的最小公倍数,只需将两数相乘除以最大公约数,即m1*n1/m。由于在求解过程中,m和n已经发生了变化,故可以将其保存在另外两个变量m1和n1中,#include void main( ) int m,n,r,t; int m1,n1; printf(“请输入两个正整数:n”); scanf(“%d,%d”, ,求sn=a+aa+aaa+aaaaa+aaaaa, 其中a是一个数字。例如:2+22+222+2222+22222(此时有5项),数字a和项数n由键盘输入。 分析:需要定义如下变量: 数字 a; 项数 n; 计数 count(1n); 分项,#include void main() int n,count=1; long sn=0,tn=0,a; printf(“n请输入a,n:“); scanf(“%ld,%d“, ,#include void main() int k; float s=0; for(k=1; k=100;k+) s=s+k; for(k=1;k=50;k+) s=s+k*k; for(k=1;k=10;k+) s=s+1.0/k; printf(“n sum=%fn”,s); ,#include void main() int k; float s=0; for(k=1; k=100;k+) s=s+k; if(k=50) s=s+k*k; if(k=10) s=s+1.0/k; printf(“n sum=%fn”,s); ,打印出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如,153是一个“水仙花数”,因为153=13+53+33,参考程序,#include void main() int i, j, k, n; for(n=100; n1000; n+) i=n/100; j=n/10-i*10; k=n%10; if (n= =i*i*i+j*j*j+k*k*k) printf(“%4d”, n); printf(“n”); ,找出1000之内的完数.所谓完数即是它的因子之和等于该数。如: 6=1+2+3。并按下列格式输出其因子: its factors are 1,2,3,#include void main() int m,n,s; for (m=2;m1000;m+) s=0; for (n=1;nm;n+) if (m%n= =0) s=s+n; if (s= =m) printf(“n its factors are 1”); for (n=2; nm; n+) if (m%n= =0) printf(“ ,%d ”,n); ,有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13.求出这个数列的前20项之和。 分析:注意分子与分母的变化规律,可知后项分母为前项分子,后项分子为前项分子分母之和。,main( ) int n, t, number=20; float a=2.0,b=1.0,s=0; for(n=1;n=number;n+) s=s+a/b; t=a; a=a+b; b=t; printf(“总和=%9.6fn”,s); ,一球从100米高度自由落下,每次落地后反弹 回原高度的一半,再落下。求在第10次落地时,共经过多少米?第10次反弹多高? #include void main() int i; float n=50,s=100; for(i=2; i=10; i+) s+=2*n; n/=2.0; printf(“n 共经过s=%f, 第10次反弹高度 n=%fn”,s,n); ,猴子第一天摘下若干桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉了一半,又多吃了一个,以后每天早上都吃了前一天剩下的一半零一个。到第10天早上再想吃时,发现只剩下一个桃子了。求第一天共摘多少个桃子。采取逆向思维的方法,从后往前推。 分析:假设s为剩下的,则s+1为前一天的一半,而2(s+1)为前一天的总个数。依次类推,10天前的桃子数即可算出.,#include void main ( ) int s=1, i=9; for ( ; i=1;i-) s=(s+1)*2; printf(“s=%dn”,s); ,用迭代法求,迭代公式:,精度要求:,#include void main() float a , x , x0 ; printf(“n Input a=” ); scanf(“%f”, ,f(x)=2x3-4x2+3x-6 f1(x)=6x2-8x+3 需要定义的量: 存放函数值 f,f1; 近似根 x0,x1; 关键3要素: 初值、迭代公式、精度要求,用牛顿迭代法求方程 在1.5附近的实根。 迭代公式:xk+1=xk-f(xk)/f(xk) 迭代到: |xk+1-xk|=10-5,说明:在计算过程中,要用x的新值x1替换其原值x0,再使用牛顿迭代公式由新的x0产生下一轮的x1。由于在进入循环后的第1条语句为x0 = x1,故应将迭代初值赋给x1而非x0。,#include void main() float x0, x1=1.5, f, f1; do x0=x1; f=2*x0*x0*x0-4*x0*x0+3*x0-6; f1=6*x0*x0-8*x0+3; x1=x0-f/f1; while ( fabs(x1-x0) =1.e-5); printf(“n x=%10.7f“,x1); ,用二分法求,方程在(-10,10)之间的实根。,#include “math.h” void main() float a,b,c,f,f1; printf(“n 请输入两端点值a,b:”); scanf(“%f,%f”, printf(“n 在(a,b)中的实根=%fn”,c); ,两个乒乓球队进行比赛,各出三人甲队为A、B、C.乙队为X、Y、Z三人.已经抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比. 编程序找出三对赛手的名单.,#include void main() char i, j, k; for ( i=X; i=Z; i+) for ( j=X; j=Z; j+) if(i!=j) for (k=X;k=Z;k+) if(i!=k ,

    注意事项

    本文(C语言课件第5章PPT.ppt)为本站会员(本田雅阁)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开