第5章for循环程序设计(0909NITL).ppt

上传人:本田雅阁 文档编号:2094272 上传时间:2019-02-13 格式:PPT 页数:29 大小:440.51KB
返回 下载 相关 举报
第5章for循环程序设计(0909NITL).ppt_第1页
第1页 / 共29页
第5章for循环程序设计(0909NITL).ppt_第2页
第2页 / 共29页
第5章for循环程序设计(0909NITL).ppt_第3页
第3页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第5章for循环程序设计(0909NITL).ppt》由会员分享,可在线阅读,更多相关《第5章for循环程序设计(0909NITL).ppt(29页珍藏版)》请在三一文库上搜索。

1、1,第 5 章 for 循环程序设计,2,5.1 for循环结构: C语言中的for循环语句比较复杂些,也比较灵活,功能较强,虽然主要用于定数循环,但也可以用于不定数循环,它完全可以替代while循环.,1. for 循环语句的一般形式: for(表达式1 ; 表达式2 ; 表达式3) 循环体 ,3,for(表达式1 ; 表达式2 ; 表达式3) 循环体 ,设置循环 变量初值,判断表达式,循环变 量增值,4,例5.1: 求100之内各数之和: #include int main( ) int i , sum=0; for( i=1;i=100; i+) sum+=i ; printf(“1+2

2、+100=%d”,sum); return 0; ,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仅是为了说明其的语法作用。,6,说明: 表达式缺省的for( )语句: for( )语句中的三个表达式可以省略其中一个, 二个,甚至三个。 但无论省略几个,其中的二个分号不能省。,如果在for语句之前,给

3、循环变量已赋值,表达式1可省去。分号不能省。如: sum=0; i=1; for( ; i=100 ; i+) sum=sum+i ;,表达式1可省去,7,3. 如果表达式2省略,C编译程序认为其值恒为真, 无限循环下去。 如: for(i=1 ; ; i+) sum=sum+ i ;,2. 表达式3也可省去: 如:for(i =1 ; i =100 ; ) sum=sum+i; i+; ,可把变量增值部分放在循环体内.,可在循环体内加 break 语句跳出循环.,表达式3可省去,表达式2可省去,8,4. 甚至三个表达式都可省略: for( ; ; ) 语句 ;,例: int main() i

4、nt i=1, sum=0; for( ; ; ) sum+=i; i+; if( i10000) break ; ,这种无限循环可用break 语句来终止循环,避免产生死循环.,9,补充: 逗号运算符(顺序运算符): 级别最低的一种。用它将二个表达式联起来。 逗号表达式的一般形式: 表达式1,表达式2,如:a = 3*5 , a=a*4 逗号表达式 先求解3*5,得a的值为15,然后求解第二表达式a*4,得60。,求解过程是: 先求解表达式1,再求解表达式2,整个逗号表达式的值为表达式2的值。,10,一般形式还可扩展: 表达式1,表达式2 , ,表达式n 整个表达式的值为表达式n的值。,注:

5、 a. 在很多情况下,使用逗号表达式的目的只是想得 到各个表达式的值,并非一定需要得到或使用整个 表达式的值。 b. 并非任何出现逗号的地方都是逗号运算符. 如: printf(“%d,%d,%d”, a,b,c); 其中的逗号就不是。,11,5含逗号运算符的for语句 for语句中 ,表达式1、表达式3可以使用逗号运算符: 如: for( i=1, j=20 ; i j ; i+ , j-),两个或两个以上 的变量共同实现 对循环的控制,注: 有时各表达式也可以是与循环无关的语句.,12,例5.2 输入一个110的自然数,求这个数的阶乘.,#include int main( ) int i

6、,n, s=1; scanf(“%d“, ,ch5_5_2.c,13,例5.3 输入一个正整数,逆序输出.,#include int main( ) int num; int digit; printf(“Input anumber:t“); scanf(“%d“, ,14,例5.4 输入不多于10个实数,求这些数的和及其中 正数之和.(若不足10个数,以0 为结束标志),#include #include int main( ) float sum,psum,x; int i=1; .,15,for(sum=psum=0.0, i=0 ; i10 ; i+) scanf(“%f“, ,ch5

7、_5_4.c,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.c,17,对于for语句的进一步说明: (1). 表达式1可以是设置变量初值的赋值表达式,也可是与 循环变量 无关的其它表达式. 如: for(sum=0; i100; i+) sum=sum+i;,(2). 表达式2一般是关系表达式或逻辑表达式,但也可以是

8、 其它类型表达式,只要其值为非零,就执行循环体. 如: for(i=0; ( c=getchar( ) ) != n ; i+=c) ; ( 不断输入字符,将ASCII码累加,直到输入一个换行符.),18,(3). f or循环的条件检查总是在循环开始前进行的,如果 一开始条件为假(为零),则循环一次也不执行. main( ) int x, y=10; for(x=10; x10; -y) printf(“%d”,y); printf(“%d”, x); ,19,(5). 当for语句的循环体是空语句时,则成为空循环体的for 语句,利用它可以实现某些特殊功能,比如产生时间延迟 等. 如下例:

9、 for (t=0; tvalue; t+) ;,空循环体,20,5.2 循环嵌套: for 语句一般用于具有明确循环次数的情况,如果 事先不知道准确的循环次数,只知道循环条件,一般用 while 或 do while 语句.,循环是可以嵌套的.循环嵌套是指一个循环体内又可包含另一个完整的循环称为 循环嵌套。 里面的循环又可嵌套另一个循环,叫多层循环的嵌套。,21,已知的三种循环: while( ) , do - while( ) , for( ) 可以相互嵌套。,如: while( ) for( ) do while( ) while( ); ,注: 但循环嵌套不允许交叉,22,例: 问程序

10、输出的结果? main() int i=1,a=0; for(; i=5; i+) do i+; a+; while(i3); i+; printf(“a=%d,i=%dn”,a,i); ,23,例5.6: 打印一张九九乘法表.,#include int 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,外循环控制行数.,内循环控制每行的输出数据.,24,例5.7: 打印如下一张图形.,#include i

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

12、( ) 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 407,26,第 5 章 For 循环程序设计 结束,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+)

13、 if(j%2) continue; x+; x+; printf(“x=%dn”,x); ch5-ex10.c,. 外层for循环执行二次. 每次外循环时,内循环要执行4次. . 每次内循环时,当j=1,或j=3时, 内循环的x+不执行.,i=0 i=0 i=0 i=0 i=1 i=1 i=1 i=1 j=0 j=1 j=2 j=3 j=0 j=1 j=2 j=3 x=2 x=2 x=3 x=4 x=6 x=6 x=7 x=8,/*明确语句的从属关系*/,28,注: 外层for循环执行二次,每次外循环时, 内循环要执行4次. 每次内循环时,当j=1,或j=3时,内循环的 x+不执行.,29,例:一球从100米高度自由落下,每次落地后都弹回原高度一半落下,求它在第10次落地时, 共经过多少米?第10次反弹多高?,main() float sn=100,hn=sn/2; int n; for(n=2;n=10;n+) sn=sn+2*hn; hn=hn/2; printf(“%f m.n”,sn); printf(“%f m.n”,hn); ,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1