for循环程序设计(0909NITL)课件_第1页
for循环程序设计(0909NITL)课件_第2页
for循环程序设计(0909NITL)课件_第3页
for循环程序设计(0909NITL)课件_第4页
for循环程序设计(0909NITL)课件_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

1、for循环程序设计(0909NITL)1 第第 5 5 章章 for for 循环程序设计循环程序设计for循环程序设计(0909NITL)25.1 for循环结构循环结构: C语言中的语言中的for循环语句比较复杂些循环语句比较复杂些,也比较灵活也比较灵活,功能较功能较强强,虽然主要用于定数循环虽然主要用于定数循环,但也可以用于不定数循环但也可以用于不定数循环,它完它完全可以替代全可以替代while循环循环.1. for 循环循环语句的一般形式:语句的一般形式: for(表达式表达式1 ; 表达式表达式2 ; 表达式表达式3) 循环循环体体 for循环程序设计(0909NITL)3 for(

2、表达式表达式1 ; 表达式表达式2 ; 表达式表达式3) 循环循环体体 表达式表达式2求介表达式求介表达式1内嵌语句真真假假for语句后下语句后下一条语句一条语句求介表达式求介表达式3设置循环设置循环变量初值变量初值判断表达式判断表达式循环变循环变量增值量增值for循环程序设计(0909NITL)4例例5.1: 求求100之内各数之和之内各数之和: #include int main( ) int i , sum=0; for( i=1;i=100; i+) sum+=i ; printf(“1+2+100=%d”,sum); return 0; i=100?i=1 sum+=i真真假假for

3、语句后下语句后下一条语句一条语句i+for循环程序设计(0909NITL)5例例:把:把100200之间的之间的不能不能被被3整除的数输出。整除的数输出。 main( ) int n; for(n=100; n=200; n+) if(n%3 =0) continue ; /*能被能被3整除的数整除的数,不打印不打印*/ printf(“%5d” , n); 当然函数体也可改成:当然函数体也可改成: if(n%3!=0) printf(“%d”, n ) ; 使用使用Continue仅是为了说明其的语法作用仅是为了说明其的语法作用。for循环程序设计(0909NITL)6说明说明: 表达式缺省

4、的表达式缺省的for( )语句语句: for( )语句中的三个表达式可以省略其中一个语句中的三个表达式可以省略其中一个, 二个二个,甚至甚至三个。三个。 但无论省略几个,其中的但无论省略几个,其中的二个分号不能省二个分号不能省。如果在如果在forfor语句之前,给循环变量已赋值,语句之前,给循环变量已赋值,表达式表达式1 1可省去。分号不能省。可省去。分号不能省。如如: sum=0; sum=0; i=1;i=1; for( for( ; ; i=100 ; i+) i=100 ; i+) sum=sum+i ;sum=sum+i ;表达式表达式1可省去可省去for循环程序设计(0909NIT

5、L)73. 如果表达式如果表达式2省略,省略,C编译程序认为其值编译程序认为其值恒为真恒为真, 无限循环下去。无限循环下去。 如如: for(i=1 ; ; i+) sum=sum+ i ; 2. 表达式表达式3也可省去:也可省去:如:如:for(i =1 ; i 10000) break ; 这种无限循环可用这种无限循环可用break 语句来终止循环语句来终止循环,避免产生死循环避免产生死循环.for循环程序设计(0909NITL)9补充补充: 逗号运算符逗号运算符(顺序运算符)(顺序运算符): 级别最低的一种。用它将二个表达式联起来。级别最低的一种。用它将二个表达式联起来。 逗号表达式的一

6、般形式:逗号表达式的一般形式: 表达式表达式1,表达式,表达式2 如:如:a = 3*5 , a=a*4 逗号表达式逗号表达式 先求解先求解3*5,得得a的值为的值为15,然后求解第二表达式,然后求解第二表达式a*4,得得60。求解过程是:求解过程是: 先求解表达式先求解表达式1,再求解表,再求解表达式达式2,整个逗号表达式的值为,整个逗号表达式的值为表达式表达式2的值。的值。for循环程序设计(0909NITL)10一般形式还可扩展:一般形式还可扩展: 表达式表达式1,表达式,表达式2 , ,表达式表达式n 整个表达式的值为表达式整个表达式的值为表达式n的值。的值。注注: a. 在很多情况下

