第六章 循环结构程序设计 概述 while 语句 do-while 语句 for 语句 循环的嵌套 几种循环的比较

Slides:



Advertisements
Similar presentations
While 迴圈 - 不知重複執行次數
Advertisements

CSIM, PU C Language Introduction to the C Programming Language 重覆敘述 (for,while,break,continue) 適合重複性的計算或判斷.
《C语言程序设计》复习
C程序设计 第5章 循环结构 主讲教师: 鲁 萍 西安建筑科技大学 理学院.
第4章 條件判斷與迴圈 Java 2 程式設計入門與應用.
迴圈 迴圈基本觀念 while迴圈 do 迴圈 for迴圈 巢狀迴圈 迴圈設計注意事項 其他控制指令 迴圈與選擇的組合.
第4章 选择结构程序设计 选择结构是计算机科学用来描述自然界和社会生活中分支现象的手段。其特点是:根据所给定选择条件为真(即分支条件成立)与否,而决定从各实际可能的不同操作分支中执行某一分支的相应操作,并且任何情况下恒有“无论分支多寡,必择其一;纵然分支众多,仅选其一”的特性。
循环模式 流程图的画法: 条件 y 循环体 伪代码: n Do while 条件 循环体 loop 每个循环模式的结构都是一个入口,一个出口.
第六章 循环控制.
第一章 C语言概述 计算机公共教学部.
C 语言程序设计 主讲人:王 英.
数学建模与MATLAB 第五讲:循环结构(1) 2017/9/12.
第3章 While循环程序设计.
C语言程序设计教程 (第4版) 第5章 循环结构 李丽娟 2013年2月.
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
C#程序设计基础 $5 流程控制.
循环结构又称为重复结构:用来处理需要重复处理的问题,它是程序中一种很重要的结构。
C程序设计.
第 四 章 循环结构 while语句 do {} while 语句 break和continue语句
EBNF 请用扩展的 BNF 描述 C语言里语句的结构; 请用扩展的 BNF 描述 C++语言里类声明的结构;
循环结构 NEAU ACM-ICPC TEAM 主讲人:NEAU_ACM_Team.
第3章 C语言的基本语句 和程序结构设计.
Introduction to the C Programming Language
第5章 循环结构程序设计 5.1 为什么需要循环控制 5.2 用while语句实现循环 5.3 用do---while语句实现循环
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
C语言 程序设计基础与试验 刘新国、2012年秋.
第4章 算法与控制结构 本章要求: 掌握C语句、C语言程序的结构关系; 理解算法及算法的表示; 掌握顺序结构程序设计
第3讲 C++程序控制结构 3.1 顺序结构 3.2 分支结构 3.3 循环结构 3.4 转向控制 3.5 综合案例分析.
ENVI-IDL可视化程序设计 楚雄师范学院地理科学与旅游管理学院 杨云源 QQ:
第五章 循环结构的C程序设计 5.1 while循环语句 5.2 do-while循环语句 5.3 for循环语句 5.4 多重循环
第3章 选择结构与循环结构 王德俊 上海交通大学继续教育学院.
第二章 Java语言基础.
程序的三种基本结构 if条件分支语句 switch多路开关语句 循环语句 循环嵌套 break,continue和goto语句
計數式重複敘述 for 迴圈 P
第六章 循环控制.
第5讲 结构化程序设计(Part II) 周水庚 2018年10月11日.
授课老师:龚涛 信息科学与技术学院 2016年3月 教材:《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
第0章作业: 教材P12-练习与实践 1.写出用符号’*’输出描绘汉字”大”的流程图。
第4讲 C++程序控制结构(二) 4.1 循环结构 4.2 转向控制 4.3 综合案例分析.
C++程序设计 第三章 程序设计初步.
第4章 PHP流程控制语句.
程序的三种基本结构 if条件分支语句 switch多路开关语句 循环语句 循环嵌套 break,continue和goto语句
1.3 C语言的语句和关键字 一、C语言的语句 与其它高级语言一样,C语言也是利用函数体中的可执行 语句,向计算机系统发出操作命令。按照语句功能或构成的不 同,可将C语言的语句分为五类。 goto, return.
C语言概述 第一章.
程式結構&語法.
第三章 C++的语句和简单的程序设计 主要内容:
Java软件设计基础 3. 流程控制.
C++语言程序设计 C++语言程序设计 第三章 控制语句 第十一组 C++语言程序设计.
C语言程序设计.
C 语言程序设计 程序的循环结构 电大崇信县工作站 梁海亮.
目录 5.1循环结构程序设计的概述 5.2 用while语句实现循环结构程序设计 5.3 用do-while语句实现循环结构程序设计
第2章 算法与C语言程序 程序 (1)数据的描述:数据的类型和组织形式(数据结构) (2)操作的描述:操作步骤(算法) 沃思指出:
C语言程序设计 第一章 数据类型, 运算符与表达式 第二章 顺序程序设计 第三章 选择结构程序设计 第四章 循环控制 第五章 数组.
浙江长征职业技术学院—计算机与信息技术系—相方莉制作
《计算机应用基础》 第9章 程序设计基础(二).
几种基本语句 条件语句 广州市63中 岑光.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第九节 赋值运算符和赋值表达式.
算法初步 §1.1.2 程序框图.
College of Computer Science & Technology
1.2基本算法语句 1.2.3循环语句.
输入语句 输出语句 赋值语句 条件语句 循环语句
程序设计基础.
Do While 迴圈 東海大學物理系‧資訊教育 施奇廷.
单片机应用技术 (C语言版) 第4章 C51程序设计入门
五 循环结构程序设计 厦大附中信息技术.
第三讲 程序设计准备知识 一、程序编辑器.
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
1.2.3 循环语句.
C语言基础学习 从外行到入门.
Presentation transcript:

