第六讲 循环结构程序设计(2).ppt_第1页
第六讲 循环结构程序设计(2).ppt_第2页
第六讲 循环结构程序设计(2).ppt_第3页
第六讲 循环结构程序设计(2).ppt_第4页
第六讲 循环结构程序设计(2).ppt_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、【例】打印所有的“水仙花数”。,分析: 水仙花数是100999之间,其各位数字立方之和等于该数本身的数。 1.循环体: 判断n是否为水仙花数,如果是则输出。 2.循环语句的三要素: 循环控制变量的初值 循环控制条件 循环变量的修改,计数式 i=100; i=999 i+;,枚举法,6.3 break和continue语句,“枚举法”: 枚举法又称穷举法或列举法。 基本思想是按问题本身的性质,一一列举出该问题所有的可能解,并在逐一列举过程中,检验每个可能解是否为问题真解。 这也是一种“筛选”,对于列举的可能解,既不能遗漏也不能重复。,#include void main() int a,b,c,

2、n; /*定义变量*/ for(n=100;n=999;n+) /*for语句枚举可能解*/ a=n/100; /*百位数字*/ b=n/10%10; /*十位数字*/ c=n%10; /*个位数字*/ if(n=a*a*a+b*b*b+c*c*c) printf(%5d ,n); ,【例】打印所有的“水仙花数”。,上讲内容回顾,6.1 循环概念及机制(Looping Mechanism),6.2 实现循环的三种语句 一、while语句 二、do-while语句 三、for语句,第六讲 循环结构程序设计(2),C语言程序设计 Programming in C,本讲主要内容,6.2 实现循环的三