7、,使用逗号表达式的目的只是想得在很多情况下,使用逗号表达式的目的只是想得 到各个表达式的值,并非一定需要得到或使用整个到各个表达式的值,并非一定需要得到或使用整个 表达式的值。表达式的值。 b. 并非任何出现逗号的地方都是逗号运算符并非任何出现逗号的地方都是逗号运算符. 如如: printf(“%d,%d,%d”, a,b,c); 其中的逗号就不是。其中的逗号就不是。 for循环程序设计(0909NITL)115含逗号运算符的含逗号运算符的for语句语句 for语句中语句中 ,表达式表达式1、表达式、表达式3可以使用逗号运算符:可以使用逗号运算符:如如: for( i=1, j=20 ; i

8、j ; i+ , j-)两个或两个以上两个或两个以上的变量共同实现的变量共同实现对循环的控制对循环的控制注注:有时各表达式也可以是与循环无关的语句有时各表达式也可以是与循环无关的语句.for循环程序设计(0909NITL)12例例5.2 输入一个输入一个110的自然数的自然数,求这个数的阶乘求这个数的阶乘. #include int main( ) int i,n, s=1; scanf(%d,&n); for(i=1;i=n; i+) s*=i ; / s=s*i printf(%d!=%dn,n,s); return 0; ch5_5_2.cfor循环程序设计(0909NITL)1

9、3例例5.3 输入一个正整数输入一个正整数,逆序输出逆序输出. #include int main( ) int num; int digit; printf(Input anumber:t); scanf(%d,&num); for( ; num != 0 ; num=num/10) digit=num%10; printf(%d,digit); printf(n); return 0; for循环程序设计(0909NITL)14例例5.4 输入不多于输入不多于10个实数个实数,求这些数的和及其中求这些数的和及其中 正数之和正数之和.(若不足若不足10个数个数,以以0 为结束标志为结

10、束标志) #include #include int main( ) float sum,psum,x; int i=1; .for循环程序设计(0909NITL)15 for(sum=psum=0.0, i=0 ; i10 ; i+) scanf(%f,&x); if(fabs(x)1e-4) break; sum+=x; /求这些数的总和求这些数的总和 if(x0) continue; psum+=x; /其中正数之和其中正数之和 printf(sum=%fn,sum); printf(psum=%fn,psum); return 0; ch5_5_4.cfor循环程序设计(090

11、9NITL)16例例5.5 计算输入一行字符串的字符个数计算输入一行字符串的字符个数. #include int main( ) int n=0; char cha1; printf(输入一行字符串输入一行字符串: n); for(; (cha1=getchar( ) !=n ; n+) ; printf(共有字符共有字符%d个个.n,n); return 0; ch5_5_5.cfor循环程序设计(0909NITL)17对于对于for语句的进一步说明语句的进一步说明:(1). 表达式表达式1可以是设置变量初值的赋值表达式可以是设置变量初值的赋值表达式,也可是与也可是与 循环变量循环变量 无关

12、无关的其它表达式的其它表达式. 如如: for(sum=0; i100; i+) sum=sum+i;(2). 表达式表达式2一般是关系表达式或逻辑表达式一般是关系表达式或逻辑表达式,但也可以是但也可以是 其它其它类型表达式类型表达式,只要其值为非零只要其值为非零,就执行循环体就执行循环体. 如如: for(i=0; ( c=getchar( ) ) != n ; i+=c) ; ( 不断输入字符不断输入字符,将将ASCII码累加码累加,直到输入一个换行符直到输入一个换行符.) for循环程序设计(0909NITL)18(3). f or循环的循环的条件检查条件检查总是在循环开始前进行的总是在