第六章 循环结构程序设计 概述 while 语句 do-while 语句 for 语句 循环的嵌套 几种循环的比较 第六章 循环结构程序设计 概述 while 语句 do-while 语句 for 语句 循环的嵌套 几种循环的比较 goto语句、break语句和continue语句

while语句、 for语句、do-while语句。 C提供三种基本的循环语句: while语句、 for语句、do-while语句。 一、while循环语句 while语句用来实现“当型”循环。while循环的一般形式为: while(表达式) 语句; while循环表示当表达式为真时, 便执行语句(循环体)。直到表达式为假才结束循环。并继续执行循环程序外的后续语句。 语句; 表达式 假(0) 真(非0)

例:输入一个正整数n,求2n i=1,p=1 输入n 当i<=n p=p*2 i++ 输出p #include<stdio.h> main( ) { int n, i=1 ; long p=1 ; printf(“input data n:”); scanf(“%d”,&n); while( i<=n ) { p=p*2; i++; } printf(“p=%ld”,p); i=1,p=1 输入n 当i<=n p=p*2 i++ 输出p

注意: while循环总是在循环开始前,检验表达式,即先判断, 后执行这就意味着循环可能一次也不执行就退出。 2. 语句可以是语句体, 语句体必须用“{”和“}”括起来, 构成复合语句。 3. 循环体中应有使循环趋向于结束的语句。否则将出现 死循环。 如: while (1) printf(“why?”); 4. while的循环体可以是空语句。 例如: while((putchar(getchar())!='\n') ; 这个循环的功能是:把用户输入的一行字符,逐个地 显示出来,直到按回车键为止。

二、do-while 循环 { 语句;} while(表达式); do-while语句用来实现“直到型”循环。 先执行,后判断。 它先执行循环中的语句,然后再判断表达式是否为真, 如果为 真则继续循环; 如果为假, 则终止循环。因此, do-while循环至 少要执行一次循环语句。 当有许多语句参加循环时, 要用“{”和“}”把它们括起来。而 且一般最好将do-while语句的循环体用“{”和“}”括起来。 假(0) 真(非0) 表达式 语句

while和do-while循环的比较 例如: 求 s=1+2+3+4…+100 #include<stdio.h> #include<stdio.h> main() main() {int sum=0,i=1; {int sum=0,i=1; while(i<=100) do {sum=sum+i; {sum=sum+i; i++; i++; } }while(i<=100) printf("%d",sum); printf("%d",sum); } }

for循环语句的执行过程: 三、 for循环语句 求解表达式1 for循环是C中使用最灵活的循环语句。 for语句的一般形式为: 假(0) 真(非0) 语句 求解表达式1 表达式2 求解表达式3 for 语句的 下一条语句 三、 for循环语句 for循环是C中使用最灵活的循环语句。 for语句的一般形式为: for(表达式1; 表过式2; 表达式3) 语句; for循环语句的执行过程:

说明: sum=0; for(i=1; i<=100; i++) sum += i; 100 例如: 求∑ i i=1 1. 表达式1一般总是一个赋值表达式, 它用来给循环控 制变量赋初值; 2. 表达式2一般是关系表达式或逻辑表达式, 它决定什 么时候退出循环; 3. 表达式3往往是定义循环控制变量每循环一次后按什 么方式增值。 100 例如: 求∑ i i=1 sum=0; for(i=1; i<=100; i++) sum += i; 上例中先给 i 赋初值1, 判断 i 是否小于等于100, 若是则 执行语句,之后 i 值增加1。再重新判断, 直到条件为假, 即 i>100时, 结束循环。

注意: for(; i<=100 ; ) { sum+=i; i++; } 参加循环的语句括起来。 2. for循环中的“表达式1”、“表达式2”和“表达式3”都 是可选项, 即可以缺省, 但";"不能缺省。 省略表达式1, 表示不对循环控制变量赋初值。 省略表达式2, 则不做其它处理时便成为死循环。 省略表达式3, 则不对循环控制变量进行操作, 这时可 在语句体中加入修改循环控制变量的语句,来保证循环正 常结束。如上例可写为: i=1;sum=0; for(; i<=100 ; ) { sum+=i; i++; }

3. 若for语句中的三个表达式都省略,即: for(;;) 语句 无休止执行循环体 等价于 while ( 1 ) 语句 4. for语句中表达式1也可是与循环控制变量无关的表达 式;表达式1和表达式3可为简单表达式,也可为逗号表 达式。 例1:for(sum=0, i=1; i<=100; i++) sum += i; 例2:for(i=0, j=100 ; i<=j ; i++,j--)k=i+j; 例3:for(i=1;i<=100;i++,i++) sum=sum+i; 等价于 for(i=1;i<=100;i=i+2) sum=sum+i;

5. for语句中表达式2也可为数值表达式或字符表达式, 只要其值非0,就执行循环体。 例:for( s=0 ;(c=getchar())!=‘\n’;s+=c); 功能是:不断输入字符,将其ASCII码值相加,直到输入 回车换行为止。 6. for语句是使用最广泛且最灵活的一种循环语句,既可 用于循环次数确定的情况,也可用于循环次数不定而 只给出循环条件的情况。for语句与下面的while语句 等价: 表达式1 ; while (表达式2) { 语句 表达式3 ; }

7.for语句也可与while,do-while语句相互嵌套,构成 多重循环。以下形式都合法的嵌套。 (1)for(){… while() {…} … } (2)do{ for() }while(); (3)while(){ … for() {…} } (4)for(){ for(){

四、几种转移语句 (一).goto语句 goto语句也称为无条件转移语句,其一般格式如下: goto 语句标号; 其中语句标号是按标识符规定书写的符号, 放在某 一语句行的前面,标号后加冒号 (:),如: label: i++; loop: while(x<7); 语句标号起标识语句的作用,与goto 语句配合使用。如: goto label; goto loop;

关于goto语句的说明 1、C语言不限制程序中使用标号的次数,但各标号不得重名。 2、goto语句的语义是改变程序流向, 转去执行语句标号所标识的语句。 3、goto语句通常与条件语句配合使用。可用来实现条件转移、构成循环、跳出循环体等功能。 4、但是,在结构化程序设计中一般不主张使用goto语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难。

(二) break语句 1.形式: break ; 2.功能:1)用于开关语句switch中, 可使程序 跳出switch 而执行switch以后的语句; 2)用于do-while、for、while循环语句 中时,可从循环体中跳出,而执行循环后面的语句, 通常break语句总是与if语句联在一起。 即满足条 件时便跳出循环。 3. 注意: i)break语句对if-else的条件语句不起作用。 ii)在多层循环中, 一个break语句只向外跳一层。

