《C语言程序设计与实验指导》-5_第1页
《C语言程序设计与实验指导》-5_第2页
《C语言程序设计与实验指导》-5_第3页
《C语言程序设计与实验指导》-5_第4页
《C语言程序设计与实验指导》-5_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

本章目录5.1用while语句构成循环5.2用do-while语句构成循环5.3用for语句构成循环5.4循环的嵌套5.5break语句和continue语句5.1用while语句构成循环while语句用来实现当满足某个条件时,反复执行某一程序段,因此也称为“当型”循环。while循环的一般形式为;

while(表达式)循环体语句;它的执行过程是:先计算表达式的值,当值为真(非0)时,执行一次循环体语句,然后返回再判断表达式的值;当值为假(0)时,退出while循环。执行过程的流程图如图5.1所示:5.1用while语句构成循环例如:intx;scanf(“%d”,&x);while(x>0){x=x-1; printf(“%d”,x);}说明:while循环的特点是先判断循环条件,再执行循环语句。while后面表达式的值决定了是否执行循环体,当表达式一开始就为0时,while语句循环体就一次也不执行。循环体如果包含多个语句,应该用花括号括起来构成复合语句,否则,循环体语句将视为仅有一条语句。在循环体中应有使循环趋于结束的条件,如上例循环体中的x=x-1;否则将构成死循环,如将x=x-1改为x=x+1;将构成无限死循环,我们应该在程序设计中避免“死循环”的发生。若while后面没有循环语句,即while(x>0);则代表循环为空语句,但判断x>0是否为真会循环执行。5.1用while语句构成循环例5.1下面程序的运行结果是_________。#include<stdio.h>voidmain(){intnum=0;while(num<=2){num++;printf(“%d\n”,num);}}【解析】:本题中,首先判断num<=2条件是否满足,若满足,执行num++,再输出num的值;程序返回再次判断条件,若条件满足继续执行循环体,直到条件不满足为止。因此,本题的答案是:1235.1用while语句构成循环例5.2

下面程序,若输入:1234567890,运行结果是(

)。#include<stdio.h>voidmain(){ charch; intn=0; while((ch=getchar())!='0') n++; printf("%d\n",n);}A)0B)9C)1D)10【解析】本题中while((ch=getchar())!='0')指循环输入字符,每次赋值给字符变量ch,如果输入的字符不等于’0’,那么n++;如果输入字符等于’0’,则循环结束。最终n应该存储了输入字符串中第一个’0’之前的个数。因此,本题的答案选B。5.1用while语句构成循环例5.3

用while循环求1+2+3+…+100.程序如下:

#include<stdio.h>voidmain(){inti=1,sum=0;while(i<=100){sum=sum+i;i++;}printf("sum=%d\n",sum);}5.2用do-while语句构成循环do-while循环可以用来实现“直到型”循环,它的一般形式为:

do

循环体语句;

while(表达式);

do-while循环与while循环不同,它的执行过程是:先执行do后面的循环体语句,然后再判断表达式是否为真(非0),如果为真,则继续执行循环体语句,直到表达式的值为假时结束循环;如果为假,则结束循环。因此,不管一开始条件表达式的值是否为真,do-while循环都至少要执行一次循环体语句。其执行过程可用下图表示。5.2用do-while语句构成循环例如:intx;scanf(“%d”,&x);do{x=x-1; printf(“%d”,x);}while(x>0);说明:从上例我们看到可以用do-while语句来实现while循环,do-while循环语句的特点是先执行一次循环体,再判断表达式,do-while循环与while循环的最大不同是do-while循环至少执行一次循环体。如果一开始表达式的条件为真,用while和do-while循环均可以实现相同的功能,但如果一开始条件为假,则do-while语句执行一次循环体,while循环则一次也不执行。同while语句一样,如果循环体语句有多条,则必须用花括号{}括起来构成复合语句。do-while循环中while表达式后面的“;”不能省略。5.2用do-while语句构成循环例5.5下面程序的运行结果是()。voidmain(){inty=10;do{y--;}while(--y);printf(“%d\n”,y--);}A)-1B)1C)8D)0【解析】:题目中使用do-while循环结构。先执行循环体语句y--;再判断条件--y是否为真,若为真,则继续执行循环体语句,直到条件为假为止。最后,输出y--表达式的值。注意y--是后减,即表达式的值不减1,而变量y的值减1。因此,本题的输出结果是0,D选项。5.2用do-while语句构成循环例5.6

用do-while循环求1+2+3+…+100.程序如下:

#include<stdio.h>voidmain(){inti=1,sum=0;do{sum=sum+i;i++;}while(i<=100);printf("sum=%d\n",sum);}5.2用do-while语句构成循环while和do-while循环的比较。分别用while和do-while循环实现1+2+3+…+10。使用while循环#include<stdio.h>voidmain(){intsum=0,i;scanf(“%d”,&i);while(i<=10){sum=sum+i;i++;}printf(“sum=%d”,sum);}5.2用do-while语句构成循环使用do-while循环#include<stdio.h>voidmain(){intsum=0,i;scanf(“%d”,&i);do{sum=sum+i;i++;}while(i<=10);printf(“sum=%d”,sum);}5.3用for语句构成循环

