C语言循环结构一章_第1页
C语言循环结构一章_第2页
C语言循环结构一章_第3页
C语言循环结构一章_第4页
C语言循环结构一章_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

第五章循环结构1、用goto语句和if语句构成循环。2、用while语句。3、用do-while语句。4、用for语句。C语言循环结构一章If语句和goto语句构成的循环一般形式:goto语句标号;作用:无条件转向语句标号处执行语句标号:合法的标识符后面加个冒号”:”语句标号必须于此goto语句在同一个函数中goto语句不符合结构化程序设计准则,因为无条件转向使程序结构无规律、可读性差。一般应避免使用goto语句,但如果能大大提高程序的执行效率,也可以使用。C语言循环结构一章Example5_1#include<stdio.h>main(){ intx; x=3;ab:x+=2;/*ab:语句标号只能写在语句行的最左边*/

if(x<20)

gotoab; printf("%d\n",x);}C语言循环结构一章while语句一般形式:

while(表达式)语句作用:实现“当型”循环。当“表达式”非0(真)时,执行“语句”。“语句”是被循环执行的程序,称为“循环体”。特点:先判“表达式(条件)”。C语言循环结构一章注意事项while后面的”()”不能少表达式的可以使任意合法的表达式语句的位置上只能有一条语句,while语句范围只到while后面第一个分号处。超过一条用“{}”括起来while语句的循环体可能一次都不执行循环体中必须有使循环趋于结束的语句,否则程序进入“死循环”(不结束)。C语言循环结构一章求1~100的累计和。根据已有的知识,可以用“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的值就是1~100的累计和。C语言循环结构一章Example5_2计算#include<stdio.h>main(){

inti,sum=0;

i=1;

while(i<=100)

{

sum=sum+i;

i++;

}

printf("%d",sum);}C语言循环结构一章Example5_3输入两个整数x和y,计算x和y之间所有的偶数之和main(){ intx,y,sun,t; printf(”请输入两个整数(前大后小):”); scanf(”%d%d”,&x,&y); printf(”%d和%d之间所有的偶数的和是:”,x,y); while(x<y) { if(x%2==0) sum+=x; x++; } printf(”%d\n”,sum);}C语言循环结构一章dowhile语句一般格式:

do

语句(循环体)

while(表达式);特点:

“直到型”循环结构。先执行一次“语句”,判“表达式”,当“表达式”非0,再执行“语句”,直到“表达式”为0,循环结束。C语言循环结构一章dowhile注意点do后面没有分号;语句的位置上只能到第一个分号处,也就是只能有一条语句,超过用{}构成复合语句表达式可以是任意表达式C语言循环结构一章Example5_4计算n以内所有能被3整除或者能被7整除的自然数之和/*从3开始,各个自然数i逐个进行比较,直到自然数i不小于n则循环结束*/#include"stdio.h"main(){ intn,i,s; printf("请输入一个整数:"); scanf("%d",&n);/*输入一个整数给n*/ s=0;/*s用来存放满足条件的自然数之和,和的初值为0*/ i=3;/*从3开始*/

do { if(i%3==0||i%7==0)/*余数为0表示整除*/ s+=i; i++;/*准备判断下一个自然数*/ }while(i<n);/*i<n表示条件成立,循环执行*/ printf("s=%d\n",s);}C语言循环结构一章while和do-while循环的比较main(){ inti,s=0; scanf(“%d”,&i);

do {s=s+i; i++; }while(i<=10); printf(“s=%d”,s);}运行情况如下:main()

{ inti,s=0;

scanf(“%d”,&i);

while(i<=10) {s=s+i;

i++;

}

printf(“s=%d”,s);}

运行情况如下:

C语言循环结构一章说明

在一般情况下,用while和do-while语句解决同一问题时,若二者的循环体部分是一样的,它们的结果也一样。但当while后面的“表达式”一开始就为“假”时,两种循环的结果不同。这是因为此时while循环的循环不被执行,而do-while循环的循环体被执行一次。C语言循环结构一章for语句一般格式

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

循环变量赋初值循环条件循环变量增量循环体部分执行过程:(1)求表达式1;(2)求表达式2,若为“真”,执行“语句”;若为假,转第(5)步。(3)求表达式3。(4)转第(2)步。(5)执行for语句下面的语句。C语言循环结构一章Example5_5计算n以内所有自然数之和#include"stdio.h"main(){ intn,i,s; printf("请输入一个整数:"); scanf("%d",&n);/*输入一个整数给n*/ s=0;/*s存储和,初值为0*/

