C语言循环结构程序设计_第1页
C语言循环结构程序设计_第2页
C语言循环结构程序设计_第3页
C语言循环结构程序设计_第4页
C语言循环结构程序设计_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

循环结构程序设计2内容提要概述构成循环的语句

if-goto,while,do-while,for几种循环的比较循环的嵌套Break语句和continue语句36.1概述循环就是在满足一定条件时重复执行一段程序循环结构两种形式:当型循环:当条件成立时一直执行某段程序直到型循环:重复执行某段程序,直到某个条件为假时实现循环的语句(4种)用goto语句和if语句构成循环用while语句——当型循环,先判断后执行用do-while语句——直到型循环,先执行后判断用for语句——多功能46.2goto语句和goto语句构成的循环goto语句:一般形式:goto语句标号语句标号:用于定义程序中的某个位置用标识符表示,不能只用数字如gotostart(对),goto4(错)goto语句的功能:无条件地转到标号所指的语句goto语句滥用会破坏结构化,所以应少用5用if-goto语句构成循环例6-1计算#include<stdio.h>voidmain(){intk=1;s=0;loop:if(k<=3){s=s+k;k++;gotoloop;}printf(“s=%d”,s)}66.3while循环While语句的一般形式执行过程while(条件表达式)

语句S;执行语句S表达式?计算表达式初值退出循环为真为假7如:k=1;while(k<=100){s=s+k;k++}注意:若循环体中有多条语句,一定要以复合语句的形式出现循环前,要给循环控制变量赋初值在循环体内必须有改变循环控制变量值的语句循环体可以为空如while((c=getchar())!=‘A’);循环控制变量循环体c=getchar();while(c!=‘A’)c=getchar();循环控制表达式8例6-1计算分析:这是一个求累加和的问题

s=1+2+3s=0s=s+1s=s+2s=s+3s=0s=s+k当前和求和项新和值#include<stdio.h>voidmain(){intk=1;s=0;while(k<=3){s=s+k;k++;}printf(“s=%d”,s)}s和k的初值以及设置初值的位置96-2读程序#include<stdio.h>voidmain(){intk,s,n;printf(“entern:”);scanf(“%d”,&n);s=0;k=1;while(k<=n){s+=k;k++;}printf(“sum=%d,n=%d”,s,n);}#include<stdio.h>voidmain(){intk,t,n;printf(“entern:”);scanf(“%d”,&n);t=1;k=1;while(k<=n){s*=k;k++;}printf(“t=%d,n=%d”,t,n);}106-4求100以内的奇数、偶数之和#include<stdio.h>voidmain(){inteven,odd,n;even=0;odd=0;n=1;while(n<100){odd+=n;even+=(n+1);n+=2;}printf(“奇数和=%d,偶数和=%d”,odd,even);}分析:偶数和放在even变量中even=2+4+…+100奇数和放在odd变量odd=1+3+…+99设置计数器为1While(n<100){odd+=n;even+=(n+1);n+=2;}while(n<=100){if(n%2==0)even+=n;elseodd+=n;n++;}116-5输入两个正整数m和n,求其最大公约数和最小公倍数分析:用碾转相除法求最大公约数对m和n做取余运算,余数记为a当a不等于0时,将m←n,n←a,再作取余运算,否则n为最大公约数最小公倍数为两数之积/最大公约数12136.4do-while循环do-while循环用来实现直到型循环一般形式执行过程N-S图do语句while(条件表达式);

执行循环体语句表达式?退出循环体为真为假14例6-1计算#include<stdio.h>voidmain(){intk=1;s=0;

while(k<=3){s=s+k;k++;}printf(“s=%d”,s)}#include<stdio.h>voidmain(){intk=1;s=0;do{s=s+k;k++;}while(k<=3);printf(“s=%d”,s)}156.5for循环for循环的一般形式:for(表达式1;表达式2;表达式3)语句表达式2?执行语句真假执行for循环之后的语句执行表达式3执行表达式1表达式1在进入循环之前求解,相当于循环控制变量赋初值表达式3相当于循环体的一部分16For循环的其他形式