在C语言中,用for语句构成的循环结构成为for循环。for循环语句使用最为灵活,较为广泛,既可以用于计数型循环,也可以用于条件型循环,它完全可以取代while和do-while语句。它的一般形式为:

for(表达式1;表达式2;表达式3)

循环体语句;它的执行过程流程图如下图5.4表示。5.3用for语句构成循环例如:intk,sum=0;

for(k=1;k<=100;k++)

sum+=k;说明:

1.for语句中的表达式可以部分或全部省略,但其中的“;”一个也不能少。一般情况下,表达式2不能省略,如果表达式2省略,则循环将会无限制的循环下去,成为死循环。2.for循环的一般形式等价于以下while语句:表达式1;while(表达式2){循环体语句;表达式3;}5.3用for语句构成循环

因此如果要在for循环条件中省略表达式1,则应在for循环之前类似表达式1给循环变量赋初值,如果在for循环条件中省略表达式3,则应该在for循环体中给出类似表达式3的改变循环变量的值,使循环趋于结束。

3.for循环中的表达式可以是任意合法的表达式,表达式1和3可以是与循环变量无关的表达式。例如:intk,sum;for(sum=0,k=1;k<=100;sum+=k,k++)这个for语句中的表达式1和表达式3均是逗号表达式。它同上例中的程序实现了相同的功能。但通常情况下for后面的表达式仅含有与循环控制有关的表达式,这样可增加程序的可读性。例5.8执行语句for(i=1;i++<4;);后变量i的值是________5.3用for语句构成循环例5.9

用for循环求1+2+3+…+100。程序如下:#include<stdio.h>voidmain(){inti,sum=0;

for(i=1;i<=100;i++) sum=sum+i;

printf("sum=%d\n",sum);}5.3用for语句构成循环

#include<stdio.h>voidmain(){ inti,n; floatsum=0.0; scanf("%d",&n); for(i=1;i<=n;i++) sum=sum+1.0/(i*i); printf("%f\n",sum);}5.3用for语句构成循环例5.11求n!。程序如下:#include<stdio.h> voidmain(){inti,n;longfac=1;scanf(“%d”,&n);for(i=1;i<=n;i++)

fac*=i;printf("%d!=%ld\n",fac);}5.4循环的嵌套在一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。循环的嵌套可以有多层,即内嵌的循环体内还嵌套有循环,称为多重循环。我们学习的while、do-while以及for循环,它们之间都可以相互进行嵌套,但要求每一层循环在逻辑上都必须是完整的。下列几种嵌套都是合法的形式:(1)while(){while(){}}(2)do{do{}while();}while();5.4循环的嵌套(3)for(;;){for(;;){}}(4)while(){do{}while();}(5)for(;;){while(){}}(6)do{for(;;)}5.4循环的嵌套这里列出的几种形式都是双层嵌套,循环可可以多重嵌套,例如:for{while(){do {}while();}}

此时,for循环里面嵌套了while循环,while循环内部又嵌套了do-while循环,构成了三重循环。三种循环可以任意多层嵌套。例5.12执行以下程序后,输出‘#’的个数是________。#include<stdio.h>main(){inti,j;for(i=1;i<5;i++)for(j=2;j<=i;j++)putchar(“#”);}5.4循环的嵌套例5.13编写程序,输出九九乘法口诀表,如下:1×1=11×2=22×2=41×3=32×3=63×3=91×4=42×4=83×4=124×4=16……程序如下:#include<stdio.h>voidmain(){inta,b,c; for(a=1;a<=9;a++) {for(b=1;b<=a;b++) {c=a*b; printf(“%d×%d=%-4d”,a,b,c); } printf(“\n”);}}5.5break语句和continue语句

5.5.1break语句break语句的一般格式:

break;

它通常用在switch语句和循环语句中,当break语句用于switch语句时,它可以使流程跳出switch语句体,执行switch语句下面的语句;当break语句用于循环语句中时,它可以在循环结构中终止本层循环体,提前结束本层循环,然后执行循环体后面的语句。5.5.1break语句例5.14

从键盘上输入的10个整数中,找出第一个能被7整除的数,若找到,打印此数;若未找到,打印“其中不存在能被7整除的数”。程序如下:#include<stdio.h>voidmain(){inti,a;for(i=1;i<=10;i++) {scanf("%d",&a); if(a%7==0)break;}if(i<=10)

printf("%d\n",a);

else printf("其中不存在能被7整除的数\n");}5.5.1break语句说明:1.break语句既可以用于跳出循环体,也可以用于跳出switch语句,前面讲switch语句的时候我们已经使用过break语句,需要注意的是,break语句只能用在循环体内和switch语句体内。2.当break语句用于循环体中时,它只能跳出本层循环,而不能跳出到最外层;同样当break语句用于循环体中的switch语句体内时,也只能是跳出switch语句,而不能直接终止循环的执行。5.5.2continue语句continue语句的一般形式:

continue;

它的作用跟break语句不同,其功能是结束本次循环,跳过本次循环剩下的尚未执行的语句而直接进行下一次的循环。注意:

continue语句仅是结束本次循环,并没有使整个循环终止,它跟break语句不同,break语句是结束整个循

温馨提示

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

评论

0/150

提交评论