循环结构又称为重复结构:用来处理需要重复处理的问题,它是程序中一种很重要的结构。

Slides:



Advertisements
Similar presentations
第 8 章 数组 计算机科学学院 李淮 Tel QQ
Advertisements

While 迴圈 - 不知重複執行次數
CSIM, PU C Language Introduction to the C Programming Language 重覆敘述 (for,while,break,continue) 適合重複性的計算或判斷.
親愛的老師您好 感謝您選用本書作為授課教材,博碩文化準備本書精選簡報檔,特別摘錄重點提供給您授課專用。 說明: 博碩文化:
第4章 條件判斷與迴圈 Java 2 程式設計入門與應用.
计算机三级考试C语言上机试题专题.
第一章 C语言概述 计算机公共教学部.
第三章 控制结构.
C语言程序设计 第十二章 位运算.
第一章 程序设计入门.
C语言程序设计 第五章 选择结构程序设计.
C语言程序设计 课程 第5章 数组 主讲:李祥 博士、副教授 单位:软件学院软件工程系.
高级语言程序设计 主讲人:陈玉华.
Class 2 流程控制-選擇敘述與迴圈.
C++Primer 3rd edition 中文版 Chap 5
第3章 顺序结构程序设计 本章要点: 格式化输出函数──printf() 格式输入函数——scanf() 字符输出函数——putchar()
適用於多選一 可減少if 與 else配對混淆的錯誤.
Chap 10 函数与程序结构 10.1 函数的组织 10.2 递归函数 10.3 宏定义 10.4 编译预处理.
C程序设计.
第五章 选择结构程序设计 一、关系运算符和表达式 1、关系运算符 在程序中经常需要比较两个量的大小关系, 以决定程序下一步
Introduction to the C Programming Language
Introduction to the C Programming Language
目录 第八章 数组 1 简单学生成绩管理系统的开发 2 一维数组 3 多维数组 4 字符数组 5 数组作函数参数.
第七章 函数 目录 有参的加法函数的开发 函数定义的一般形式 函数参数和函数的值 函数的调用
QQ: 李祥 QQ: 欢迎多种方式的学习交流,祝大家学有所成.
第5章 堆疊(Stacks) 5-1 堆疊的基礎 5-2 堆疊的表示法 5-3 堆疊的應用 - 運算式的計算與轉換
Introduction to the C Programming Language
6.4.1指针与二维数组 1、二维数组结构的分析 设有数组定义为:int a[3][4]; 则有: a表示数组在内存中的首地址。
C语言 程序设计基础与试验 刘新国、2012年秋.
程序的三种基本结构 if条件分支语句 switch多路开关语句 循环语句 循环嵌套 break,continue和goto语句
計數式重複敘述 for 迴圈 P
第5讲 结构化程序设计(Part II) 周水庚 2018年10月11日.
第七章 函数及变量存贮类型 7.1 函数基础与C程序结构 7.2 函数的定义和声明 7.3 函数的调用 7.4 函数的嵌套与递归
授课老师:龚涛 信息科学与技术学院 2016年3月 教材:《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
第0章作业: 教材P12-练习与实践 1.写出用符号’*’输出描绘汉字”大”的流程图。
第1章 概述 本章要点: C语言程序结构和特点 C语言程序的基本符号与关键字 C语言程序的编辑及运行 学习方法建议:
第4讲 C++程序控制结构(二) 4.1 循环结构 4.2 转向控制 4.3 综合案例分析.
C++大学基础教程 第3章 C++控制语句 北京科技大学 信息基础科学系.
目录 9.1 结构体类型 9.2 共用体类型 9.3 枚举类型 9.4 类型声明符typedef 1.
C语言概述 第一章.
第1讲 C语言基础 要求: (1) C程序的组成 (2) C语言的标识符是如何定义的。 (3) C语言有哪些基本数据类型?各种基本数
程式結構&語法.
第三章 C++的语句和简单的程序设计 主要内容:
C++语言程序设计 C++语言程序设计 第三章 控制语句 第十一组 C++语言程序设计.
C语言大学实用教程 第6章 数组 西南财经大学经济信息工程学院 刘家芬
C 语言程序设计 程序的循环结构 电大崇信县工作站 梁海亮.
Main() { Dfas Asdfasf fasdfa } #include <stdio.h> void main( ) {
第2章 算法与C语言程序 程序 (1)数据的描述:数据的类型和组织形式(数据结构) (2)操作的描述:操作步骤(算法) 沃思指出:
请编写程序在屏幕上打印出一个“*”? printf(”*\n”); 请编写程序在屏幕上打印四行,每行一个“*”?
C语言的特点 1. C程序由许多函数组成 2. C程序必须有且只有一个主函数main( ) 3. 函数用“{”和“}”表示起点和终点
浙江长征职业技术学院—计算机与信息技术系—相方莉制作
Chap 5 函数 5.1 计算圆柱体积 5.2 使用函数编写程序 5.3 变量与函数.
C程序设计.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
项目1 C程序设计起步 学习目标: 通过该项目你可以知道: C语言的用途。 C语言的基本符号和关键字。 C语言程序的结构及特点。
第2章 数据类型、运算符与表达式 本章要点: 基本数据类型 常量和变量 算术运算符和算术表达式 关系运算符和关系表达式
第一章 C语言概述 目录 什么是语言、程序 C语言的历史与发展 C语言的书写形式与程序结构 运行C语言的步骤与方法
程序设计基础.
本节内容 指针类型.
第五章 逻辑运算和判断选取控制 §5.1 关系运算符和关系表达式
第七章  数 组.
Do While 迴圈 東海大學物理系‧資訊教育 施奇廷.
C/C++基礎程式設計班 C語言入門、變數、基本處理與輸入輸出 講師:林業峻 CSIE, NTU 3/7, 2015.
C/C++基礎程式設計班 陣列 講師:林業峻 CSIE, NTU 3/14, 2015.
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
本节内容 指针类型 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Q1(a) 小偉打算編寫一個程序。該程序把兩個44的表內的數字相加。表3內的數字是由表1和表2應格子內的數字相加而成。例如:
函式庫補充資料 1.
C语言基础学习 从外行到入门.
Presentation transcript:

