欢迎来到得力文库 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
得力文库 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    C语言循环结构程序设计.ppt

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

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

    C语言循环结构程序设计.ppt

    ,C语言程序设计,学习目标,熟练三种基本的循环控制语句,掌握循环的嵌套,第5章循环结构程序设计,能够应用基本的循环语句编写复杂的程序,课程回顾,单分支结构 if(条件) 语句1; 语句2;双分支结构 if(条件) 语句1; else 语句2;多分支结构 if (表达式1) 语句 else if (表达式) 语句 else 语句n,第5章循环结构程序设计,课程回顾,#include main() int x=1,a=0,b=0; switch(x) case 0: b+;break; case 1: a+; case 2: a+;b+;break; default: a+; printf("a=%d,b=%dn",a,b); getch();,程序运行结果:,第5章循环结构程序设计,void main() int age; printf("请输入年龄:"); scanf("%d",提高用户友好界面,限制年龄范围,无分号,作业点评,循环的必要性 1-1,int result1,result2,result3;int result4,result5;result1 = 1 * 10;printf("1 × 10 %d n",result1);result2 = 2 * 10;printf("2 × 10 %d n",result2);result3 = 3 * 10;printf("3 × 10 %d n",result3);result4 = 4 * 10;printf("4 × 10 %d n",result4);result5 = 5 * 10;printf("5 × 10 %d n",result5);,1 × 10 102 × 10 203 × 10 304 × 10 405 × 10 50,输出结果,重复语句,循环的必要性 2-2,1 × 10 = 102 × 10 = 203 × 10 = 304 × 10 = 405 × 10 = 50,0 + 1,1 + 1,2 + 1,上个数字 + 1,.,重复 (上个数字 +1) × 10,5.1 while语句,基本形式,一般为关系表达式或逻辑表达式,也可以是C语言其他类型的合法表达式 用来控制循环体是否执行,称为内嵌语句,可以是基本语句、控制语句,也可以是复合语句是循环重复执行的部分,5.1 while语句,语句流程,while (表达式) 循环体语句;,1、循环体如果包含一个以上的语句,必须使用复合语句形式。2、在循环体中,必须有使循环条件趋向于不满足(假)的语句。3、先判断表达式,后执行语句。,程序分析案例1,#include "stdio.h" int main() int n=9; n>6是表达式 while(n>6) 意思应该为只要n不小于6,就一直执行while后面的这一条语句; 大括号括起来的应该为内嵌语句 n-; 因为大于一条所以用括号包起来 printf("%d",n); 成为一条复合语句 return 0;,程序运行结果:,5.1 while语句,5.1 while语句,实例分析,用while循环求1100的累加和。,sum=1+2+100;,分析,首先设置一个累计器sum,其初值为0,利用sum += n来计算(n依次取1、2、100),只要解决以下3个问题即可: (1)将n的初值置为1; (2)每执行1次“sum += n;”后,n增1; (3)当n增到101时,停止计算。 此时,sum的值就是1100的累计和。,s=1+2+3+4+.100;s=1+2;s=s+3;s=s+4; s=s+100;,s=s+1;s=s+2;,s=s+n;,#include "stdio.h"/用while循环求1100的累加值,计科1809安逸/int main(void) int sum=0,n=0;/n=0|n=1都是一样的/ while(n<101) /这是一个限制条件/ sum+=n; /n+和sum+=n的先后顺序很重要/ n+; /第一次计算值是0,无效/ /只要限制条件的值没达到就一直循环/ printf("%d",sum); return 0; /结果等于5050/,5.1 while语句,实例分析,用while循环求1100的累加和。,#include int main() int sum = 0 , i = 1; while(i <= 100) sum = sum + i; i +; printf("sum = %dn", sum); return 0;,运行结果如下:sum=5050,1、如果去掉循环体中的大括号,执行过程将会怎样变化?2、在循环体中,使循环条件趋向于不满足(假)的语句是哪条?,1、求1-5的整数和 2、求1-10的偶数和,#include "stdio.h"/用while循环求15的整数和,计科1809安逸/int main() int sum=0,n=0; while(n<6) sum+=n;n+; printf("%dn",sum); return 0;/结果等于15/,#include "stdio.h"/用while循环求110的偶数和,计科1809安逸/int main() int sum=0,n=0; while(n<=10) sum+=n;n+=2; printf("%dn",sum); return 0;/结果等于30/,#include "stdio.h"/用while循环求1100的奇数和,计科1809安逸/int main() int sum=0,n=0,sum1=0,sum2=0,n2=0; while(n<=100) sum+=n;n+; while(n2<=100) sum2+=n2; n2+=2; sum1=sum-sum2; printf("%dn",sum1); return 0;/结果等于2500/,注意事项,5.1 while语句,如果while的 (表达式) 值为0,则循环体一次也不执行 (例如当i的初值=101) 。在循环体中必须有使循环趋向结束的操作,否则循环将无限进行(死循环)。 在循环体中,语句的先后位置必须符合逻辑,否则会影响运算结果。,5.2 do-while语句,基本形式,do 语句 while(表达式);,执行过程: 它先执行循环体中的语句,然后再判断条件是否为真,如果为真则继续循环;如果为假,则终止循环。,语句流程,5.2 do-while语句,do 循环体语句;while (表达式);,至少执行一次,1、循环体如果包含一个以上的语句,必须使用复合语句形式。2、在循环体中,必须有使循环条件趋向于不满足(假)的语句。3、先执行循环体语句,后判断表达式的值。,程序分析案例2,#include "stdio.h" int main() int a=3; do printf(“%dn”,a-=2);该处参与a的赋值 while(!(-a);这里的非-3是什么意思?return 0;s,程序运行结果:,5.2 do-while语句,sum= 55,求110的累加和。,include void main() int i,sum; i=1; sum=0;/定义成1可以少循环一次 do sum=sum+i; i+; while (i<=10); printf(“sum=%dn”,sum);,1、如果去掉循环体中的大括号,执行过程将会怎样变化?语句错误不能执行。2、在循环体中,使循环条件趋向于不满足(假)的语句是哪条?i+,5.2 do-while语句,案例分析,while语句: 先判断,后执行。 程序执行次数可能为0 do-while语句: 先执行,后判断。 程序至少被执行1次,5.2 do-while语句,while、do-while的区别,实例分析,用dowhile循环求n!。,5.2 do-while语句,算法描述:(1)定义变量n,接受用户的输入;(2)定义累乘器变量multi,multi 1;(3)定义变量i,i 1;(4)如果 n < 0,则给出相应的提示信息; 否则,如果 n = 0,则直接输出变量multi的值1; 否则,执行第56步。(5)如果i <= n,则循环执行以下语句 multi multi * i,实现累加功能; i +;(6)输出multi的值。,#include "stdio.h"/用while循环求n,计科1809安逸/int main() int n;int multi=1,i=1;puts("请输入一个不小于0的整数:");scanf("%d",/答案恒定为1703732有错误要寻找/,#include "stdio.h"/用dowhile循环求n,计科1809安逸/int main() int n , i = 1; long int multi=1; printf("please input n(n>=0):"); scanf("%d", ,实例分析,5.2 do-while语句,问题描述:猜数游戏。要求猜一个介于110之间的数字,根据用户猜测的数与标准值进行对比,并给出提示,以便下次猜测能接近标准值,直到猜中为止。,思考?,main()int number=5,guess; printf ("猜一个介于 1 与 10 之间的数n"); do printf("请输入您猜测的数:"); scanf("%d",猜一个介于 1 与 10 之间的数请输入您猜测的数:3太小请输入您猜测的数:5您猜中了! 答案为 5,输入数字 5 后,dowhile 循环中的条件为假, 输出结果消息后,程序终止。,#include "stdio.h"/用dowhile循环编写猜数字游戏,计科1809安逸/int main()int number,guess;puts("1号选手请输入一个介于1100中间的整数:"); scanf("%d",实例分析,5.2 do-while语句,编写程序,找出满足条件1+2+3+n<500的最大值?,#include int main() int n=1,sum=0; do sum=sum+n;n+; while(sum<500); printf("n= %dn",n-2); return 0;循环次数和累加值不同,实例分析,5.2 do-while语句,分析: 后一项分子为前一项分子与分母之和; 后一项的分母为前一项的分子算法描述:(1)定义变量i=1,a=1,b=2,sum=0;(2)定义累加器变量sum,sum 0;(3)如果i<=10循环执行以下语句 sum=sum+b/a; b=a+b; a=b-a; i+;(6)输出sum的值。,设有一个分数数列2/1+3/2+5/3+8/5+13/8+21/13?编程求这个数列的前10项和,实例分析,5.2 do-while语句,设有一个分数数列2/1+3/2+5/3+8/5+13/8+21/13?编程求这个数列的前10项和,#include int main() int a=1,b=2,i=1; float sum=0; do sum=sum+(float)b/a;b=a+b;a=b-a; i+; while(i<=10); printf(“sum= %fn",sum); return 0;,课堂小结,while循环dowhile循环while、dowhile 循环的区别 for语句,while语句:先判断,后执行。执行次数可能为0 do-while语句:先执行,后判断。至少执行1次,1、编写一C程序,实现输出1100之间的偶数和,奇数和。2、编写一C程序,实现求1100中所有被3整除但是不能被7整除的数的和。3、编写一C程序,实现任意从键盘输入数字,累加求和,直到和大于100为止。4、编写程序实现:从键盘上输入密码,如果等于8848则显示“loading”,并退出循环;否则显示“input again!”。如果输入超过3次,则退出循环并结束程序(密码ikeyword,输入次数icount)。,课后作业,学习目标,熟练掌握for循环控制语句,掌握循环的嵌套,能够应用基本的循环语句编写复杂的程序,5.3 for语句,课程回顾,有哪3种循环结构? while、do while、for循环 while、dowhile循环的语句格式,while (表达式) 循环体语句;,do 循环体语句;while (表达式);,5.3 for语句,课程回顾,while、dowhile的区别 while语句: 先判断,后执行。 循环体执行次数可能为0次 do-while语句:先执行,后判断。 循环体语句至少被执行1次,5.3 for语句,课程回顾,#include "stdio.h" int main() int n=9; while(n>6) n-; printf("%d",n); return 0;,程序运行结果:,5.3 for语句,课程回顾,#include "stdio.h" int main() int a=3; do printf(“%dn”,a-=2); while(!(-a);return 0;,程序运行结果:,5.3 for语句,课程回顾,#include int main() int v1=0,v2=0; char ch ; while(ch=getchar()!='#') switch(ch) case 'a': case 'h': case '0':v2+; default:v1+; printf("%d,%dn",v1,v2);,程序运行结果:,5.3 for语句,如果从键盘上输入china#回车,则输出结果为,5.3 for语句,基本形式,for(表达式1; 表达式2; 表达式3) 语句,语句流程,5.3 for语句,(1)先求解表达式1;(2)求解表达式2,若其值为真,则 执行循环体语句,然后执行第(3)步;若为假,则结束循环,转到第(5)步;(3)求解表达式3;(4)转向步骤(2);(5)循环结束,执行for语句下面的一个语句。,实例分析,5.3 for语句,求110的累加和。,include void main() int i,sum; sum=0; for (i=1;i<=10;i+) sum=sum+i; printf(“sum=%5dn”,sum);,sum= 55,1 求15的累加和.2 求110的奇数和.3 求110的偶数和.,5.3 for语句,省略表达式1、2、3,即: for ( ; ; )就等同于:while (1),会无限循环(死循环)省略表达式1和表达式3,即: for(;表达式2;)就等同于:while( 表达式2 )省略表达式2,即: for(表达式1; ;表达式3)就等同于:表达式1; while(1)表达式3;,注意事项,分号分隔符不能省略,实例分析,5.3 for语句,#include "stdio.h " int main() int i,x=0;for(i=0;i<2;i+) x+; x+; printf("x=%dn",x); return 0;,程序运行结果:,实例分析,5.3 for语句,#include "stdio.h " int main() int s,i; for(s=0,i=1;i<3;i+,s+=i) printf("%dn",s); return 0;,程序运行结果:,实例分析,5.3 for语句,程序运行结果:,#include "stdio.h "int main( ) int a=0,i; for(i=1;i<5;i+) switch(i) case 0: case 3: a+=2; case 1: case 2: a+=3; default: a+=5; printf("%dn",a); return 0;,实例分析,5.3 for语句,#include int main()int n;char ch;for(n=0;(ch=getchar()!='n'n+);printf("该字符输入个数为%dn",n);return 0;,输入一串字符,统计输入字符的个数,实例分析,输出Fibonacci数列1、1、2、3、5、8、13的前20项,要求每输出5项后换行。,5.3 for语句,#include int main() int f1,f2,f,i; f1=f2=1; printf("%10d%10d",f1,f2); /前2项先输出 for(i=3; i<=20; i+) /迭代从第3项开始 f=f1+f2; f1=f2; f2=f; printf("%10d",f);if(i%5=0) /一行输出够五个,就换行printf("n"); return 0; ,学习目标,理解break、continue语句,掌握循环的嵌套,能够应用基本的循环语句编写复杂的程序,5.4 循环的嵌套,课程回顾,有哪3种循环结构? while、do while、for循环 while、dowhile循环的语句格式,while (表达式) 循环体语句;,do 循环体语句;while (表达式);,5.4 循环的嵌套,课程回顾,for语句格式 for(表达式1;表达式2;表达式3) 语句 while、dowhile的区别 while语句: 先判断,后执行。 循环体执行次数可能为0次 do-while语句:先执行,后判断。 循环体语句至少被执行1次,5.4 循环的嵌套,课程回顾,#include "stdio.h" int main( ) int i; for ( i=0; i<3; i+ ) switch ( i ) case 1 : printf("%d ", i); case 2 : printf("%d ", i); default : printf("%d ", i); printf("n"); return 0; ,程序运行结果:,5.4 循环的嵌套,课程回顾,#include int main() int i,j; for(i=0,j=1;i<=j+1;i+=2,j+) printf("%d n",i); return 0;,程序运行结果:,5.3 for语句,5.4 循环的嵌套,如果将一个循环语句放在另一个循环语句的循环体中,就构成了循环的嵌套。内嵌的循环结构内还可嵌套循环结构,构成多层嵌套。3种循环语句都可以在循环嵌套中使用。,5.4 循环的嵌套,实例分析,阅读下列程序,分析运行结果?,#include int main() int k,j,s=0 ; for(k=2;k<6;k+,k+) for(j=k;j<6;j+) s+=j; printf("%dn",s); ,程序运行结果:,5.4 循环的嵌套,实例分析,分析:几行?几列? 每行有几个*,#include int main() int i,j; for (i=1;i<=4;i+) for (j=1;j<=2*i-1;j+) printf("*"); printf("n"); return 0;,5.4 循环的嵌套,实例分析,分析:( 行数)几行?几列? 每行有几个空格 每行有几个*?,#include int main() int i,j,k; for (i=1;i<=4;i+) for (j=1;j<=4-i;j+) printf(" "); for(k=1;k<=i;k+) printf("*"); printf("n"); return 0;,问题描述:用“*”输出一个菱形图案,图案如下:  * * * * * * * * * * * * * * * * * * * * * * * * *,voidmain()int i,j,k; for(i=1;i<=4;i+) for(j=1;j<=4-i;j+) printf(" "); for(k=1;k<=2*i-1;k+) printf("*"); printf("n"); for(i=1;i<=3;i+) for(j=1;j<=i;j+) printf(" "); for(k=1;k<=7-2*i;k+) printf("*"); printf("n"); ,输出: * * * * * * * * * * * * * * *,* * * * * * * * *,控制打印的行数,控制每行打印的空格数,控制每行打印的*号数,控制打印的行数,控制每行打印的空格数,控制每行打印的*号数,5.4 循环的嵌套,5.4 循环的嵌套,思考,#include "stdio.h"main() int i,j;for(i=0;i<8;i+) for(j=0;j<8;j+) if(i+j)%2=0) printf(" "); else printf("%c%c",219,219); printf("n"); ,编写一C程序,打印国际象棋棋盘,如图所示:,5.4 循环的嵌套,实例分析,输入n的值,计算并输出1n的阶乘之和。,5.4 循环的嵌套,实例分析,编写程序解决搬砖问题:36块砖,36人搬,男人搬4块,女人搬3块,2个小孩抬一块,要求一次搬完,问需要男、女、小孩各多少人?,#include int main() int m,w,c;printf("%10s%10s%10sn","mem","wowen","children"); for(m=1;m<9;m+) for(w=1;w<12;w+) c=36-m-w; if(m*4+w*3+c/2.0=36) printf("%10d%10d%10dn",m,w,c); return 0; ,学习目标,熟练break和continue语句的用法,3. 5 转移控制语句,能够应用break和continue语句解决实际问题,课程回顾,有哪3种循环结构? while、do while、for循环 while、dowhile循环的语句格式,while (表达式) 循环体语句;,do 循环体语句;while (表达式);,5. 5 转移控制语句(必抄),课程回顾,for语句格式 for(表达式1;表达式2;表达式3) 语句 while、dowhile的区别 while语句: 先判断,后执行。 循环体执行次数可能为0次 do-while语句:先执行,后判断。 循环体语句至少被执行1次,5. 5 转移控制语句,课程回顾,循环嵌套(过程:从外到里,一次外层,n次内层(穷尽内层)再跳到外边) 如:while(表达式) for(表1;表2;表3) 语句; . . ,内嵌循环,5. 5 转移控制语句(必抄),实例分析,阅读下列程序,分析运行结果?,#include int main() int i,j,m=0; for (i=1;i<=15;i+=4)for (j=3;j<=19;j+=4) m+; printf("%dn",m); return 0;,程序运行结果:,5. 5 转移控制语句,实例分析,阅读下列程序,分析运行结果?,#include int main() int k,j,s ; for(k=2;k<6;k+,k+) s=1; for (j=k;j<6;j+=2) s+=j; printf("%dn",s);,程序运行结果:,5. 5 转移控制语句,实例分析,阅读下列程序,分析运行结果?,#include int main() int k,j,s ; for(k=2;k<6;k+,k+) s=0; for (j=k;j<6;j+=2) s+=j; printf("%dn",s);,程序运行结果:4,5. 5 转移控制语句,5.5.1 break语句,基本形式,break语句除用于退出switch结构外,还可用于由while、dowhile和for构成的循环结构中。当执行循环体遇到break语句时,break所在循环将立即终止,从循环语句后的第一条语句开始继续往下执行。break语句的一般形式如下: break ;,5.5.1 break语句,语句流程,5.5.1 break语句,实例分析,阅读下列程序,分析运行结果,#include main() int i=1,a=0; while(i<20) if(i%10)=0) break; else i-; i+=11; a+=i; printf(“a=%dn",a);return 0;,程序运行结果:,#include int main() int i,j,x=0; for(i=0;i<2;i+) x+; for(j=0;j<=3;j+) if(j%2) break; x+; x+;printf("x=%dn",x);return 0; ,程序运行结果:,阅读下列程序,分析运行结果,5.5.1 break语句,实例分析,5.5.1 break语句,实例分析,算法描述:(1)接收用户输入的m的值;(2)循环变量赋初值i 2, 循环条件i <= m-1,循环变量i+,循环执行以下语句:如果m能被i整除,则结束循环。(3)循环结束后判断m与i的关系,如果m等于i,则输出m是素数。否则输出m不是素数。,判断任意一个数是否为素数。,5.5.1 break语句,实例分析,#include int main() int m,i; scanf("%d",5.5.1 break语句,关于break语句的几点说明,break语句可以改变程序的控制流break语句用于do-while、while、for循环中时,可使程序终止循环而执行循环后面的语句 break语句通常在循环中与条件语句一起使用。若条件值为真,将跳出循环,控制流转向循环后面的语句如果已执行break语句,就不会执行循环体中位于 break 语句后的语句在多层循环中,一个break语句只向外跳一层,5.5.2 continue语句,基本形式,continue语句与break语句不同,当在循环体中遇到continue语句时,程序将不执行continue语句后面尚未执行的语句,开始下一次循环,即只结束本次循环的执行,并不终止整个循环的执行。continue语句的一般形式如下:continue ;,5.5.2 continue语句,语句流程,该语句不被执行,while() continue; ,while() break; ,跳出整个循环,继续下一次循环,5.5.2 continue语句,结束整个循环,结束本次循环,5.5.2 continue语句,实例分析,#include "stdio.h " int main() int i=0,s=0; do if (i%2) i+; continue; i+; s += i; while( i<7 ); printf("s=%dn", s); return 0; ,程序运行结果:,5.5.2 continue语句,实例分析,把100120之间不能被3整除的整数输出。,include int main()int n;for(n=100; n<=120; n+)if(n%3=0)continue;printf("%d ",n);return 0;,5.5.2 continue语句,实例分析,在半径为1-10的圆中,输出面积超过100的半径和面积。,算法描述:(1)定义常量PI,值为3.14;(2)定义循环变量r和存储圆的面积s;(3)循环变量赋初值r 1,循环条件r<=10 循环语句: S=PI*r*r; 判断s<=100,则执行continue语句,结束本次循环 r和s的值。,5.5.2 continue语句,实例分析,#include #define PI 3.14int main() int r; float s; for(r=1; r<=10; r+) s=PI*r*r; if(s<=100) continue; printf("r=%d,s=%.2fn",r,s); return 0;,

    注意事项

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

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




    关于得利文库 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

    © 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

    黑龙江省互联网违法和不良信息举报
    举报电话:0468-3380021 邮箱:hgswwxb@163.com  

    收起
    展开