




已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
语 言 程 序 设 计 第 三 章 c 语 言 程 序 设 计 基 础 C 第三章 循环结构与应用 循环结构是程序中一种很重要的结构 。它会根据条件反复执行某程序段,当然 不能无限的执行下去,在给定条件不成立 时,循环就会停止。给定的条件称为循环 条件,反复执行的程序段称为循环体。 语 言 程 序 设 计 第 三 章 c 语 言 程 序 设 计 基 础 C 语言提供了多种循环语句,可以组成各种不同 形式的循环结构: (1) for循环语句; (2) while循环语句; (3) do-while循环语句; 3.1 循环的概述 语 言 程 序 设 计 第 三 章 c 语 言 程 序 设 计 基 础 C for一般形式为: for(设置初始值;循环条件判断;设置循环增减量) 语句1; 语句2; 语句n; 3.2 for循环 语 言 程 序 设 计 第 三 章 c 语 言 程 序 设 计 基 础 C for语句的执行流程: 图3-1 for语句执行流程图 语 言 程 序 设 计 第 三 章 c 语 言 程 序 设 计 基 础 C 例3-1 使用for循环求整数1加到100的值。 图3-3 高斯级数运算的流程图 语 言 程 序 设 计 第 三 章 c 语 言 程 序 设 计 基 础 C #include void main(void) int nSum;/* 用于保存计算和*/ int i; /* 循环控制变量,也是参与运算的操作数*/ nSum=0; for(i=1;i=右移并赋值 语 言 程 序 设 计 第 三 章 c 语 言 程 序 设 计 基 础 C 复合赋值表达式的一般形式为: 表达式1 Op= 表达式2 Op表示参与构成复合赋值运算符的双目运算 符,它和下面的赋值表达式等价: 表达式1 = (表达式1) Op (表达式2) 例如:x+=y-3等价于x=x+(y-3),而不是 x=x+y-3。 语 言 程 序 设 计 第 三 章 c 语 言 程 序 设 计 基 础 C 注意: +i和i+等价于i=i+1,但是,这两个表达式在参与 其他运算的时候是有区别的。在和其他运算结合在 一起时,+i表示i自增1后再参与其它运算,而i+ 表示i参与运算后,i的值再自增1。同理,-i是i自减 1后再参与其它运算,而i-是i参与运算后,i的值再 自减1。例如下面的程序段: int x=0,int i=1; x=i+; printf(“x=%d,i=%d”,x,i); 输出的结果为x=1,i=2。 语 言 程 序 设 计 第 三 章 c 语 言 程 序 设 计 基 础 C 例3-2 使用逗号运算符在for循环中初始化变量。 #include void main (void) int nSum; /* 用于保存计算和*/ int i; /* 循环控制变量,也是参与运算的操作数*/ /*在循环开始时,初始化变量nSum*/ for(i=1,nSum=0;i void main (void) int i; for(i=0;i void main (void) char cStr; /* 用于保存输入的字符*/ cStr=0; while(cStr !=q) cStr=getch(); /*换成scanf执行一下,看有何不同*/ /*在此可以添加任何代码段*/ printf(“Iteration is end .n“); 程序清单3-5checkcharactor.c 语 言 程 序 设 计 第 三 章 c 语 言 程 序 设 计 基 础 C 例3-6 用while循环实现从1加到100的计算。 #include void main (void) int nSum; /* 用于保存计算和*/ int i; /* 循环控制变量,也是参与运算的操作数*/ nSum=0; i=1; /*初始化循环控制变量*/ while(i void main (void) int nSum; /* 用于保存计算和*/ int i; /* 循环控制变量,也是参与运算的操作数*/ nSum=0; i=1; /*初始化循环控制变量*/ do nSum+=i; i+; /*改变循环控制变量的值*/ while(i void main (void) int nRow; /*行数的循环控制变量*/ int nCol; /* 列数循环控制变量*/ for(nRow=1;nRow void main (void) float fScore; /* 用于保存输入的成绩*/ float fMin=0.0f; float fMax=100.0f; float fTotal=0.0f; /* 保存总成绩*/ int nCount=0; /* 对输入的成绩个数进行计数*/ while(scanf(“%f“, printf(“Average of %d score is %0.1fn“,nCount,fTotal/nCount); else printf(“No valid scroe was Input!“); 程序清单3-11 break.c 语 言 程 序 设 计 第 三 章 c 语 言 程 序 设 计 基 础 C 注意: (1)break语句不能用于循环语句和switch语句之 外的任何其他语句中。 (2)在嵌套循环中,break语句只能终止它所在的 循环的执行。 本例中break语句的作用就是结束循环的执行,强制退出循环, 程序继续执行循环后的程序语句。 语 言 程 序 设 计 第 三 章 c 语 言 程 序 设 计 基 础 C continue语句 continue的作用与break语句相似,也有结束循环 的作用,但是continue语句是结束本次循环,即跳过 循环体中下面尚未执行的语句,接着进行下一次是 否执行循环的判定。 continue语句的一般形式为: continue; 语 言 程 序 设 计 第 三 章 c 语 言 程 序 设 计 基 础 C #include void main (void) float fScore; /* 用于保存输入的成绩*/ float fMin=0.0f,fMax=100.0f; float fTotal=0.0f; /* 保存总成绩*/ int nCount=0; /* 对输入的成绩个数进行计数*/ while(scanf(“%f“, printf(“Average of %d score is %0.1fn“,nCount,fTotal/nCount); else printf(“No valid scroe was Input!“); 程序清单3-12 continue.c 程序实现 将程序清单3-11进行一下简单的修改,将break语句替换成continue语句。请读者分 析程序执行的结果,体会这两种跳出循环体语句的作用和对程序流程的影响。 语 言 程 序 设 计 第 三 章 c 语 言 程 序 设 计 基 础 C 注意: (1)break语句则是结束整个循环过程,不再判断执行 循环的条件是否成立。 (2)continue语句只结束本次循环,而不是终止整个 循环的执行。 语 言 程 序 设 计 第 三 章 c 语 言 程 序 设 计 基 础 C goto语句 goto语句为无条件转向语句,一般形式为: goto 语句标号; 语句标号用标识符表示,即由字母、数字和下划线组成, 且第一个字符必须为字母或下划线,不能用整数来做标号 。语句标号加在跳转的目的语句之前,并用冒号(:)与后 面的语句分隔。例如, goto lable_123; 是合法的,而 goto 25; 是不合法的。 语 言 程 序 设 计 第 三 章 c 语 言 程 序 设 计 基 础 C 3.7 程序举例 例:下面对计算器做如下功能的扩充: (1) 增加菜单循环执行的功能; (2) 实现三角函数正弦函数的功能(sin函数); (3) 实现三角函数余弦函数的功能(cos函数)。 3.7.1 计算器 语 言 程 序 设 计 第 三 章 c 语 言 程 序 设 计 基 础 C (1) 菜单反复执行功能 既然是要菜单反复 执行,它必然是个重复 性的工作,自然就可以 使用这章讲解的循环语 句来实现。在此采用 while循环语句实现该功 能。 图3-22 重复使用菜单功能的流程图 语 言 程 序 设 计 第 三 章 c 语 言 程 序 设 计 基 础 C #include #include void main() int nFun=1; while(nFun!=9) system(“cls“);/clrscr(); printf(“ -n“); /* 构造功能菜单 */ printf(“ 加法运算-1n“); printf(“ 减法运算-2n“); printf(“ 除法运算-3n“); printf(“ 乘法运算-4n“); printf(“ 退出-9n“); printf(“ -n“); printf(“ 请输入功能选择: “); /* 在屏幕上显示提示信息 */ scanf(“%d“, switch(nFun) case 1: /*加法运算过程 */ break; case 2: /*减法运算过程 */ break; /*此处省略其他计算过程的case 选项*/ case 9: break; default :printf(“输入的选项编码错误!按任意键返回菜单.n“);getch(); 程序清单3-13 AppCalc.c 语 言 程 序 设 计 第 三 章 c 语 言 程 序 设 计 基 础 C (2) 三角函数sin函数和cos函数的实现 在高等数学中实现sin函数和cos函数的方法不止一种。 在这里,采用的是泰勒(Taylor)公式进行实现。 首先分别看下它们的泰勒展开式的形式: 语 言 程 序 设 计 第 三 章 c 语 言 程 序 设 计 基 础 C 图3-23 sin函数的实现流程图 语 言 程 序 设 计 第 三 章 c 语 言 程 序 设 计 基 础 C #include #include #include void main(void) int nFun=1; double dSin=0.0,dCos=0.0, dTemp=1.0, dArc=0.0; /*变量声明初始化*/ int k=0; double pi=3.1415926,dMin=0.000001,dDegree=0.0; while(nFun!=9) system(“cls“); /clrscr(); printf(“ -n“);/* 构造功能菜单 */ printf(“ 加法运算-1n“); printf(“ 减法运算-2n“); printf(“ 除法运算-3n“); printf(“ 乘法运算-4n“); printf(“ sinx运算-5n“); printf(“ cosx运算-6n“); printf(“ 退出-9n“); printf(“ -n“); printf(“ 请输入功能选择: “);/* 在屏幕上显示提示信息 */ scanf(“%d“, switch(nFun) 这里只给出sin函数和cos函数实现的程序片段,如程序清单3-15 AppCalc.c所 。 语 言 程 序 设 计 第 三 章 c 语 言 程 序 设 计 基 础 C case 1 /*省略加法运算过程 */ break; case 2: /*省略减法运算过程 */ break; case 3: /*省略乘法运算过程 */ break; case 4: /*省略除法运算过程 */ break; case 5: /*sinx运算过程 */ dSin=0.0; dTemp=1.0; dArc=0.0; k=0; dDegree=0; printf(“ 请输入弧度:“); scanf(“%lf“, dTemp=dDegree*pi/180; /*进行角度度量转换*/ dArc=dDegree*pi/180; while ( fabs(dTemp) dMin) /*泰勒展开项是否达到精度*/ dSin += dTemp; /*sin函数的泰勒展开式*/ k+= 2; /*利用前次运算结果计算泰勒展开项的值*/ dTemp = (-1) * dTemp*dArc*dArc/(k+1)*(k); printf(“ sin(%f) = %lf n“,dDegree,dSin); printf(“ 按任意键返回菜单.n“); getch(); break; 语 言 程 序 设 计 第 三 章 c 语 言 程 序 设 计 基 础 C case 6: /*cosx运算过程 */ dCos=0.0; /*变量初始化*/ dTemp=1.0; /*变量初始化*/ dArc=0.0; /*变量初始化*/ k=0; dDegree=0; printf(“ 请输入弧度:“); scanf(“%lf“, /*输入计算的弧度数据*/ dArc=dDegree*pi/180; /*进行角度度量转换*/ while ( fabs(dTemp) dMin) /*泰勒展开项是否达到精度*/ dCos += dTemp; /*cos函数的泰勒展开式*/ k+= 2; /*利用前次运算结果计算泰勒展开项的值*/ dTemp = (-1) * dTemp*dArc*dArc/(k-1)*(k); printf(“ cos(%f) = %lf n“,dDegree,dCos); printf(“ 按任意键返回菜单.n“); getch(); break; case 9: break; default : printf(“ 输入的选项编码错误!按任意键返回菜单.n“); getch(); 语 言 程 序 设 计 第 三 章 c 语 言 程 序 设 计 基 础 C 在第1章,学生成绩档案管理系统已经具备了数据的输入 和成绩分类分析的功能。不过,它只能进行单独的一次数 据处理。学习过循环结构以后,结合本章的知识点,增加 系统重复处理数据的能力,既检验对知识的实际应用能力 ,又把系统的功能进一步充实。下面对学生成绩档案管理 系统做如下功能的扩充: (1) 实现可控的数据处理; (2) 对多次输入的三门成绩(C语言、英语和高数)进行 分类求和。 3.7.2 学生成绩档案管理系统 语 言 程 序 设 计 第 三 章 c 语 言 程 序 设 计 基 础 C 图3-25 循环统计学生总成绩的流程图 语 言 程 序 设 计 第 三 章 c 语 言 程 序 设 计 基 础 C #include void ma
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第五章 透镜及其应用 单元测试卷(含答案) 2025-2026学年人教版(2024)八年级物理上册
- 2025年河南省南阳市方城县中考化学三模试卷(含答案)
- 2025年国家电网招聘之人力资源类通关提分题库及完整答案
- 2025年刑事诉讼法考试卷及答案
- 2025年天津市省直机关公开遴选公务员笔试题及答案解析(A类)
- 变压器基础砌筑施工方案
- 2025年国考(地市)常识判断真题附参考答案(a卷)
- 儿童激素耐药型肾病综合征基因检测及其管理临床实践指南 3
- 酒店管事部安全培训课件
- 2025标准版私人借款合同模板
- 2025广东房屋租赁合同范本官方版
- 新版中华民族共同体概论课件第八讲共奉中国与中华民族内聚发展(辽宋夏金时期)-2025年版
- 2025定制衣柜安装承揽合同范本
- 2025年MicroLED行业研究报告及未来行业发展趋势预测
- 《彩虹》课件 部编版语文二年级上册
- 2025年全国企业员工全面质量管理知识竞赛试题及答案
- 麻醉恢复室护理要点
- 水下激光探测-洞察及研究
- 7.2 量身高(课件)-2025-2026学年三年级数学上册北师大版
- DB44∕T 2499-2024 海堤生态化建设技术导则
- GWZBQ-10(6)G 型微机高压启动器保护装置产品使用说明书
评论
0/150
提交评论