循环结构又称为重复结构:用来处理需要重复处理的问题,它是程序中一种很重要的结构。 特点是:当给定条件成立时,反复执行某段程序,直到条件不成立时为止。 给定的条件称为循环条件,反复执行的程序段称为循环体。 C语言提供了以下形式的循环结构。 (1)用goto语句和if语句构成循环; (2)用for语句构成循环; (3)用while语句构成循环; (4)用do-while语句构成循环。

5.1 for语句 5.2 while语句 5.3 do…while语句 5.4 break和continue语句 5.5 程序综合举例

5.1 for语句 for(表达式1;表达式2;表达式3) 语句; 5.1.1 for语句的一般形式和执行过程 一般形式为: 表达式1:通常用来给循环变量赋初值,一般为赋值表达式。 表达式2:通常是循环结束条件,一般为关系表达式或逻辑表达式。 表达式3:通常用来修改循环变量的值,一般是赋值表达式。 循环体 注意:这三个表达式都可以是逗号表达式,都可以是任选项。

5.1 for语句 5.1.1 for语句的一般形式和执行过程 for语句的执行过程如下: 首先计算表达式1的值。 再计算表达式2的值,若值为真(非0)则执行循环体一次,然后执行下面的第3步;若值为假(值为0)则结束循环,转到第4步。 计算表达式3的值,转回第2步继续执行。 循环结束,执行for语句下面的一个语句。

5.1 for语句 5.1.2 for语句的各种形式 1.”表达式1”省略:但分号不能省略。 例如: i=1; for( ; i<=100;i++) sum=sum+i; 又如: #include"stdio.h" void main() { int n=0; printf("input a string:\n"); for( ; getchar()!=‘\n’ ; n++) ; printf("%d",n); }

5.1 for语句 5.1.2 for语句的各种形式 2.”表达式2”可以省略:这时循环体中必须加入条件判断语句来判断是否结束循环,否则循环会无终止地进行下去形成死循环。分号不能省略。 例如: for(i=1;;i++) { sum=sum+i; if(i>100)break; } 其中,break语句的意义是结束循环。如果循环体中去掉if语句,则上面的循环为死循环。

5.1 for语句 5.1.2 for语句的各种形式 3.“表达式3”可以省略:这时循环体内应加入使循环变量变化的语句,否则也会造成死循环。 例如: for( i=1;i<=100;) { sum=sum+i; i++; }

5.1 for语句 5.1.2 for语句的各种形式 4.循环体可以是空语句:可以把循环体要处理的内容放到表达式3中,效果是一样的。 例如: for(i=1;i<=100;sum=sum+i,i++);

