欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    第06章 循环结构程序设计.docx

    • 资源ID:18568104       资源大小:32.65KB        全文页数:24页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

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

    第06章 循环结构程序设计.docx

    1、第06章 循环结构程序设计本章重点: while语句 do-while语句 for语句 break和continue语句第六章 循环结构程序设计6.1 while语句一、格式while (表达式) /循环体二、举例最简单的例子( 输出5行星号,输出110十个数或它们的平方)需分析的例子( 累加,累乘,类除,同时累加累乘)稍复杂的例子( 循环嵌套,如:输出小于100的所有质数,求两个数的最大公倍数或最小公约数等)复杂算法例子( 涉及到数组等的例子,如杨辉三角等)1. 求s=1 + 2 + 3 + + 100的程序main()int i,s;s=0;i=1While (ij) ;s=s+i+j;i

    2、=i+1;j=j-1;printf(“s=%d”,s);getch();3. 思考下面的程序会怎么样?main()int i,s;s=0;i=1While (i=100) ;s=s+i;i=i+1printf(“s=%d”,s);getch();三、说明1. 循环体一定要括起来,否则只为第一句。2. 循环体中应有使循环趋于结束的语句,否则可能是死循环 6.2 do-while语句一、格式do/循环体 while (表达式) ;二、举例例. 求s=1 * 2 * 3 * * 10的程序main()int i,m;m=1;i=1dom=m*i;i=i+1 While (i=10) ;printf(

    3、“m=%d”,m);getch(); 三、说明1. while(表达式)的后面有“;”2. 一般使用while和for循环较多,do-while循环很少使用(1) 6.3 for语句一、格式for (表达式1 ; 表达式2 ; 表达式3)/循环体 表达式1:一般为赋值表达式,给循环变量赋初值;表达式2:一般为关系表达式或逻辑表达式,循环条件;表达式3:一般为赋值表达式,给循环变量增量或减量。上述格式通常又可以写为以下格式for (循环变赋初值 ; 循环条件 ; 循环变量增加)/循环体 执行过程:首先计算表达式1,然后计算表达式2,若表达式2为真,则执行循环体;否则,退出f o r循环,执行f

    4、o r循环后的语句。如果执行了循环体,则循环体每执行一次,都计算表达式3,然后重新计算表达式2,依此循环,直至表达式2的值为假,退出循环。二、举例1. 求s=1! + 2! + 3! + + 10!的程序main()int i,m,s;m=1; s=0;for (i=1; i=10; i+)m=m*i;s=s+i;printf(“s=%d”,s);getch();2. 从键盘输入一个整数,判断它是否为质数。main()int i,x;printf(please input x: );scanf(%d , &x);for (i=2; i100)exit(0);printf(“s=%d”,s);g

    5、etch();例: “循环变量赋初值”表达式的各种变化main()int i,j,s;for (i=1,j=10,s=0; i=j; i+,j-)s=s+i+j;printf(“Yes”);getch();6.4 break和continue语句有时,我们需要在循环体中提前跳出循环,或者在满足某种条件下,不执行循环中剩下的语句而立即从头开始新的一轮循环,这时就要用到break和continue语句。一、break语句在前面学习switch语句时,我们已经接触到break语句,在case子句执行完后,通过break语句使控制立即跳出switch结构。在循环语句中, break语句的作用是在循环体

    6、中测试到应立即结束循环时,使控制立即跳出循环结构,转而执行循环语句后的语句。当break处于嵌套结构中时,它将只跳出最内层结构,而对外层结构无影响。例 从键盘输入一个整数,判断它是否为质数。main()int i,x;printf(please input x: );scanf(%d , &x);for (i=2; i=x-1; i+)if (x%i=0) break;if (ix)printf(“No”);elseprintf(“Yes”);getch();二、continue语句continue语句只能用于循环结构中,一旦执行了continue语句,程序就跳过循环体中位于该语句后的所有语句

    7、,提前结束本次循环周期并开始新一轮循环。同break一样, continue语句也仅仅影响该语句本身所处的循环层,而对外层循环没有影响。例 输出100 200 之间不能被3整除的数。main()int x;for (x=100; x=200; x+)if (x%3=0) continue ;printf(“no”);getch();三、说明1. break能用于循环语句和switch语句中,continue只能用于循环语句中。2. 循环嵌套时,break和continue只影响包含它们的最内层循环,与外层循环无关。6.5 程序举例例1 从键盘输入一个数,判断其是否为素数/*方法一*/main(

    8、)int i,x;printf(please input x: );scanf(%d , &x);for (i=2; i=x-1; i+)if (x%i=0) printf(“no”);exit(0);printf(“Yes”);getch();/*方法二*/main()int i,x;int f=0;printf(please input x: );scanf(%d , &x);for (i=2; i=x-1; i+)if (x%i=0) f=1;if (f=0)printf(“Yes”);elseprintf(“no”);getch();/*方法三*/main()int i,x;print

    9、f(please input x: );scanf(%d , &x);for (i=2; i=x-1; i+)if (x%i=0) break;if (ix)printf(“No”);elseprintf(“Yes”);getch();例2 输出100-200之间的所有素数main()int i,x;for (x=100; x=200; x+)for (i=2; i=x-1; i+)if (x%i=0) break;if (i=x)printf(“%dn”,x);getch();例3 求100-999之间的水仙花数 如:153=13+53+33main()int x, a, b, c;for

    10、(x=100; x=999; x+)a=x/100;b=(x-a*100)/10;c=x-a*100-b*10if (a*a*a+b*b*b+c*c*c=x) printf(“%dn”,x);getch();例4 /4 = 1-1/3+1/5-1/7+. 求。main()long i;double s,pi;for (i=1; i=100000; i+)if (i%2!=0)s=s+1.0/(2*i-1);elses=s-1.0/(2*i-1);pi=4*s;printf(“pi=%1.14f”,pi);getch();例5 求S=1+(1+2)/2!+(1+2+3)/3!+ +(1+2+10

    11、)/10!main()int i, j, s, m;float sum=0;for (i=1; i=10; i+)s=0; m=1;for (j=1; j=i; j+)s=s+j;for (j=1; j=i; j+)m=m*j;sum=sum+(s*1.0)/m;printf(“sum=%f”,sum);getch();例6其中a和n由键盘输入。main()long a, n, s;long t, iprintf(please input a,n: );scanf(%ld,%ld, &a, &n);t=a; s=0;for (i=1; it)t=m; m=n; n=t;for (i=m; i=

    12、1; i-)if (m%i=0 & n%i=0) maxgys=i;break;for (i=n; i=m*n; i+)if (i%m=0 & i%n=0) mingbs=i;break;printf(“maxgys=%dn” , maxgys);printf(“mingbs=%dn” , mingbs);getch();例8 把一个数分解成质因数乘积的形式main()long i, x, s=1, m;clrscr();printf(please input x: );scanf(%ld, &x);m=x;printf(%ld=1,x); for (i=2; i=x; ) if (m%i=0

    13、) printf(*%ld,i);m=m/i; else i=i+1; getch();例9 哥德巴赫猜想问题(把一个偶数分解成两个素数之和)/*方法一*/main()int i,x, a,b;printf(please input x: );scanf(%d , &x);for (i=3; i=x/2-1; i+)a=i; b=x-Iif (pd(a)=1 & pd(b)=1) printf(“%d=%d+%dn”, x,a,b);getch();int pd(int x)int I;for (I=2; Ix-1; I+)if (x%I=0) break;if (I=x) return 1;

    14、elsereturn 0;/*方法二*/main()int i, j, x, a, b;int f1,f2;printf(please input x: );scanf(%d , &x);for (i=3; i=x/2-1; i+)a=i; b=x-if1=0; f2=0;for (j=2; ja-1; j+)if (a%j=0) f1=1;break;for (j=2; jb-1; j+)if (b%j=0) f2=1;break;if (f1=1 & f2=1) printf(“%d=%d+%dn”, x,a,b);getch();例10 用二分法求方程3x3 - 4x2 + 3x 6 =

    15、 0在1.5附近的根分析:方程在12之间有一个根,在-2-3之间也有有一个根,现在求12之间的根,可用二分法求之。main()float x1,x2,y1,y2;float x, y;x1=1; y1=3*x1*x1*x1-4*x1*x1+3*x1-6;x2=2; y2=3*x2*x2*x2-4*x2*x2+3*x2-6;x=(x1+x2)/2;y= 3*x*x*x-4*x*x+3*x-6;while (y-0.000000001)if (y0) x2=x; y2=y;elsex1=x; y1=yx=(x1+x2)/2;y= 3*x*x*x-4*x*x+3*x-6;printf(“x=%2.9

    16、lf y=%2.9lf”, y);getch();例11 百钱买百鸡问题,(100元买100只鸡,其中公鸡每只3元,母鸡每只1元,小鸡三只一元,试问买得公鸡、母鸡和小鸡各多少只分析:设应买公鸡X只,母鸡Y只,小鸡Z只, 则:X + Y + Z = 1003 * X + Y + Z / 3 = 100main()int x, y, z;for (x=1; x=33; x+)for (y=1; y=100; y+) for (z=1; z=100; z+)if (x+y+z=100 & 3*x+y+z/3.0=100)printf(“%5d,%5d,%5dn”, x, y, z);getch();

    17、本题用到了穷举法,穷举法是穷举所有可能情形,并从中找出符合要求的解的一种方法。穷举法还用在软件测试、密码破解等多个方面。穷举法实际上利用了计算机运算速度快、“不怕疲倦”的优点。例12 爱因斯坦的阶梯问题。设有一阶梯,每步跨2阶,最后余1阶;每步跨3阶,最后余3阶;每步跨4阶,最后余3阶;每步跨5阶,最后余4阶;每步跨6阶,最后余5阶;每步跨7阶时,正好到阶梯顶。问共有多少阶梯?思考:设阶梯数为X则:X % 2 = 1X % 3 = 2X % 4 = 3X % 5 = 4X % 6 = 5X % 7 = 0main()int x, y, z;for (x=7; x=33; x+)if ( x%2=1 & x%3=2 & x%4=3 &x%5=4 & x%6=5 )printf(“%5dn”, xz);getch();作业题1 输出11000之内所有的完数。2 一球从100m高度自由落下,每次落地后反弹回原高度的一半,在落下。问第10次落地时,共经过多少米?第10次反弹多高?3 求数列 前20项的和。4 用牛顿迭代法求方程2x3 - 4x2 + 3x 6 = 0 在1.5附近的根。5 搬砖问题:36块砖,36人般;男搬4,女搬3,两个小孩抬一砖。要求一次全搬完,问男、女、小孩个若干?


    注意事项

    本文(第06章 循环结构程序设计.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

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




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开