(三) continue 语句 1. 形式:continue; 2. 功能:结束本次循环,即跳过循环体中剩余的语句而接着 进行下一次是否执行循环的判定。 continue语句只用在for、while、do-while等循环体中, 常与if条件语句一起使用, 用来加速循环。 例:把100~200之间不能被3整除的数输出 #include<stdio.h> main( ) { int n; for(n=100;n<=200;n++) { if( n % 3 = =0 ) continue ; printf(“%d”,n); }

综合举例 1.用 公式求的值,直到 最后一项的绝对值 小于10-4为止。 T=1,pi=0,n=1,s=1 |t|>=10-4 pi=pi+t n=n+2 s=-s t=s/n pi=pi*4 输出pi

#include “math.h” main() {int s; float n,t,pi; t=1;pi=0;n=1.0;s=1; while ((fabs(t)>=1e-4) {pi=pi+t; n=n+2; s=-s; t=s/n; } pi=pi*4; printf(“pi=%10.6f\n”,pi);

2. 判断 m是否素数 我们采用的算法是: 让m被2到k= 除,如果m能被2k中的任何一个整数整 除,则提前结束循环,此时i〈=k. 如果m不能被2k之间的任一整数整除,则在i〉=k+1时 终止循环。 循环之后如i>=k+1则m是素数,否则不是素数。

#include "math.h" main() { int m,i,k; scanf("%d",&m); k=sqrt(m); for (i=2;i<=k;i++) if (m%i==0) break; if (i>=K+1) printf("%d is a prime number\n",m); else printf("%d is not a primenumber\n",m); }

3. 求100到200之间的全部素数 #include "math.h" main() { int m,i,k; for (m=101,m<=200,m=m+2) /*scanf("%d",&m);*/ {k=sqrt(m); for (i=2;i<=k;i++) if (m%i==0) break; if (i>=K+1) printf("%d is a prime number\n",m); else printf("%d is not a primenumber\n",m); }

4.用牛顿迭代法求 sqrt(x)的近似值sn。该近似值要求 满足 |sn+1-sn|<10-6 牛顿迭代公式: 算法分析: 1)确定循环体: s=0.5*(s+x/s) 2) 循环初值: 读入x,s初值 1 3)循环控制条件: 需要保留前一次循环的s值,因此, 设两个s,S1和S2。当fabs(S2-S1)<1.0e-4时进行循环 4) 循环体改为:s1=s2; s2=0.5*(s2+x/s2); 5)循环初值改为: 读入x,s1、s2初值 1

#include "stdio.h" #include "math.h" main() { float x,s1=1,s2=1; scanf("%f",&x); s2=0.5*(s1+x/s1); while (fabs(s2-s1)>=1.0e-6) { s1=s2; } printf("\n sqrt(%f)=%f\n",x,s2);