




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
循环结构是程序中一种很重要的结构。其特点是, 在给定条件成立时,反复执行某程序段,直到条件不成立为止。 给定的条件称为循环条件,反复执行的程序段称为循环体。 C语言提供了多种循环语句,可以组成各种不同形式的循环结构。 while语句 while语句的一般形式为: while(表达式)语句; 其中表达式是循环条件,语句为循环体。 while语句的语义是:计算表达式的值,当值为真(非0)时, 执行循环体语句。其执行过程可用图34表示。 统计从键盘输入一行字符的个数。 #include void main() int n=0; printf(input a string:n); while(getchar()!=n) n ; printf(d,n); int n=0; printf(input a string:n); while(getchar()!=n) n ; printf(d,n); 本例程序中的循环条件为getchar()!=n,其意义是, 只要从键盘输入的字符不是回车就继续循环。循环体n 完成对输入字符个数计数。从而程序实现了对输入一行字符的字符个数计数。 使用while语句应注意以下几点: 1.while语句中的表达式一般是关系表达或逻辑表达式,只要表达式的值为真(非0)即可继续循环。 void main() int a=0,n; printf(n input n: ); scanf(d,&n); while (n-) printf(d ,a *2); int a=0,n; printf(n input n: ); scanf(d,&n); while (n-) printf(d ,a *2); 本例程序将执行n次循环,每执行一次,n值减1。循环体输出表达式a *2的值。该表达式等效于(a*2;a ) 2.循环体如包括有一个以上的语句,则必须用括起来, 组成复合语句。 3.应注意循环条件的选择以避免死循环。 void main() int a,n=0; while(a=5) printf(d ,n ); int a,n=0; while(a=5) printf(d ,n ); 本例中while语句的循环条件为赋值表达式a=5, 因此该表达式的值永远为真,而循环体中又没有其它中止循环的手段, 因此该循环将无休止地进行下去,形成死循环。4.允许while语句的循环体又是while语句,从而形成双重循环。 do-while语句 do-while语句的一般形式为: do 语句; while(表达式); 其中语句是循环体,表达式是循环条件。 do-while语句的语义是: 先执行循环体语句一次, 再判别表达式的值,若为真(非0)则继续循环,否则终止循环。 do-while语句和while语句的区别在于do-while是先执行后判断,因此do-while至少要执行一次循环体。而while是先判断后执行,如果条件不满足,则一次循环体语句也不执行。 while语句和do-while语句一般都可以相互改写。 void main() int a=0,n; printf(n input n: ); scanf(d,&n); do printf(d ,a *2); while (-n); int a=0,n; printf(n input n: ); scanf(d,&n); do printf(d ,a *2); while (-n); 在本例中,循环条件改为-n,否则将多执行一次循环。这是由于先执行后判断而造成的。 对于do-while语句还应注意以下几点: 1.在if语句,while语句中, 表达式后面都不能加分号, 而在 do-while语句的表达式后面则必须加分号。 2.do-while语句也可以组成多重循环,而且也可以和while语句相互嵌套。 3.在do和while之间的循环体由多个语句组成时,也必须用括起来组成一个复合语句。 4.do-while和while语句相互替换时,要注意修改循环控制条件。 for语句 for语句是C语言所提供的功能更强,使用更广泛的一种循环语句。其一般形式为: for(表达式1;表达式2;表达3) 语句: 表达式1通常用来给循环变量赋初值,一般是赋值表达式。也允许在for语句外给循环变量赋初值,此时可以省略该表达式。 表达式2通常是循环条件,一般为关系表达式或逻辑表达式。 表达式3通常可用来修改循环变量的值,一般是赋值语句。 这三个表达式都可以是逗号表达式, 即每个表达式都可由多个表达式组成。三个表达式都是任选项,都可以省略。 一般形式中的“语句”即为循环体语句。for语句的语义是: 1.首先计算表达式1的值。 2.再计算表达式2的值,若值为真(非0)则执行循环体一次, 否则跳出循环。 3.然后再计算表达式3的值,转回第2步重复执行。在整个for循环过程中,表达式1只计算一次,表达式2和表达式,3则可能计算多次。循环体可能多次执行,也可能一次都不执行。for 语句的执行过程如图所示。 void main() int n,s=0; for(n=1;n=100;n ) s=s n; printf(s=dn,s); 用for语句计算s=1 2 3 . 99 100 int n,s=0; for(n=1;n0;a ,n-) printf(d ,a*2); 用for语句修改例题。从0开始,输出n个连续的偶数。 int a=0,n; printf(n input n: ); scanf(d,&n); for(;n0;a ,n-) printf(d ,a*2); 本例的for语句中,表达式1已省去,循环变量的初值在for语句之前由scanf语句取得,表达式3是一个逗号表达式,由a ,n- 两个表达式组成。每循环一次a自增1,n自减1。a的变化使输出的偶数递增,n的变化控制循次数。 在使用for语句中要注意以下几点 1.for语句中的各表达式都可省略,但分号间隔符不能少。如:for(;表达式;表达式)省去了表达式1。for(表达式;表达式)省去了表达式2。 for(表达式;表达式;)省去了表达式3。for(;)省去了全部表达式。 2.在循环变量已赋初值时,可省去表达式1,如例3.27即属于这种情形。如省去表达式2或表达式3则将造成无限循环, 这时应在循环体内设法结束循环。例题即属于此情况。 void main() int a=0,n; printf(n input n: ); scanf(d,&n); for(;n0;) a ;n-; printf(d ,a*2); int a=0,n; printf(n input n: ); scanf(d,&n); for(;n0;) a ;n-; printf(d ,a*2); 本例中省略了表达式1和表达式3,由循环体内的n-语句进行循环变量n的递减,以控制循环次数。 void main() int a=0,n; printf(n input n: ); scanf(d,&n); for(;) a ;n-; printf(d ,a*2); if(n=0)break; int a=0,n; printf(n input n: ); scanf(d,&n); for(;) a ;n-; printf(d ,a*2); if(n=0)break; 本例中for语句的表达式全部省去。由循环体中的语句实现循环变量的递减和循环条件的判断。当n值为0时,由break语句中止循环,转去执行for以后的程序。在此情况下,for语句已等效于while( 1)语句。如在循环体中没有相应的控制手段,则造成死循环。 3.循环体可以是空语句。 #includestdio.h void main() int n=0; printf(input a string:n); for(;getchar()!=n;n ); printf(d,n); 本例中,省去了for语句的表达式1,表达式3也不是用来修改循环变量,而是用作输入字符的计数。这样, 就把本应在循环体中完成的计数放在表达式中完成了。因此循环体是空语句。应注意的是,空语句后的分号不可少,如缺少此分号,则把后面的printf 语句当成循环体来执行。反过来说,如循环体不为空语句时, 决不能在表达式的括号后加分号, 这样又会认为循环体是空语句而不能反复执行。这些都是编程中常见的错误,要十分注意。 4.for语句也可与while,do-while语句相互嵌套,构成多重循环。以下形成都合法的嵌套。 (1)for() while() (2)d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学音乐教学:校园植物主题歌曲创作与演唱指导论文
- 运动损伤知识普及对学生身体素质的促进论文
- 艺术插花室管理制度
- 花茶厂员工管理制度
- 茶叶审评室管理制度
- 陶瓷特价砖管理制度
- 财务会计课题申报书:《高职院校财务会计教学瓶颈与对策》课题申报材料
- 课题申报书:新质生产力驱动下职业教育专业结构优化与转型升级探索
- 建筑工程技术施工员专业介绍
- 大班社会收获果实少儿英语幼儿教育教育专区
- 2025浙江嘉兴市海宁市嘉睿人力招聘5人笔试参考题库附带答案详解析版
- 党课课件含讲稿:《关于加强党的作风建设论述摘编》辅导报告
- GB/T 19023-2025质量管理体系成文信息指南
- 2025中考历史高频点速记大全
- 2025年北京西城区九年级中考二模英语试卷试题(含答案详解)
- T/CECS 10378-2024建筑用辐射致冷涂料
- 多余物管理制度
- 2024北京朝阳区三年级(下)期末语文试题及答案
- DL5190.5-2019电力建设施工技术规范第5部分:管道及系统
- 河南省郑州市高新区2023-2024学年下学期七年级期末英语试卷
- 国家开放大学《会计学概论》形考任务1-4参考答案
评论
0/150
提交评论