5.1 for语句 5.1.3 for循环程序举例 【例5.1】用for循环语句计算s=1+2+3+…+9+10。

5.1 for语句 5.1.3 for循环程序举例 【例5.2】用for语句编写程序。从0开始,输出n个连续的偶数。

5.2 while语句 5.2.1 while语句的一般形式和执行过程 一般形式为: while(表达式) 语句; 其中:表达式是循环条件,语句为循环体。 执行过程:先计算表达式的值,当值为真(非0)时则执行循环体语句;当表达式为假(值为0)时,跳出循环,执行循环以外的下一个语句。 其执行过程如图5.3表示。 while循环的特点是:先判断表达式,后执行循环体语句。

5.2 while语句 5.2.1 while语句的一般形式和执行过程 【例5.3】统计从键盘输入一行字符的个数。 #include <stdio.h> void main() { int n=0; printf("input a string:\n"); while(getchar()!='\n') n++; printf("%d",n); } 说明:循环条件为getchar()!='\n',只要从键盘输入的字符不是回车就继续循环。循环体n++完成对输入字符个数计数。

5.2 while语句 5.2.1 while语句的一般形式和执行过程 注意: (2)循环体为多个语句时必须用{ }括起来,组成复合语句。 (3)允许while语句的循环体又是while语句,从而形成循环嵌套。

5.2 while语句 5.2.1 while语句的一般形式和执行过程 例如: void main() { int a=0,n; printf("\n input n: "); scanf("%d",&n); while (n--) printf("%d ",a++*2); }

5.3 do-while语句 5.3.1 do-while语句的一般形式和执行过程 一般形式为: do{ 语句; }while(表达式); 其中:表达式是循环条件,语句为循环体。 执行过程: 先执行循环体语句一次,再判断表达式的值,若为真(非0)则继续循环,否则如果表达式为假(值为0),则结束循环。 其执行过程如图5.4所示。

5.3 do-while语句 5.3.1 do-while语句的一般形式和执行过程 注意:do-while语句和while语句的区别:

5.3 do-while语句 5.3.1 do-while语句的一般形式和执行过程 【例5.4】用do-while语句修改【例5.2】题:从0开始,输出n个连续的偶数。 void main() { int a=0,n; printf("\n input n: "); scanf("%d",&n); do{ printf("%d ",a++*2); }while (--n); } 试问:本例中循环条件继续用(n--)会出现什么问题? 答:将会多执行一次循环。 为什么:这是由于先执行后判断而造成的。

5.3 do-while语句 5.3.1 do-while语句的一般形式和执行过程 【例5.5】while和do-while循环的比较。

5.3 do-while语句 5.3.1 do-while语句的一般形式和执行过程 注意: (3)循环体为多个语句时,也必须用{}括起来组成一个复合语句。

5.3 do-while语句 【例5.6】循环的嵌套 一个循环结构的循环体内又包含另外一个完整的循环结构,称为循环的嵌套。循环的嵌套层数可以是多层,称为多重循环。构成循环的嵌套结构时应注意以下几点: ①三种循环结构(while循环结构、do…while循环结构、for循环结构)可以相互嵌套; ②循环嵌套时应注意内层循环结构必须完整地被嵌套在外层循环结构的循环体内,不得出现交叉的现象; ③一般情况下,嵌套结构中的外层循环和内层循环的循环控制变量不得同名。

* *** ***** ******* ********* 5.3 do-while语句 【例5.6】循环的嵌套,输出如下图形: 分析输出图形的规律: 第1行:先输出4个空格,再输出*(1个) 第2行:先输出3个空格,再输出*** (3个) 第3行:先输出2个空格,再输出***** (5个) 第4行:先输出1个空格,再输出******* (7个) 第5行:先输出0个空格,再输出********* (9个) * *** ***** ******* ********* 4 ① 3 ② 2 ③ 1 ④ ⑤ 哪么第i行应该怎样输出呢? 先输出5-i个空格 再输出2i-1个*

5.3 do-while语句 【例5.6】循环的嵌套

5.4 break语句和continue语句 5.4.1 break语句 一般格式: break; 使用范围:break语句只能用在switch 语句或循环语句中。 功能:作用是跳出switch语句或结束本层循环,转去执行后面的程序。 一般用法: { 语句序列1; if(表达式) break; 语句序列2; }