3、种语句,6.3 break和continue语句,1.计数式循环 计数式循环即事先已知循环总次数的循环。 常用一个计数变量控制循环。设计计数式循环,关键是设计计数变量的初值、终值和计数变量变化步长值。 2.不定数式循环 事先难以确定次数的循环,称“不定数式循环”。 不定数式循环常借用某“标记值”或“标记变量”控制循环的结束。,6.2 实现循环的三种语句,6.2 实现循环的三种语句,例 输入一系列正整数,当输入0时结束,统计输入正整数的个数。 分析: 1.循环体: 输入一个正整数 并 统计输入个数 2.循环语句的三要素: 循环控制变量的初值 循环控制条件 循环变量的修改,scanf(%d,6.2

4、 实现循环的三种语句,例 输入一系列正整数,当输入0时结束,统计输入正整数的个数。 #include stdio.h void main() int x,n=0; scanf(%d, ,不定数式循环,6.2 实现循环的三种语句,例 统计从键盘输入的一行字符的个数(以回车键作为输入结束标记)。 分析: 1.循环体: 输入一个字符 num+; 2.循环语句的三要素: 循环控制变量的初值 循环控制条件 循环变量的修改,ch=getchar(); while(ch!=n) ch=getchar();,6.2 实现循环的三种语句,例 统计从键盘输入的一行字符的个数(以回车键作为输入结束标记)。 #inc

5、lude stdio.h void main() char ch; int num=0; ch=getchar(); while(ch!=n) num+; ch=getchar(); printf(num=%dn,num); ,do num+; ch=getchar(); while(ch!=n);,for(;ch!=n;),三种循环语句的比较,计数式循环: 通常使用for语句,三要素集于一行。 不定数式循环: 通常使用while和 do-while语句。 While语句:先判断再执行 do-while语句 :先执行再判断,项目,项目分析: 求某班所有学生某门课程成绩的平均值。 分析: 1.定

6、义变量 平均成绩ave 总成绩 sum 成绩 score 2.循环体: 输入score sum =sum+score; 3.循环语句的三要素: 循环控制变量的初值 循环控制条件 循环变量的修改,已知总人数(计数式) 未知总人数(不定数式),项目,项目分析: 求某班所有学生某门课程成绩的平均值。 分析: 1.定义变量 平均成绩ave 总成绩 sum 成绩 score 2.循环体: 输入score sum =sum+score; 3.循环语句的三要素: 循环控制变量的初值 循环控制条件 循环变量的修改,已知总人数(计数式) i=1; while(i=60) i+;,#include void ma

7、in(void) float score,sum=0,ave; int i=1 ; while( i=60 ) printf(请输入第%d个学生成绩:n,i); scanf(%f, ,while语句,项目,项目分析: 求某班所有学生某门课程成绩的平均值。 分析: 1.定义变量 平均成绩ave 总成绩 sum 学生人数n 成绩 score 2.循环体: 输入score sum =sum+score; 3.循环语句的三要素: 循环控制变量的初值 循环控制条件 循环变量的修改,已知总人数(计数式) i=1; while(i=n) i+;,#include void main(void) float

8、score,sum=0,ave; int n,i=1 ; printf(请输入学生人数n); scanf(%d, ,while语句,#include void main(void) float score,sum=0,ave; int n,i=1 ; printf(请输入学生人数n); scanf(%d, ,do-while语句,项目,项目分析: 求某班所有学生某门课程成绩的平均值。 分析: 1.定义变量 平均成绩ave 总成绩 sum 成绩个数n 成绩 score 2.循环体: 输入score sum =sum+score; 3.循环语句的三要素: 循环控制变量的初值 循环控制条件 循环变量

9、的修改 4.ave =sum/n;,未知总人数(不定数式) scanf(%f,n+;,#include stdio.h void main(void) float score,sum=0,ave; int n=0; printf(请输入第1个学生成绩:n); scanf(%f, ,6.3 break和continue语句,语句形式: break;,作用: (1)结束break所在的 switch语句。 (2)结束当前循环,跳出break所在的循环体。,1.break语句,例 求300以内能被17整除的所有整数。,6.3 break和continue语句,分析: 1.循环体: 判断某个数是否能被

10、17整除。 2.循环语句的三要素: 循环控制变量的初值 循环控制条件 循环变量的修改,x=17; x=300 x+;,例 求300以内能被17整除的所有整数。,6.3 break和continue语句,#include stdio.h void main() int x; for(x=17;x=300;x+) if(x%17=0) printf(%dt,x); ,例 求300以内能被17整除的最大的数。,6.3 break和continue语句,#include stdio.h void main() int x; for(x=300;x=17;x-) if(x%17=0) printf(%d

11、t,x); break; ,2.Continue 语句形式: continue;语句作用: 结束本次循环,即不再执行循环体中continue 语句之后的语句,转入下一次循环条件的判断与执行。,6.3 break和continue语句,例 分析以下两个程序的运行结果。 比较break语句和continue语句的作用。,main() int a; for(a=1; a=10; a+) if(a%3=0)continue; printf(%dn,a); ,main() int a; for(a=1; a=10; a+) if(a%3 =0) break; printf(%dn,a); ,6.3 br

12、eak和continue语句,项目,控制用户密码的输入次数 用户登录系统,进行身份验证时,有可能不小心将密码输入错误,所以可以允许多次输入密码。但别有用心的人可以多次尝试输入密码,成功地进入系统,窃取他人信息。我们可通过控制用户输入密码的次数,提高系统安全性。 假如我们开发设计*系统,用户进行身份验证时,最多只能输入三次密码,三次输入不正确立即退出程序。,项目,分析: 1.循环体: 输入密码,判断是否正确。 若输入正确,进入界面。 否则,提示输入有误。 2.循环语句的三要素: 循环控制变量的初值 循环控制条件 循环变量的修改,循环最多执行3次。 如果某次输入正确,循环提前结束。break; i

13、=1; i=3 i+;,项目,#include #define key 123456 void main() int password,i; for (i=1;i=3;i+) printf(请输入密码:); scanf(%d, ,While语句?,项目,#include #define key 123456 void main() int password,i=1; while (i=3) printf(请输入密码:); scanf(%d, ,例 判断一个数是否为素数?,问题描述: 素数也叫质数,是指除了1和本身外无其它因子的数。 根据素数定义:对于大于1的数N,若在2,N-1范围内没有因子,

14、则N是素数。反之,N不是素数。 根据数学定律:若一个数N在2,sqrt(N)范围内无因子,则该数为素数,否则不是素数。 这相对于范围2,N-1可大大提高处理效率。 用N除2,sqrt(N)范围内的所有数,若能被某数整除,则N有因子,说明N非素数。,分析: 1.循环体: 求余 N%k 判断是否为0 为0结束循环(有因子) break; 2.循环语句的三要素: 循环控制变量的初值 循环控制条件 循环变量的修改 3.输出结果 如何判断是否有因子。 标记变量法 flag=0;(初值) 若发现因子,改变标记flag=1;,计数式 k=2; k=sqrt(x); k+;,例 判断一个数是否为素数?,#in

15、clude stdio.h #include math.h void main( ) int n,k,flag=1; printf(请输入一个正整数); scanf(%d, ,例 判断一个数是否为素数?,分析: 1.循环体: 求余 N%k 判断是否为0 为0结束循环(有因子) break; 2.循环语句的三要素: 循环控制变量的初值 循环控制条件 循环变量的修改 3.输出结果 如何判断是否有因子。 循环变量终值法 有因子,循环提前结束, k=sqrt(x),计数式 k=2; k=sqrt(x); k+;,例 判断一个数是否为素数?,#include stdio.h #include math.

16、h void main() int n,k; printf(请输入一个正整数); scanf(%d, ,例 判断一个数是否为素数?,例 分析以下程序的运行结果: main( ) int a, b; for(a=1,b=1; a=10) break; if(b%3=1) b+=3; continue; printf(%dn,a); ,程序运行结果: 4,【例】计算等差数列的和。,分析: (1)等差数列是类似4、7、10、13、16,的数据序列。 (2)需求分析:用户输入需计算数列的上、下限和步长,输出结果为等差数列与数列和。 (3)算法设计:循环求和问题。 已知数列的上、下限和步长,则为已知次数的求和,用for语句实现。,分析:1.定义变量 数列数据和sum 、数列数据i 上限max、下限min 、数列步长base

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论