版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章循环控制
C语言程序设计
第六章循环控制概述goto语句以及用goto语句组成循环while语句do-while语句for语句循环嵌套几个循环比较break语句和continue语句程序举例第1页<>6.1
概述程序中凡包括求阶乘、累加、排序等问题都要用循环处理,因为程序中某一程序段要重复执行若干次。C语言实现循环语句:goto和if组合while语句dowhile语句for语句
C语言程序设计
第六章循环控制重点第2页<>6.2goto语句以及用goto语句组成循环作用:无条件地转移到语句标号指向语句去执行。普通格式:
C语言程序设计
第六章循环控制
goto语句标号;
….…..标号:语句;说明:语句标号由字母、数字和下划线组成,定名规则同变量名,不能用数字开头。gotoloop;
(√)
goto100;(×)与循环语句配合使用时,可从循环体内跳到循环体外,而不能从循环体外跳到循环体内。goto语句转移方向可前可后。与if语句配合使用时可组成循环。goto语句违反结构化程序设计标准,所以应限制使用。第3页<>
C语言程序设计
第六章循环控制例6.1用if和goto语句组成循环,求#include<stdio.h>voidmain(){inti,sum=0;i=1;loop:if(i<=100){sum+=i; i++; gotoloop;}printf("%d",sum);}sum=0+1sum=1+2=3sum=3+3=6sum=6+4……sum=4950+100=5050循环初值循环终值循环变量增值循环条件循环体第4页<>
C语言程序设计
第六章循环控制例从键盘输入一组数据,以0结束输入,求数据和。#include<stdio.h>voidmain(){ intnumber,sum=0;
read_loop:scanf("%d",&number); if(!number)gotoprint_sum; sum+=number;
gotoread_loop;print_sum:printf("Thetotalsumis%d\n",sum);}第5页<>6.3
while语句while语句实现“当型”循环结构。普通形式:
C语言程序设计
第六章循环控制while(表示式)
循环体语句;没有“;”功效:先判断表示式,若为真则执行循环体,再判断表示式,重复上述过程,直到表示式为假时退出循环。求sum=sum+ii=i+1i=1;sum=0i≤100假真i=1;sum=0当i≤100sum=sum+ii=i+1第6页<>
C语言程序设计
第六章循环控制#include<stdio.h>voidmain(){inti,sum=0;
i=1;while(i<=100){sum=sum+i;i++;}printf("%d",sum);}循环条件循环体例6.2用while语句组成循环,求循环初值循环终值循环变量增值第7页<>关于while循环语句:while循环先判断表示式,后执行循环体。循环体有可能一次也不执行。循环体若包含一个以上语句,应该用{}括起来。循环体应包含有使循环趋向结束语句;以下情况,退出while循环条件表示式不成立(为零)循环体内遇break,goto无限循环
while(1)
循环体;
C语言程序设计
第六章循环控制第8页<>
C语言程序设计
第六章循环控制例用while语句显示1~10平方#include<stdio.h>voidmain(){inti=1;while(i<=10){printf("%d*%d=%d\n",i,i,i*i);i++;}}1*1=12*2=43*3=94*4=165*5=256*6=367*7=498*8=649*9=8110*10=100第9页<>6.4
do-while语句do-while语句实现“当型”循环结构。普通形式:
C语言程序设计
第六章循环控制功效:先执行循环体,然后判断表示式。若为真,则再次执行循环体,不然退出循环。求do循环体语句;while(表示式);有“;”i=1,sum=0sum=sum+ii=i+1i≤100真假i=1,sum=0sum=sum+ii=i+1
直到i>100第10页<>
C语言程序设计
第六章循环控制例6.3用do-while语句组成循环,求#include<stdio.h>
voidmain(){inti,sum=0;
scanf("%d",&i);do{sum+=i;i++;}while(i<=100);printf("%d",sum);}循环条件循环体#include<stdio.h>
voidmain(){inti,sum=0;
scanf("%d",&i);while(i<=100){sum+=i;i++;}printf("%d",sum);}比较do-while循环,循环体最少执行一次;while和do-while能够处理同一问题,二者能够交换。while后表示式一开始就为假时,两种循环结果不一样。输入:1输出:50505050输入:101输出:1010第11页<>6.5
for语句
for语句是C语言中最为灵活,使用最广泛循环语句,可完全替换while,do-while语句。普通形式
C语言程序设计
第六章循环控制for(表示式1;表示式2;表示式3)
循环体语句;惯用形式for(循环变量赋初值;循环条件;循环变量增值)
循环体语句;第12页<>
C语言程序设计
第六章循环控制#include<stdio.h>
voidmain(){inti,sum=0;
for(i=1;i<=100;i++)sum+=i;printf("%d",sum);}i≤100sum=sum+iNYi=1i++for循环下面语句循环步长例用for语句组成循环,求第13页<>几点说明:for语句中表示式1、2、3类型任意,都可省略,但分号“;”不能省。无限循环:for(;;)不停执行循环体,循环不终止。For语句能够转换成while结构
C语言程序设计
第六章循环控制表示式1;while(表示式2){
循环体语句; 表示式3;}第14页<>几个形式:
C语言程序设计
第六章循环控制省略表示式1:应在for之前为变量赋初值。/*正常形式*/main(){inti,sum=0;for(i=1;i<=100;i++)sum=sum+i;printf("%d",sum);}/*省略表示式1*/main(){inti,sum=0;
i=1;
for(;i<=100;i++)
sum=sum+i
printf("%d",sum);}省略表示式2:循环条件一直为“真”,循环不终止。省略表示式3:应另外设法使程序能够结束。/*省略表示式3*/main(){inti,sum=0;
for(i=1;i<=100;)
{sum=sum+i
i++;}
printf("%d",sum);}省略表示式1、3:完全等同于while语句。/*省略表示式1、3*/main(){inti,sum=0;
i=1;
for(;i<=100;)
{sum=sum+i
i++;}
printf("%d",sum);}三个表示式都省略:无初值,不判断条件,循环变量不增值,死循环。第15页<>
C语言程序设计
第六章循环控制表示式1、3能够是与循环无关表示式,也能够是逗号表示式。for(s=0,i=1;i<=100;i++)s=s+i;/*表示式是逗号表示式*/main(){inti,j,k;for(i=0,j=100;i<=j;i++,j--){k=i+j;printf("%d+%d=%d\n",i,j,k);}}表示式2能够是关系、逻辑、算术、字符表示式,非0时,执行循环体,为0时退出循环。#include<stdio.h>main(){charc;for(;(c=getchar())!='\n';)printf("%c",c);}#include<stdio.h>main(){inti,c;for(i=0;(c=getchar())!='\n';i+=c) printf("%d",i+c);}第16页<>6.6
循环嵌套定义:一个循环体内又包含了另一个完整循环结构,称为循环嵌套。三种循环能够相互嵌套,层数不限。嵌套循环执行流程。
C语言程序设计
第六章循环控制(1)while()
{……while(){……}…...
}(2)do
{……do{……}while();…...
}
while();(3)for(;;)
{……for(;;){……}
}(4)while()
{……do{……}while();…….
}第17页<>
C语言程序设计
第六章循环控制(5)for(;;){……while(){……}…...}(7)for(;;){……do{……}while();……while(){……}…...}(6)do{……for(;;){……}…...}while();循环能够相互嵌套,但不能相互交叉。for
for………...…...
for
for………...…...
第18页<>
C语言程序设计
第六章循环控制例计算3组1~4累加和#include<stdio.h>voidmain(){inti,j,s=0;for(i=1;i<=3;i++)for(j=1;j<=4;j++)s=s+j;printf(“s=%d\n",s);}结果:s=30123ijs=0111136211122132420312132233326343023161410第19页<>
C语言程序设计
第六章循环控制例循环嵌套,输出九九乘法表1234567891234567892468101214161836912151821242791827364554637281……………..ijvoidmain(){inti,j;for(i=1;i<10;i++)printf("%4d",i);printf("\n------------------------------------\n");for(i=1;i<10;i++)for(j=1;j<10;j++) printf((j==9)?"%4d\n":"%4d",i*j);}条件运算符:
j=9,输出i*j,再回车换行。
j≠9,只输出i*j。第20页<>
九九乘法表逻辑框图
C语言程序设计
第六章循环控制i<10printfNYi=1j++j=1j<10YNi++for(i=1;i<10;i++)
for(j=1;j<10;j++)printf((j==9)?"%4d\n":"%4d",i*j);外循环内循环第21页<>6.7
几个循环比较
C语言程序设计
第六章循环控制语句适用范围 说明while只知道结束条件而无法确定执行次数情况下。①循环变量初始化在循环体之前②循环体中应包含使循环结束语句③能够用break和continue语句控制do-while最少执行一次时if~goto无条件循环
该循环不能用break和continue语句控制for已知执行次数或者已知初值,终值,步长时。使用比较灵活第22页<>6.8
break语句和continue语句Break语句功效:在循环语句和switch语句中,终止并跳出循环体或开关体。说明:break只能终止并跳出最近一层结构。break不能用于循环语句和switch语句之外任何其它语句之中。普通形式:break;
C语言程序设计
第六章循环控制第23页<>流程形式:
C语言程序设计
第六章循环控制表示式……break;……假(0)真(非0)whiledo……break;…...表示式假(0)真(非0)while表示式2……break;…...假(0)真(非0)for表示式1表示式3第24页<>
C语言程序设计
第六章循环控制switch表示式语句组1break;语句组2break;语句组nbreak;语句组break;…...const1const2constndefaultcase第25页<>
C语言程序设计
第六章循环控制例break举例:输出圆面积,面积大于100时停顿#include<stdio.h>#definePI3.14159voidmain(){intr;floatarea;for(r=1;r<=10;r++){area=PI*r*r;if(area>100)break;printf("r=%d,area=%f",r,area);}}r≤10area=3.14*r*rNYr=1i++for循环下面语句area>100NY使用break跳出整个循环输出:r=1,area=3.14r=2,area=12.57r=3,area=28.27r=4,area=50.27r=5,area=78.85/*当r=6时,area=113.10故此值没有被输出*/第26页<>
C语言程序设计
第六章循环控制例break举例:小写字母转换成大写字母,直至输入非字母字符#include<stdio.h>voidmain(){charc;while(1){c=getchar();if(c>='a'&&c<='z')putchar(c-32);else if(c>=‘A'&&c<=‘Z')putchar(c);elsebreak;}}break使无限循环结束第27页<>Continue语句功效:结束此次循环,跳过循环体中还未执行语句,进行下一次是否执行循环体判断。continue语句仅用于循环语句中。
C语言程序设计
第六章循环控制break
和continue语句区分continue语句只结束此次循环,break语句则是结束整个循环。
continue语句只用于while,do-while,for循环语句中,break语句还能够用于switch语句中。第28页<>流程形式:
C语言程序设计
第六章循环控制表示式……continue;……假(0)真(非0)while真(非0)do……continue;…...表示式假(0)while表示式2……continue;…...假(0)真(非0)for表示式1表示式3第29页<>
C语言程序设计
第六章循环控制例6.5把100~200之间不能被3整除数输出#include<stdio.h>voidmain(){inti;for(i=100;i<=200;i++){if(i%3==0)continue;printf(“%d”,n);}}使用continue结束此次循环i≤200NYi=100i++for循环下面语句i%3==0YprintfN运行结果:100,101,103,104,106,107,109,110,112,113,115,116,118,119,第30页<>
C语言程序设计
第六章循环控制例
求输入十个整数中正数个数及其平均值#include<stdio.h>
voidmain(){inti,num=0,a;floatsum=0;for(i=0;i<10;i++){scanf("%d",&a); if(a<=0)continue; num++; sum+=a;}printf("%dplusinteger'ssum:%6.0f\n",num,sum);printf("Meanvalue:%6.2f\n",sum/num);}第31页<>6.9
程序举例
C语言程序设计
第六章循环控制t=1,pi=0,n=1.0,s=1当|t|1e-6pi=pi+tn=n+2s=-st=s/npi=pi*4输出pi分子:1,-1,1,-1…分母:1,3,5,7,...#include<stdio.h>#include<math.h>voidmain(){ints;floatn,t,pi;t=1;pi=0;n=1.0;s=1;while((fabs(t))>=1e-6){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;printf("pi=%10.6f\n",pi);}运行结果:
pi=3.141594第32页<>
C语言程序设计
第六章循环控制例6.7
求Fibonacci数列:1、1、2、3、5、8……前40个数。Fibonacci数列能够用一个有趣古典数学问题来描述:有一对兔子,出生三个月后每个月都生一对兔子。小兔子长到三个月后每个月又生一对兔子。假设全部兔子都不死,问每个月兔子总数是多少对?月数小兔中兔老兔总数1111111111123450200002352……………第33页<>
C语言程序设计
第六章循环控制f1=1,f2=1fori=1to20输出f1,f2f1=f1+f2f2=f2+f1#include<stdio.h>#include<conio.h>voidmain(){longintf1,f2;inti;f1=1;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;}
}1534233159710946750255142293524578241578171855377258417711121393832040570288739088169213896104181286571964181346269922746563245986321144987676546368317811217830914930352102334155第34页<>
C语言程序设计
第六章循环控制例6.8判断m是否素数。#include<stdio.h>#include<math.h>voidmain(){intm,i,k;scanf("%d",&m);k=sqrt(m);for(i=2;i<=k;i++)if(m%i==0)break;if(i>k)printf("%disaprimenumber\n",m);elseprintf("%disnotaprimenumber\n",m);}读入mk=i=2当i
km被i整除真假用break结束循环i=i+1i
k+1真假输出”是素数”输出”不是素数”19
19isaprimenumber第35页<>
C语言程序设计
第六章循环控制例6.9求100~200间全部素数。
因为不是求一个数是否素数,所以需要使用双循环嵌套。外层第一个循环,用于在100~200间提取一个数,然后内层第二个循环进行判断。#include<stdio.h>#include<math.h>voidmain(){intm,k,i,n=0;for(m=101;m<=200;m=m+2){k=sqrt(m);for(i=2;i<=k;i++)if(m%i==0)break;if(i>=k+1){printf("%d",m);n=n+1;}if(n%10==0)printf("\n");}printf("\n");}运行结果:
101103107109113127131137139149157163167173179181191193197199第36页<>
C语言程序设计
第六章循环控制例6.10译密码。按一定规律将电文变成密码:将字母A变为E、将字母a变为e,即变成其后第四个字母,W将变成A。字母按上述规律转换,非字母字符不变。输入一行字符,输出对应密码。分析:因为字符和整数之间能够通用,所以‘A’->’E’对应‘A’->’A’+4能够定义一个字符型变量c,c接收输入,并c->c+4。特殊之处是‘W’-’Z’和‘w’-’z’之间时,它们需要对应为‘A’-’D’和‘a’-’d’,怎么办
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年四年级英语上册 Module 2 My family,my friends and Me Revision 2 and Project 2教案 牛津沪教版(三起)
- 2024民间借款抵押合同样本
- 2024多人入股份合同协议书
- BIM技术在市政道路设计优化方面的应用分析
- 年度普通合成纤维市场分析及竞争策略分析报告
- 3.3商的近似数(进阶作业)2024-2025学年五年级上册数学人教版(含解析)
- 4.4.1 世界的气候(教学设计)七年级地理上册同步高效备课课件(人教版2024)
- 电热线相关行业投资规划报告
- 多发性骨髓瘤护理查房课件
- 叔丁基苯酚行业相关投资计划提议
- Unit3Lesson2IcandanceonFriday(课件)(五四学制)(三起)英语四年级上册
- 七选五解读(公开课超经典)课件
- “分镜头设计”教学大纲
- 爱的起源 从达尔文到现代脑科学
- 新人教版高一英语必修一-课本听力与视频材料原文
- 新型农民培训服务投标方案(完整技术标)
- 混凝土挡墙施工方案
- 化学(基础模块)中职PPT完整全套教学课件
- 小学科学四年级下册《弹力》省名师优质课获奖课件市赛课一等奖课件
- 【高中语文】文言文句式+导学案+高考一轮复习之文言文通关宝典(新高考版)
- 健康的四大基石牛初乳
评论
0/150
提交评论