5.4 break语句和continue语句 5.4.1 break语句 【例5.7】从键盘输入任意一串字符并自动输出,统计字符个数,直到输入回车键或者Esc键结束。 void main() { int i=0; char c; while(1) { c='\0'; /*变量赋初值*/ if (c!=13&&c!=27) /*键盘接收字符直到输入回车或Esc键*/ { c=getch(); printf("%c\n", c); } if(c==27) break; /*判断若输入Esc键则退出循环*/ i++; printf("The No. is %d\n", i); } printf("The end"); 注意: break语句对if-else的条件语句不起作用。在多层循环中, 一个break语句只向外跳一层。

5.4 break语句和continue语句 5.4.2 continue语句 一般格式: continue; 一般用法: { 语句序列1; if(表达式) continue; 语句序列2; } 注意:本语句只结束本层中本次的循环,并不跳出循环体。而break语句则跳出循环体。

5.4 break语句和continue语句 5.4.2 continue语句 【例5.8】输出100以内能被7整除的数。 void main() { int n; for(n=7;n<=100;n++) { if (n%7!=0) continue; printf("%d ",n); }

5.4 break语句和continue语句 5.4.2 continue语句 【例5.9】检查输入的一行字中有无相邻两字符相同。 #include"stdio.h" void main() { char a,b; printf("input a string:\n"); b=getchar(); while((a=getchar())!='\n') { if(a==b) { printf("same character\n"); break; } b=a; 分析程序:把第一个读入的字符保存到变量b。然后进入循环,把下一个读入的字符保存到变量a,比较a,b是否相等,若相等则输出提示串并终止循环,若不相等则把a中的字符赋予b,进入下一次循环。

5.5 程序综合举例 【例5.10】要求判断输入学生的成绩是否合格。 void main() { int count,score,I; 5.5 程序综合举例 【例5.10】要求判断输入学生的成绩是否合格。 void main() { int count,score,I; printf(“请输入班级的人数:”); scanf(“%d”,&count); printf("\n"); for(int i=0;i<count;i++) { printf(“请输入学生的成绩:”); scanf(“%d”,&score); if(score>60) printf(“及格\n”); else printf(“不及格\n”); }

5.5 程序综合举例 【例5.11】有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 5.5 程序综合举例 【例5.11】有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。

5.5 程序综合举例 void main() { int i,j,k; printf("\n"); 5.5 程序综合举例 void main() { int i,j,k; printf("\n"); for(i=1;i<5;i++)  /*以下为三重循环*/ for(j=1;j<5;j++)     for (k=1;k<5;k++)     { if (i!=k&&i!=j&&j!=k)  /*确保i、j、k三位互不相同*/      printf("%d,%d,%d\n",i,j,k);    } } 分析以下情况:并考虑如果不是1、2、3、4,而是任意四位数呢?有几种情况,如何修改程序。注意:组成的四位数中最高位不能为零。

5.5 程序综合举例 【例5.12】判断整数m是否为素数。 5.5 程序综合举例 【例5.12】判断整数m是否为素数。 程序分析:只能被1和它本身整除外,其它任何数都不能整除的数为素数。因此,判断数m是否为素数,只需用m去除以2到m-1之间的每一个整数,如果都不能整除,则m是素数;如果有一个数能整除,则m不是素数。 根据数学知识可知,不需要判断m能否被2到m-1之间的每一个数整除,只需判断m能否被从2到 之间的数整除就可以了。

5.5程序综合举例 程序如下: #includen <stdio.h> #include <math.h> void main() { int m,i,k; printf(“请输入一个整数:”); scanf(“%d”,&m); k=sqrt(m); for(i=2;i<=k;i++) if(m%i==0) break; if(i>k) printf(“%d是一个素数。\n”,m); else printf(“%d不是一个素数。\n”,m); }

5.5程序综合举例 【例5.13】输出100到200之间的素数。 程序运行结果为: 101 103 107 109 113 #includen <stdio.h> #include <math.h> void main() { int m,i,k,n; n=0; for(m=101;m<=200;m=m+2) { k=sqrt(m); for(i=2;i<=k;i++) if(m%i==0) break; if(i>k) { printf(“%d”,m); n=n+1; } if(n%5==0) printf(“\n”); } printf(“\n”); 程序运行结果为: 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 这条语句的作用是什么?