for(i=0;i<n;i++) s+=i; printf("s=%d\n",s);}for(i=0;i<n;i++) s+=i;等价于 i=0;while(i<n) { s+=i; i++; } C语言循环结构一章for语句说明(1)for语句中条件测试总是在循环开始时进行;如果循环体部分是多个语句组成的,则必须用左、右花括号括起来,使其成为一个复合语句。C语言循环结构一章(2)for语句中的表达式1和表达式3即可以是一个简单的表达式,也可以是逗号连接的多个表达式,此时的逗号作为运算符使用。如:for(s=0,i=1;i<=100;i++)s=s+i;或:for(i=1,j=100;i<=j;i++,j--)k=i+j;

在逗号表达式内按自左至右顺序求解,整个逗号表达式的值为其中最右边的表达式的值。如:for(i=1;i<=100;i++,i++)s=s+i;相当于:for(i=1;i<=100;i=i+2)s=s+i;C语言循环结构一章(3)for语句的一般形式中的“表达式1”可以省略,此时应在for语句之前给循环变量同赋初值。注意省略表达式1时,其后的分号不能省略。如:for(;i<=100;i++)s=s+i;执行时,跳过“解表达式1”这一步,其它不变。C语言循环结构一章(4)如果表达式2省略,即不判断循环条件,循环无终止地进行下去。也就是认为表达式2始终为真。例如:for(i=1;;i++)s=s+i;相当于:i=1;while(1){s=s+I;i++;}C语言循环结构一章(5)表达式3也可以省略,但此时程序设计应另外设法保证循环能正常结束。如:for(i=1;i<=100;){s=s+I;i++;}C语言循环结构一章(6)可以省略表达式1和表达式3,只有表达式2,即只给循环条件。例:for(;i<=100;){s=s+i;i++;}相当于:while(i<=100){s=s+i;i++;}C语言循环结构一章(7)3个表达式都可以省略,如:for(;;)语句相当于:while(1)语句即不设初值,不判断条件(认为表达式2为真值),循环变量不增值,无终止地执行循环体。C语言循环结构一章(8)表达式1可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其它表达式。如:for(s=0;i<=100;i++)s=s+i;表达式3也可以是与循环控制无关的任意表达式。(9)表达式2一般是关系表达式(如i<=100)或逻辑表达式(如a<b&&x<y),但也可以是数值表达式或字符表达式,只在其值为非0,就执行循环体。C语言循环结构一章break语句和continue语句break语句作用:

跳出所在的多分支switch语句,跳出所在的while、do-while、for循环语句(提前结束循环continue语句作用:

提前结束本次循环体的执行,接着进行下一次循环条件的判别。

C语言循环结构一章break语句和continue语句的区别while(表达式1){

if(表达式2)continue;

┇}while(表达式1){

if(表达式2)break;

┇}C语言循环结构一章for(r=1;r<=10;r++){area=pi*r*r;

if(area>100)break;

printf("%f",aera);}raera13.14212.57328.27450.27578.546113.107153.948201.069254.4710314.16C语言循环结构一章几种循环的比较1、四种循环(while、do-while、for、goto)可以互相替换,但应尽量少用goto。2、循环条件:while、do-while在while后面指定;for循环在“表达式2”中指定。3、循环初始条件:while、do-while在循环前指定;for循环在“表达式1”中指定。4、判循环条件的时机:while、for循环先判循环条件,后执行;do-while循环先执行,后判循环条件。5、while、do-while、for循环均可用break语句跳出循环(结束循环),用continue语句提前结束本次循环体的执行。C语言循环结构一章Example5_6输入一个整数x,判断该数是否是合数质数(素数):只能被1和它本身整除的自然数合数:除了1和它本身外,还存在能整除它的数#include"stdio.h"main(){ intx,i; printf("请输入一个整数:"); scanf("%d",&x);

/*查找范围:[2,x-1]*/ for(i=2;i<x;i++) if(x%i==0)/*如果存在一个数能整除x*/ break; /*循环提前结束*//*循环结束有两个可能,一i<x不成立正常结束;二执行break以后循环提前结束(i肯定小于x)*/ /*如果循环提前结束则说明x是个合数,否则说明x是个质数(素数)*/ if(i<x) printf("%d是个合数\n",x); else printf("%d是个质数(素数)\n",x);}C语言循环结构一章Example5_7输入一个整数,计算该数的因子(不包括自己的因数)之和#include"stdio.h"main(){ intx,i,s; printf("请输入一个整数:"); scanf("%d",&x); s=0;/*存储和,初值为0*/