13、循环开始前进行的,如果如果 一开始条件为假一开始条件为假(为零为零),则循环一次也不执行则循环一次也不执行. main( ) int x, y=10; for(x=10; x10; -y) printf(“%d”,y); printf(“%d”, x); for循环程序设计(0909NITL)19(5). 当当for语句的循环体是空语句时语句的循环体是空语句时,则成为则成为空循环体空循环体的的for 语句语句,利用它可以实现某些特殊功能利用它可以实现某些特殊功能,比如产生时间延迟比如产生时间延迟 等等. 如下例如下例: for (t=0; tvalue; t+) ;空循环体空循环体for循环程

14、序设计(0909NITL)205.2 循环嵌套循环嵌套: for 语句一般用于具有明确循环次数的情况语句一般用于具有明确循环次数的情况,如果如果 事先不知道准确的循环次数事先不知道准确的循环次数,只知道循环条件只知道循环条件,一般用一般用 while 或或 do while 语句语句. 循环是可以嵌套的循环是可以嵌套的.循环嵌套是指一个循环体内又可包循环嵌套是指一个循环体内又可包含另一个完整的循环称为含另一个完整的循环称为 循环嵌套循环嵌套。 里面的循环又可嵌套另一个循环,叫里面的循环又可嵌套另一个循环,叫多层循环的嵌套。多层循环的嵌套。for循环程序设计(0909NITL)21 已知的三种循

15、环:已知的三种循环: while( ) , do - while( ) , for( ) 可以相互嵌套。可以相互嵌套。如如: while( ) for( ) do while( ) while( ); 注注: 但循环但循环嵌套不允许交嵌套不允许交叉叉for循环程序设计(0909NITL)22例例: 问问程序输出的结果程序输出的结果? main() int i=1,a=0; for(; i=5; i+) do i+; a+; while(i3); i+; printf(“a=%d,i=%dn”,a,i); for循环程序设计(0909NITL)23例例5.6: 打印一张九九乘法表打印一张九九乘法

16、表.#includeint main() int i,j; for(i=1; i10; i+) for(j=1; j=i; j+) printf(%2d*%d=%-3d, i, j, i*j); printf(n); return 0;ch5_5_6.c外循环控制行数外循环控制行数.内循环控制每行的输出内循环控制每行的输出数据数据.for循环程序设计(0909NITL)24例例5.7: 打印如下一张图形打印如下一张图形.#includeint main() int i,j,k; for(i=0; i5; i+) for(j=0; j=i; j+)printf( ); for(k=0; k5-i

17、; k+) printf( *); printf(n); return 0;ch5_5_7.c外循环控制行数外循环控制行数.控制每行的定位控制每行的定位.控制每行输出的控制每行输出的*号号个数个数.for循环程序设计(0909NITL)25例例: 找出所有的三位数找出所有的三位数,它和它的各位数字的立方和正好它和它的各位数字的立方和正好相相 等等. 例如例如:153=13+53+33. 设所求的三位数设所求的三位数,其百位数字是其百位数字是i,十位数字是十位数字是j,个位数字个位数字 是是k. 显然应满足如下表达式显然应满足如下表达式: i*i*i+j*j*j +k*k*k = 100*i+1

18、0*j+k main( ) int i,j,k; for(i=1; i=9; i+) for(j=0; j=9; j+) for(k=0; k=9; k+) if(i*i*i+j*j*j +k*k*k = =100*i+10*j+k ) printf(“%d%d%dn”, i,j, k); 程序运行结果: 153 370 371 407for循环程序设计(0909NITL)26 第第 5 5 章章 For For 循环程序设计循环程序设计结束结束for循环程序设计(0909NITL)27问程序输出问程序输出: : A) x=4, B) x=8, C) x=6, D) x=12#include “stdio.h”main( ) int i,j,x=0; for(i=0,i2;i+) x+; for(j=0;j=3;j+) if(j%2) continue; x+; x+; printf(“x=%dn”,x); ch5-ex10.c. . 外层外层forfor循环执行二次循环执行二次. . 每次外循环时每次外

温馨提示

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

最新文档

评论

0/150

提交评论