收藏 分享(赏)

第5章 for循环程序设计(09_09_NIT_L).ppt

上传人:hskm5268 文档编号:8611180 上传时间:2019-07-05 格式:PPT 页数:29 大小:440.50KB
下载 相关 举报
第5章 for循环程序设计(09_09_NIT_L).ppt_第1页
第1页 / 共29页
第5章 for循环程序设计(09_09_NIT_L).ppt_第2页
第2页 / 共29页
第5章 for循环程序设计(09_09_NIT_L).ppt_第3页
第3页 / 共29页
第5章 for循环程序设计(09_09_NIT_L).ppt_第4页
第4页 / 共29页
第5章 for循环程序设计(09_09_NIT_L).ppt_第5页
第5页 / 共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+100

2、=%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语句之前,给循环变量已赋值,表达式1可省

3、去。分号不能省。如: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() int i=1, sum=0;for( ; ;

4、) 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的值。,注:a. 在很多情况下,使用逗号表达式的目的只是想得到各个表达式的值

5、,并非一定需要得到或使用整个表达式的值。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,n, s=1;scanf(“%d“,ch5_5_2.c,13,例5.3 输入一

6、个正整数,逆序输出.,#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_5_4.c,16,例5.5 计算输入一行字符串的字符个数.,#include int main( )

7、 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一般是关系表达式或逻辑表达式,但也可以是 其它类型表达式,只要其值为非零,就执行循环体. 如:for(i=0; ( c=getchar( ) ) !=

8、 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 语句,利用它可以实现某些特殊功能,比如产生时间延迟 等. 如下例: for (t=0; tvalue; t+) ;,空循环体,20,5.2 循环嵌套:for 语句一般用于具有明确循环次数

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

10、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 int main() int i,j,k; for(i=0; i5; i+) for(j=0; j=i; j+)printf(“ “); f

11、or(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( ) int i,j,k; for(i=1; i=9; i+) for(j=0; j=9; j+) for(k=0; k=9; k+) if

12、(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+) if(j%2) continue;x+; x+;printf(“x=%dn”,x); ch5-ex10.c,. 外层for循环执行二次.每次外循环时

13、,内循环要执行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); ,

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报