表达式1;for(;表达式2;表达式3)语句表达式1;for(;表达式2;){语句表达式3}17说明“表达式1”省略时,应在for语句之前给循环变量赋初值表达式2省略时,不判断循环条件,将成为死循环,需要在循环体中引入break语句以退出循环表达式3也可以省略,循环体内应有使循环条件改变的语句for(i=1;i<=100;){sum=sum+i;i++;}18同时省略表达式1和表达式3,只有表达式2,此时相当于while语句。如:表达式2一般是关系表达式(如i<=100)或逻辑表达式

(如a<b&&x<y),但也可以是数值表达式或字符表达式,只要其值为非零,就执行循环体i=1;for(;i<=100;){sum=sum+i;i++;}i=1;while(i<=100){sum=sum+i;i++;}for(i=1;i-4;i++)s=s+i19例6-8读程序,判断程序的功能#include<stdio.h>voidmain(){charc;for(;(c=getchar())!=‘\n’;)putchar(c);putchar(‘\n’);}getchar()仅当遇到回车符时才开始执行,从键盘缓冲区中取字符for(;(c=getchar())!=‘\n’;)if((c>=‘a’)&&(c<=‘z’)||(c>=‘A’)&&(c<=‘Z’))putchar(c);206-4求100以内的奇数、偶数之和#include<stdio.h>voidmain(){inteven,odd,n;even=0;odd=0;n=1;

while(n<100){odd+=n;even+=(n+1);n+=2;}printf(“奇数和=%d,偶数和=%d”,odd,even);}#include<stdio.h>voidmain(){inteven,odd,n;even=0;odd=0;n=1;

for(;n<100;n+=2){odd+=n;even+=(n+1);}printf(“奇数和=%d,偶数和=%d”,odd,even);}216.6循环的嵌套一个循环体内又包含另一个完整的循环结构称为循环的嵌套内嵌的循环中还可以嵌套循环,构成多层循环三种循环语句可以相互嵌套(1)while()(2)do(3)for(;;{…{…{

while()

dofor(;;){…}{…}{…}

}while();}}while();22(4)

while()(5)for(;;)(6)do{…{…{…do{…}while()for(;;){}while(){}…{…}…}}}while()

23循环嵌套的说明嵌套的循环控制变量不能相同内循环变化快,外循环变化慢

正确确定循环体循环控制变量常与求解的问题挂钩for(i=1;i<=9;i++){for(j=1;j<=i;j++)printf(“%1d*%ld=%2d”,i,j,i*j);printf(“\n”);}24例6-10:试找出满足下列条件的所有三位数其百位数不大于2将个位数与百位兑换,得到的三位数是原三位数的两倍至三倍之间分析:用三重循环的控制变量分别表示百、十、个位数百位数i取值为1~2十位数j取值为0~9个位数k取值为2~9n=100*i+10*j+km=100*k+10*j+im>=2m且m<3m25例6-10:试找出满足下列条件的所有三位数其百位数不大于2将个位数与百位兑换,得到的三位数是原三位数的两倍至三倍之间分析:用一重循环的控制变量i表示原来的三位数,i=101~299百位数n1=i/100十位数n2=(i-n1*100)/10个位数n3=i-n1*100-n2*10m=100*n3+10*n2+n1m>=2i且m<3i266.7几种循环的比较不提倡用goto语句构成循环关于循环的控制while(表达式)

语句for(表达式1;表达式2;表达式3)语句do语句while(表达式);

循环控制条件循环条件初始化…………修改循环条件27循环体的执行都可以用break和continue语句提前终止循环while(表达式)

语句for(表达式1;表达式2;表达式3)语句do语句while(表达式);

先判断条件,循环体可能一次也不执行后判断条件,循环体至少执行一次功能最强,形式最灵活286.8continue和break语句Break语句可以结束switch结构和三种循环例子6-12:判断m是否为素数分析:素数就是除了1和它本身之外,不能被其他整数整除的数即如果m是素数,则必然不存在大于1的整数i,t,使得m=i*ti的取值范围为2~sqrt(m)293031continue语句结束本次循环,即忽略循环体中剩余的语句例6-13把100-200之间不能被3整除的数输出if(n%3)printf(“%d”,n);326.9程序举例例6-14用π/4≈1-1/3+1/5-1/7+…公式求π的近似值,直到某一项的绝对值小于10-4为止。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论