版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计循环结构程序设计第5章学习目标掌握循环的三种语句及其执行流程2了解循环结构程序设计的基本方法1能运用for语句实现循环结构的程序设计4掌握while、do-while和for语句构成循环嵌套结构设计5能运用while语句及do-while语句实现循环结构的程序设计3掌握循环结构中break语句和continue语句的使用方法63.1C语言语句5.1while语句while语句又称“当型”循环语句,其一般形式为:while(表达式){循环体语句;}执行过程:首先计算表达式的值,若表达式为非0值(真),则执行while语句中的循环体语句,然后再次计算表达式的值;若表达式为非0值(真),则再次执行循环体语句;依次循环,直到表达式的值为0(假)时,结束循环。【例5-1】用while语句求1+2+3+…+100的和。#include<stdio.h>voidmain(){intn=1,sum=0;while(n<=100){sum=sum+n;n++;}printf("sum=%d\n",sum);}运行结果:sum=50505.1while语句循环体语句可以是一条,也可以是多条。当有多条语句时,应使用复合语句{}将它们括起来。while循环又称当型循环,用于循环次数不确定、但结束条件特别明显的情况。当循环条件不成立时退出循环,此外,遇到break语句也会退出循环,后续章节会具体讲解break语句的用法。循环体语句中,一定要有改变循环条件的语句,使循环最终能够终止。编程时要避免死循环的出现。当循环条件初值为0时,循环体可能一次也不执行。3.1C语言语句5.2do-while语句do-while语句又称“直到型”循环语句,其一般形式如下:do{循环体语句;}while(表达式);执行过程:首先要执行一次do后面的语句,之后才判断条件表达式。若其值不为0,则再次执行do后面的语句;若值为0,则终止执行do语句,结束循环。注意:while表达式后面的“;”不能省略。【例5-2】用do-while语句求1+2+3+…+100的和。程序代码:#include<stdio.h>voidmain(){intn=1,sum=0;do{sum=sum+n;n++;}while(n<=100);printf("sum=%d\n",sum);}运行结果:sum=50503.1C语言语句5.3for语句for语句是多功能语句,使用灵活方便,不但可用于循环次数确定的情况,还可用于循环次数不确定而给出循环结束条件的情况。for语句可完全代替while语句。其一般形式为:for(表达式1;表达式2;表达式3){循环体语句;}【例5-3】用for语句求1+2+3+…+100的和。#include<stdio.h>voidmain(){intn,sum=0;for(n=1;n<=100;n++)sum=sum+n;printf("sum=%d\n",sum);}运行结果:sum=50503.1C语言语句5.3for语句for语句的一般形式可以有如下变化:(1)省略表达式1:for(;表达式2;表达式3),表达式1是变量赋初值,也可以在for语句之前赋初值;(2)省略表达式2:for(表达式1;;表达式3),表达式2是循环控制条件,省略表示循环条件永为“真”,会无限循环。(3)省略表达式3:for(表达式1;表达式2;),表达式3是循环变量增量,省略表示将其放在循环体语句部分。这3个表达式可省略1个或者2个或者全部省略,如for(;;),不论省略哪个表达式,里面的分号一个都不能省略。【例5-4】从键盘输入两个整数,分别赋给变量m和n(假定m<=n),使用for语句,计算m值递增为n值的过程中累加整数之和并输出结果。#include<stdio.h>voidmain(){intm,n,sum;scanf("%d,%d",&m,&n);for(sum=0;m<=n;){sum=sum+m;m++;}printf("sum=%d\n",sum);}输入:1,100输出:sum=50503.1C语言语句5.3for语句【例5-5】使用逗号运算符的for语句的程序。程序代码:#include<stdio.h>voidmain(){inti,j,k;for(i=0,j=5;i<=j;i++,j--){k=i+j;printf("%d+%d=%d\n",i,j,k);}}【例5-6】输出所有的“水仙花数”。所谓水仙花数,是指一个三位数,其各位数字的立方和等于该数本身。例如,153是一个水仙花数,因为满足条件:153==13+53+33。程序代码:#include<stdio.h>voidmain(){inta,b,c,n;for(n=100;n<1000;n++){a=n/100;/*分解出百位*/b=n/10%10;/*分解出十位*/c=n%10;/*分解出个位*/if(n==a*a*a+b*b*b+c*c*c)printf("%d\n",n);}}for语句的表达式1和表达式3都由逗号表达式组成,用于完成多个变量的赋初值和多个循环变量的增值。3.1C语言语句5.4循环嵌套循环体内又出现循环结构称为循环嵌套或多重循环,用于较复杂的循环问题。三种循环语句for、while、do-while可以互相嵌套自由组合。但要注意的是,各循环必须完整,相互之间不允许交叉,并且内、外循环的循环控制变量不能同名。【例5-7】打印输出九九乘法表。#include<stdio.h>voidmain(){intm,n;for(m=1;m<=9;m++)//外循环控制行数{for(n=1;n<=m;n++)//内循环控制每行输出的列数printf("%d*%d=%d\t",n,m,m*n);printf("\n");}}【例5-8】使用循环嵌套的方法编写程序,输出如下图形。#include<stdio.h>voidmain(){intm,n;for(m=1;m<=5;m++)//外循环控制行数{for(n=1;n<=6-m;n++)printf("");//内循环1控制每行输出的空格数for(n=1;n<=2*m-1;n++)printf("*");//内循环2控制每行输出的"*"数printf("\n");}}3.1C语言语句5.5break语句和continue语句1.break语句的形式如下:break;break语句是中止语句。我们在学习选择结构时了解到,用break语句可以跳出switch结构,break语句还可以用来从while、do-while、for等循环中跳出,即提前结束本层循环,继续执行循环体下面的语句。【例5-9】
编写程序,求300以内能被17整除的最大的数。#include<stdio.h>voidmain(){intx;for(x=300;x>=1;x--)if(x%17==0)break;printf("x=%d\n",x);}【例5-10】
编写程序,确定整数n是否为质数。#include<stdio.h>voidmain(){inti=1;intn=1234;while(++i<n)if(n%i==0){printf("notprime\n");break;}if(i==n)printf("prime\n");}3.1C语言语句5.5break语句和continue语句2.continue语句continue语句的形式如下:continue;continue语句用于结束当前循环,并使程序跳过continue语句后面的所有语句,直接进行下一次的循环判断。对于while循环和do-while循环,遇到continue语句后,程序不会执行该语句后面的语句,而是直接跳到循环控制条件的测试部分,以决定循环是否继续执行。在for循环中,遇到continue语句后,程序同样不执行continue语句后面的语句,但会先执行表达式3的求值,再执行表达式2的测试,最后决定循环是否继续执行。【例5-11】
编写程序,求300以内能被17整除的所有整数。程序代码:#include<stdio.h>voidmain(){intx;for(x=1;x<=300;x++){if(x%17!=0)continue;printf("%-5d",x);}}运行过程及结果:17345168851021191361531701872042212382555.6程序举例#include<stdio.h>voidmain(){intf1=1,f2=1,i;for(i=1;i<21;i++){printf("%15d%15d",f1,f2);f1=f1+f2;f2=f2+f1;if(i%2==0)printf("\n");}}1123581321345589144233377610987159725844181676510946177112865746368750251213931964183178115142298320401346269217830935245785702887922746514930352241578173908816963245986102334155【例5-12】
斐波那契数列(Fibonaccisequence)又称黄金分割数列,该数列前两项为1,从第三项开始为前两项的和,其数值为1、1、2、3、5、8、13、21、34…。编程求斐波那契数列的前40项。5.6程序举例【例5-13】
按如下格式输出矩阵。#include<stdio.h>voidmain(){ inti,j; for(i=1;i<5;i++) { for(j=1;j<5;j++) { printf("%5d",i*j); } printf("\n"); }}
5.6程序举例【例5-14】
求出1000以内13和18的所有公倍数。#include<stdio.h>voidmain(){inti=1;while(i<1000){if(i%13==0&&i%18==0)printf("%5d",i);i++;}}运行结果:2344687029363.5本章小结5.7本章小结(1)while语句,是先判断后执行,循环体语句可能一次都不执行。while(表达式
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国家事业单位招聘2024国家课程教材研究所招聘(二)笔试历年参考题库典型考点附带答案详解
- 2026年长沙民政职业技术学院单招职业倾向性测试题库附答案详解(模拟题)
- 2025年邵阳市新邵县中心敬老院公开选调工作人员备考题库完整答案详解
- 国家事业单位招聘2024四川测绘地理信息局所属事业单位招聘人员(本硕岗)笔试历年参考题库典型考点附带答案详解
- 国家事业单位招聘2024中央芭蕾舞团招聘事业单位人员1人笔试历年参考题库典型考点附带答案详解
- 2026年驻马店职业技术学院单招职业倾向性测试题库附答案详解(黄金题型)
- 2026年陕西工业职业技术学院单招职业适应性考试题库附参考答案详解(模拟题)
- 国家事业单位招聘2023中国国家画院招聘拟聘人员笔试历年参考题库典型考点附带答案详解
- 四川省四川华蓥市天池镇便民服务中心招收就业见习人员笔试历年参考题库典型考点附带答案详解
- 四川省2024年上半年四川金阳县事业单位考试招聘工作人员(20人)笔试历年参考题库典型考点附带答案详解
- 高手运镜:手机短视频拍摄镜头大全
- 《机械制图与CAD》教案
- 技术规范书柴油发电机组
- 2023学年完整公开课版激光焊接
- 2015-2022年江苏农林职业技术学院高职单招语文/数学/英语笔试参考题库含答案解析
- GB/T 25389.2-2010风力发电机组低速永磁同步发电机第2部分:试验方法
- GB/T 19092-2003煤粉浮沉试验方法
- 古诗词诵读《江城子 乙卯正月二十日夜记梦》课件(19张PPT)
- 家庭教育重要性课件设计
- 公共关系的产生及其发展课件
- 《建筑环境与能源应用工程专业概论》配套教学课件
评论
0/150
提交评论