for(i=1;i<x;i++)/*从1到x-1之间所有的数都逐个进行判断*/

if(x%i==0)/*如果某一个数i是x的因子*/ s+=i;/*将i加到s上*/printf("%d的因子之和是%d\n",x,s);}C语言循环结构一章Example5_8/*输出所有的“水仙花数”,所谓的"水仙花数"是指一个三位数,该数各个位数上的立方和等于它本身*//*方法:穷举法列举法对所有有可能满足条件的数据逐个进行判断,找出符合题目意思的数据

确定有可能满足条件的范围*/#include"stdio.h"main(){ inti,g,s,b;

for(i=100;i<1000;i++)/*对所有的三位数逐个进行判断*/ { /*计算出i的个位数,十位数,百位数*/ g=i%10;

/*i的个位数*/ s=i/10%10;

/*i的十位数*/ b=i/100%10;

/*i的百位数*/

/*判断i与个位数的立方+十位数的立方+百位数的立方是否相等*/

if(i==g*g*g+s*s*s+b*b*b) printf("%d是个水仙花数\n",i); }}C语言循环结构一章Example5_9输出九九乘法表#include"stdio.h"main(){ inti,j;

for(i=1;i<10;i++)/*总共有9行,第i行*/ { /*第i行有i列*/

for(j=1;j<=i;j++) printf("%2d*%d=%-2d",j,i,i*j); printf("\n");/*输出换行*/ }}C语言循环结构一章Example5_10输入一个n,输出n行*,其中第几行就有几个图形如下main(){ inti,j,n;

printf("请输入一个数:"); scanf("%d",&n);/*输入一个整数给n*/

/*总共输出n行*/

for(i=1;i<=n;i++) { /*输出第i行的i个**/

for(j=1;j<=i;j++) printf("*");

/*输出换行*/ printf("\n"); }}C语言循环结构一章输入一个n,输出n行,每行有若干个.和若干个*,如下图#include"stdio.h"main(){ inti,j,n; printf("请输入一个数:"); scanf("%d",&n);/*输入一个整数给n*/

/*总共输出n行*/ for(i=1;i<=n;i++) { /*输出n-i个.*/ for(j=1;j<=n-i;j++) printf(".");

/*输出第i行的2*i-1个**/ for(j=1;j<=2*i-1;j++) printf("*");

/*输出换行*/ printf("\n"); }}C语言循环结构一章以下程序运行结果是__#include<stdio.h>main(){ inti=5; do { if(i%3==1) if(i%5==2) { printf(“*%d”,i);break;} i++; }while(i!=0); printf(“\n”)}A)*7 B)*3*5 C)*5 D)*2*6C语言循环结构一章以下不构成无限循环的语句或语句组是A)n=0;do{++n;}while(n<=0)B)n=0;while(1){n++;}C)n=10;while(n);{n--;}D)for(n=0,i=1;;i++)n+=1C语言循环结构一章以下程序运行结果是__#include<stdio.h>main(){ inti,j; for(i=3,i>=1;i--) { for(j=1;j<=2;j++)printf(”%d”,i+j); printf(”\n”); }}A) 234 345 B) 432 543 C) 23 34 45 D)45 34 23 C语言循环结构一章有以下程序运行后的结果是__

main()

{ inti,j,x=0;

for(i=0;i<2;i++)

{ x++;

for(j=0;j<=3;j++)

{ if(j%2)continue;

x++;

}

x++;

}

printf(“x=%d\n”,x);

}A)x=4

B)x=8C)x=6 D)x=12C语言循环结构一章有以下程序运行后的结果是__#include<stdio.h>

main()

{ inti;

for(i=0;i<3;i++)

switch(i)

{ case0:printf(“%d”,i);

case2:printf(“%d”,i);

default:printf(“%d”,i);

} }A)021

温馨提示

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

评论

0/150

提交评论