6.第六章 循环控制

上传人:无*** 文档编号:239644855 上传时间:2024-02-09 格式:PPT 页数:38 大小:313KB
返回 下载 相关 举报
6.第六章 循环控制_第1页
第1页 / 共38页
6.第六章 循环控制_第2页
第2页 / 共38页
6.第六章 循环控制_第3页
第3页 / 共38页
点击查看更多>>
资源描述
实验实验2-22-2:将输入的百分之的分数,按下列分数段:将输入的百分之的分数,按下列分数段输出等级输出等级(要求要求:使用使用switch)switch)main()main()intint score;score;scanf(%d,&scorescanf(%d,&score););score=score/10;score=score/10;/*1*/*1*/switch(score)switch(score)case 10:printf(The grade is A);break;case 10:printf(The grade is A);break;case 9:printf(The grade is A);break;case 9:printf(The grade is A);break;/*2*/*2*/case 8:printf(The grade is B);break;case 8:printf(The grade is B);break;case 7:printf(The grade is C);break;case 7:printf(The grade is C);break;case 6:printf(The grade is D);break;case 6:printf(The grade is D);break;default:printf(Thedefault:printf(The grade is E);grade is E);/*3*/*3*/实验实验2-32-3:从键盘输入三个数:从键盘输入三个数,分别代表三条线断的分别代表三条线断的长度长度.编程实现判断是否能组成三角形编程实现判断是否能组成三角形,及类型及类型.输入输入a,b,c的值的值 a+bc&b+ca&c+aba+bc&b+ca&c+ab是是 否否打印打印“能组成三角形能组成三角形”打印打印“不不能组成三能组成三角形角形”是是 a=b&b=c a=b&b=c 否否打印打印“是等边是等边三角形三角形”a*a+b*b=c*c|a*a+b*b=c*c|a*a+c*c=b*b|.a*a+c*c=b*b|.是是 否否打印打印“是直角是直角三角形三角形”打印打印“是一般三是一般三角形角形”main()main()intint a,b,c;a,b,c;scanf(%d,%d,%d,&a,&b,&cscanf(%d,%d,%d,&a,&b,&c););if(a+bc&b+ca&c+ab)if(a+bc&b+ca&c+ab)printf(“Canprintf(“Can get a triangle.n);get a triangle.n);if(a=b&b=c)if(a=b&b=c)printf(“Itprintf(“It is a equal-triangle.n);is a equal-triangle.n);else else if(a*a+b*b=c*c|a*a+c*c=b*b|b*b+c*c=a*a)if(a*a+b*b=c*c|a*a+c*c=b*b|b*b+c*c=a*a)printf(“Itprintf(“It is a right-angle triangle.n);is a right-angle triangle.n);else else printf(“Itprintf(“It is a ordinary triangle.n);is a ordinary triangle.n);elseelse printf(“Sorry!Cannotprintf(“Sorry!Cannot get a triangle.n);get a triangle.n);main()main()intint a,b,c;a,b,c;scanf(%d,%d,%d,&a,&b,&cscanf(%d,%d,%d,&a,&b,&c););if(a+bc&b+ca&c+ab)if(a+bc&b+ca&c+ab)printf(“Canprintf(“Can get a triangle.n);get a triangle.n);if(a=b&b=c)if(a=b&b=c)printf(“Itprintf(“It is a equal-triangle.n);is a equal-triangle.n);else else if(a*a+b*b=c*c|a*a+c*c=b*b|b*b+c*c=a*a)if(a*a+b*b=c*c|a*a+c*c=b*b|b*b+c*c=a*a)printf(“Itprintf(“It is a right-angle triangle.n);is a right-angle triangle.n);else else printf(“Itprintf(“It is a ordinary triangle.n);is a ordinary triangle.n);else else printf(“Sorry!Cannotprintf(“Sorry!Cannot get a triangle.n);get a triangle.n);第六章第六章 循环控制循环控制 循环结构有两种形式:循环结构有两种形式:当型循环和直到型循环当型循环和直到型循环当型循环和直到型循环当型循环和直到型循环。下面分别是下面分别是当型循环结构当型循环结构当型循环结构当型循环结构的传统流程图和的传统流程图和N-S流程图表示。流程图表示。直到型循环结构直到型循环结构直到型循环结构直到型循环结构的传统流程图和的传统流程图和N-S流程图表示流程图表示:v goto语句构成循环语句构成循环v while语句语句v do-while 语句语句v for 语句语句在在C语言中以下语句可以用来实现循环结构:语言中以下语句可以用来实现循环结构:v goto语句构成循环语句构成循环一般形式:一般形式:gotogoto 语句标号;语句标号;例例6.1:6.1:求求1+2+3+4+1001+2+3+4+100main()main()intint i=1,sum=0;i=1,sum=0;loop:if(i=100)loop:if(i=100)sum=sum+i;sum=sum+i;i+;i+;gotogoto loop;loop;printf(“%d”,sumprintf(“%d”,sum););v while语句语句一般形式:一般形式:while(表达式表达式)语句语句例例6.2:6.2:求求1+2+3+4+1001+2+3+4+100main()main()intint i=1,sum=0;i=1,sum=0;while(i=100)while(i=100)sum=sum+i;sum=sum+i;i+;i+;printf(“%d”,sumprintf(“%d”,sum););开始开始sum=0i=1i=100NYsum=sum+ii=i+1结束结束v do-while 语句语句一般形式:一般形式:do 循环体语句循环体语句 while(表达式表达式);例例6.3:6.3:求求1+2+3+4+1001+2+3+4+100main()main()intint i=1,sum=0;i=1,sum=0;do do sum=sum+i;sum=sum+i;i+;i+;while(i=100);while(i=100);printf(“%d”,sumprintf(“%d”,sum););开始开始Sum=0i=1i100 N-S 流程图流程图v for 语句语句一般形式:一般形式:for(表达式表达式1;表达式表达式2;表达式表达式3)循环体循环体例例6.4:6.4:求求1+2+3+4+1001+2+3+4+100main()main()intint i,sum=0;i,sum=0;for(i=1;i=100;i+)for(i=1;i=100;i+)sum=sum+i;sum=sum+i;printf(“%d”,sumprintf(“%d”,sum););开始开始Sum=0i=100NYsum=sum+i结束结束i+i=1 N-S 流程图流程图Sum=0sum=sum+ii+i=100i=1v 几种循环语句的比较几种循环语句的比较While,for循环循环:是先判断表达式,后执行语是先判断表达式,后执行语句;句;do-while循环循环:是先执行语句,后判断表达是先执行语句,后判断表达式。式。2.for循环和循环和while循环可以互相代替。循环可以互相代替。而而for语句的功能更强,用法更灵活。语句的功能更强,用法更灵活。3.while和和do-while语句只有当表达式的第一语句只有当表达式的第一次的值为真时才可以互相代替次的值为真时才可以互相代替习题习题1:1:求求1+2+31+2+3+20+20开始开始Sum=0i=20NYsum=sum+i结束结束i+i=1main()int i,sum=0;for(i=1;i=20;i+)sum=sum+i;printf(“%d”,sum);习题习题2:2:求求1*2*3*51*2*3*5main()int i,sum=1;for(i=1;i=5;i+)sum=sum*i;printf(“%d”,sum);开始开始Sum=1i=5NYsum=sum*i结束结束i+i=1习题习题3:3:求求1*2*3*201*2*3*20main()main()intint i;i;float sum=1;float sum=1;for(i=1;i=20;i+)for(i=1;i=20;i+)sum=sum=sumsum*i;*i;printf(printf(“%f%f”,sum,sum););开始开始Sum=1i=20NYsum=sum*i结束结束i+i=1习题习题4:4:求求1*2*n1*2*n,即,即n!n!main()int i,n;float sum=1;scanf(“%d”,&n)for(i=1;i=n;i+)sum=sum*i;printf(“%f”,sum);开始开始Sum=1i=5NYsum=sum*i结束结束i+i=1习题习题2:2:求求1+2+n1+2+nmain()int i,n,sum=0;scanf(“%d”,&n)for(i=1;i=n;i+)sum=sum+i;printf(“%d”,sum);开始开始Sum=1i=5NYsum=sum*i结束结束i+i=1思考思考:1:1、求、求 1+3+5+7 1+3+5+7 前前1010项项 2 2、求、求 3 3、求、求 2/1+3/2+5/3+8/52/1+3/2+5/3+8/5前前1010项项核心思想核心思想:for(;)for(;)s=?s=?sum=sum=sumsum+s;+s;1 1、确定循环次数;、确定循环次数;2 2、构造、构造s s项,达到目的。项,达到目的。习题习题5:5:求求1!+2!+n!1!+2!+n!main()int i,n;float s=1,sum=0;scanf(“%d”,&n)for(i=1;i=n;i+)s=s*i;sum=sum+s;printf(“%f”,sum);提示:提示:让变量让变量s依次为:依次为:1!,2!,3!用用Sum对对s进行累加进行累加v 循环的嵌套循环的嵌套main()main()intint i,ji,j;for(i=1;i=3;i+)for(i=1;i=3;i+)for(j=1;j=5;j+)for(j=1;j=5;j+)printfprintf(“*”);(“*”);printf(nprintf(n););例例 6.4 6.4 输出图形输出图形请思索此条请思索此条请思索此条请思索此条语句的作用语句的作用语句的作用语句的作用*main()main()intint i,ji,j;for(i=1;i=5;i+)for(i=1;i=5;i+)for(j=1;j=for(j=1;j=i;ji;j+)+)printfprintf(“*”);(“*”);printf(nprintf(n););思考:思考:输出图形输出图形 呢?呢?*main()main()intint i,ji,j;for(i=1;i=5;i+)for(i=1;i=5;i+)for(j=1;j=5;j+)for(j=1;j=5;j+)printfprintf(“*”);(“*”);printf(nprintf(n););思考:思考:输出图形输出图形*main()main()intint i,ji,j;for(i=1;i=9;i+)for(i=1;i=9;i+)for(j=1;j=for(j=1;j=i;ji;j+)+)printf(“%dprintf(“%d*%d=%*%d=%d”,i,j,id”,i,j,i*j);*j);printf(nprintf(n););这种方案打印出来的九这种方案打印出来的九这种方案打印出来的九这种方案打印出来的九九表是正三角九表是正三角九表是正三角九表是正三角,请思索请思索请思索请思索如何对程序修改如何对程序修改如何对程序修改如何对程序修改,以实以实以实以实现打印出倒三角现打印出倒三角现打印出倒三角现打印出倒三角!大家可以试着在纸上分大家可以试着在纸上分大家可以试着在纸上分大家可以试着在纸上分析出这一过程析出这一过程析出这一过程析出这一过程.例例 6.5 6.5 打印九九乘法表打印九九乘法表题题1.有以下程序有以下程序main()int s=0,a=1,n;scanf(%d,&n);do s+=1;a=a-2;while(a!=n);printf(“%dn”,s);若要使程序的输出值为若要使程序的输出值为2,则应该从键盘给,则应该从键盘给n输入输入的值是的值是 A)-1 B)-3 C)-5 D)0B)题题2.执行以下程序后,输出执行以下程序后,输出#号的个数号的个数是是 。#include“stdio.h”main()int i,j;for(i=1;i5;i+)for(j=2;j=i;j+)putchar(#);6v break和和continue语句语句break:跳出当前的跳出当前的switch语句或循环语句或循环continue:结束本次循环,循环继续结束本次循环,循环继续例例6.6:6.6:阅读程序,说出本程序段的作用阅读程序,说出本程序段的作用main()main()intint n;n;for(n=1;n=100;n+)for(n=1;n=100;n+)if(n%5!=0)if(n%5!=0)continue;continue;printf(“%d”,nprintf(“%d”,n););作用:求出作用:求出1-100之间所有能被之间所有能被5整除的数整除的数思考:如果思考:如果continue用用break替换呢替换呢?习题习题6 6:判断一个输入的值:判断一个输入的值m m是否为素数(方法一)是否为素数(方法一)读入读入m的值的值k=sqrt(m)i=2当当ik否否是是输出:输出:m是素数是素数输出:输出:m不是素数不是素数#include#include#include#include main()main()intint m,i,km,i,k;scanf(%d,&mscanf(%d,&m););k=k=sqrt(msqrt(m););for(i=2;i=for(i=2;ik)if(ik)printf(printf(“%d%d is a prime is a prime numbernumber”,m,m););else else printf(printf(“%d%d is not a prime is not a prime”,m);,m);源程序源程序1 1:循环变量终值法循环变量终值法循环变量终值法循环变量终值法方法二:方法二:读入读入m的值的值k等等于于m的平方根的平方根i=2;ip=0;当当i=k时循环时循环i能整除能整除m?是是否否 ip=1;用用break结束循环结束循环i+ip=0?否否是是输出:输出:m是素数是素数输出:输出:m不是素数不是素数#include#include#include#include main()main()intint m,i,k,ip=0;m,i,k,ip=0;scanf(%d,&mscanf(%d,&m););k=k=sqrt(msqrt(m););for(i=2;i=for(i=2;i=k;ik;i+)+)if(m%i=0)ip=1;break;if(m%i=0)ip=1;break;if(ip=0)if(ip=0)printf(printf(“%d%d is a prime is a prime numbernumber”,m,m););else else printf(printf(“%d%d is not a prime is not a prime”,m);,m);源程序源程序1 1:变量标示法变量标示法变量标示法变量标示法v 几种循环语句的比较几种循环语句的比较1.While,for循环:do-while循环:开始开始设初值设初值循环条件循环条件NY循环体循环体结束结束开始开始设初值设初值循环条件循环条件NY循环体循环体结束结束是先判断表达式,后执行语句;是先判断表达式,后执行语句;是先执行语句,后判断表达式是先执行语句,后判断表达式2.for循环和while循环可以互相代替。而for语句的功能更强,用法更灵活。开始开始设初值设初值循环条件循环条件NY循环体循环体结束结束While循环:开始开始表达式表达式1表达式表达式2NY循环体循环体结束结束表达式表达式3for循环:设初值设初值
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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