《循环结构》PPT课件.ppt
《《循环结构》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《循环结构》PPT课件.ppt(57页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、本章要点本章要点n什么是循环什么是循环? 为什么要使用循环为什么要使用循环? 如何实现循环如何实现循环?n实现循环时,如何确定循环条件和循环体实现循环时,如何确定循环条件和循环体?n怎样使用怎样使用while 和和do-while语句实现次数不确定的语句实现次数不确定的循环循环?nwhile 和和do-while语句有什么不同语句有什么不同?n如何使用如何使用break语句处理多循环条件语句处理多循环条件?n如何实现多重循环如何实现多重循环?uforfor语句一般应用形式语句一般应用形式:for( 循环变量赋初值循环变量赋初值; 循环条件循环条件; 循环变量增值循环变量增值) 循环体语句循环体
2、语句 #include void main() int i,sum=0; for( i=1; i=100; i+ ) sum+=i; printf(%d,sum);for (表达式表达式1;表达式;表达式2;表达式;表达式3) 循环结构回顾循环结构回顾确定循环确定循环次数次数4.1 用格里高利公式求用格里高利公式求的近似值的近似值使用格里高利公式求使用格里高利公式求的近似值,要求精的近似值,要求精确到最后一项的绝对值小于确到最后一项的绝对值小于104。4.1.1 程序解析程序解析4.1.2 while语句语句 4.1.3 输入一批学生的成绩,统计平均分输入一批学生的成绩,统计平均分111143
3、574.1.1 程序解析求程序解析求的近似值的近似值#include#include void main( ) int denominator, flag; double item, pi; flag = 1; denominator = 1 ; item = 1.0; pi = 0; while (fabs (item) = 0.0001) item = flag * 1.0 / denominator; pi = pi + item; flag = -flag; denominator = denominator +2; pi = pi * 4; printf ( “pi = %fn”,
4、pi);11114357不确定循不确定循环次数环次数for( i=1; i=100; i+ )4.1.2 while 语句语句while (条件条件) 循环体语句循环体语句; 真真假假while下一条语句下一条语句表达式表达式循环体语句循环体语句循环条件循环条件循环体循环体u一般形式一般形式:while (表达式表达式) 循环体语句;循环体语句;u执行流程执行流程:当表达式为真(非当表达式为真(非0值)时,执行值)时,执行循环体语句;直到表达式为假,循环终止循环体语句;直到表达式为假,循环终止表达式表达式循环体循环体假假(0)真真(非非0)while4.1.2 while语句语句u特点:先判断
5、表达式,特点:先判断表达式,后执行循环体(当型)后执行循环体(当型)求求1+2+1001+2+100的和的和 sum=0; i=1; while(i=100) sum=sum+i; i+; 此处无此处无分号分号 ; ;u一般形式一般形式:while(表达式表达式) 循环体语句循环体语句4.1.2 while语句语句说明:说明:循环体有可能一次也不执行循环体有可能一次也不执行(一开始条(一开始条件就不成立)件就不成立)当表达式为真(非当表达式为真(非0 0值)时,即可继续执值)时,即可继续执行循环行循环循环体包括一个以上语句的用循环体包括一个以上语句的用 组成复组成复合语句合语句有使有使循环循环
6、趋向结束的趋向结束的语句语句,如如 i+i+无限循环无限循环: : 也即无循环结束条件也即无循环结束条件 while(1)while(1) 循环体循环体; ;下列情况,退出下列情况,退出whilewhile循环循环:l条件表达式不成立(为零)条件表达式不成立(为零)l循环体内遇循环体内遇 breakbreak u特点:先判断表达式,特点:先判断表达式,后执行循环体(当型)后执行循环体(当型) sum=0; i=1; while(i=100) sum=sum+i; i+; printf(“%d”,sum);用一对大括号用一对大括号 将若将若干语句顺序组合在一干语句顺序组合在一起就是一个复合语句起
7、就是一个复合语句例例 用用while循环求循环求1+2+100的累加和的累加和 #include void main() int i,sum=0; i=1; while(i=100) sum=sum+i; i+; printf(%d,sum);循环初值循环初值循环终值循环终值循环变量增值循环变量增值循环条件循环条件循环体循环体循环结构的五要素:循环结构的五要素: 循环初值,循环条件,循环终值,循环变量增值,循环体循环初值,循环条件,循环终值,循环变量增值,循环体例例 用用while循环求循环求1+2+n的累加和的累加和 #include void main() int i,sum=0; i=1
8、; while(i=100) sum=sum+i; i+; printf(%d,sum);求前求前n项的和项的和可用可用scanf读入读入n#include void main() int i,sum=0,n; i=1; printf(“Enter n: ”); scanf(“%d”,&n); while(i=n) sum=sum+i; i+; printf(%d,sum);while 语句和语句和for语句语句都是在循环前先判断条件都是在循环前先判断条件while 和和 for 的比较的比较while 语句说明语句说明表达式表达式1;while (表达式表达式2) 循环体语句循环体语句; 表
9、达式表达式3;for(表达式表达式1; 表达式表达式2; 表达式表达式3) 循环体语句循环体语句for (i = 1; i = 10; i+) sum = sum + i; i = 1; while (i = 10) sum = sum + i; i+; 求求110的累加和的累加和程序解析求程序解析求的近似值的近似值例例4-1#include#include void main( ) int denominator, flag; double item, pi; flag = 1; denominator = 1 ; item = 1.0; pi = 0; while (fabs (item)
10、 = 0.0001) item = flag * 1.0 / denominator; pi = pi + item; flag = -flag; denominator = denominator +2; pi = pi * 4; printf ( “pi = %fn”, pi);11114357精确到最后一项的精确到最后一项的绝对值小于绝对值小于104 ,即即|item| 104, 达达到精度要求,循环到精度要求,循环结束结束fabs(item) 0.0001精度要求给出了循环结束条件精度要求给出了循环结束条件11114357程序解析求程序解析求的近似值的近似值#include#inclu
11、de void main( ) int denominator, flag; double item, pi; flag = 1; denominator = 1 ; item = 1.0; pi = 0; while(fabs (item) = 0.0001) item = flag * 1.0 / denominator; pi = pi + item; flag = -flag; denominator = denominator +2; pi = pi * 4; printf ( “pi = %fn”, pi);item=0.0 ?#include #include void main
12、() int s; float n,t,pi; t=1; s=0; n=1.0; m=1; while(fabs(t)=1e-6) s=s+t; n=n+2; m=-m; t=m/n; pi=s*4; printf(pi=%fn,pi);例例4-2 从键盘输入一批学生的成绩,计算平均分从键盘输入一批学生的成绩,计算平均分分析:分析:求累加和求累加和确定循环条件确定循环条件n不知道输入数据的个数,无法事先确定循环次数不知道输入数据的个数,无法事先确定循环次数n用一个用一个特殊的数据特殊的数据作为正常输入数据的结束标志,作为正常输入数据的结束标志,比如选用一个负数作为结束标志比如选用一个负数作为结
13、束标志。4.1.3 统计输入的一批学生的平均成绩统计输入的一批学生的平均成绩例例4-2 从键盘输入一批学生的成绩,计算平均分从键盘输入一批学生的成绩,计算平均分#include void main() int num; double grade, total; num = 0; total = 0;printf(“Enter grades: n); scanf(“%lf”, &grade); /* 输入第输入第1个数个数*/while (grade = 0) /* 输入负数,循环结束输入负数,循环结束 */ total = total + grade; num+; scanf (“%lf”,
14、&grade);if(num != 0) printf(“Grade average is %.2fn, total/num);else printf( Grade average is 0n);4.2 统计一个整数的位数统计一个整数的位数从键盘读入一个整数,统计该数的位数。从键盘读入一个整数,统计该数的位数。4.2.1 程序解析程序解析4.2.2 do - while语句语句 4.2.3 循环语句的选择循环语句的选择例例4-3#includevoid main ( ) int count, number; count = 0;printf(“Enter a number: );scanf (
15、%d, &number) ;if (number 0) number = -number; do number = number / 10; count +; while (number != 0);printf(It contains %d digits.n, count);4.2.1 程序解析统计一个整数的位数程序解析统计一个整数的位数while (number != 0) number = number / 10; count +;4.2.2 do - while 语句语句do 循环体语句循环体语句 while (表达式表达式);先循环先循环后判断后判断真真假假表达表达式式循环体语句循环
16、体语句do-while的下一条语句的下一条语句n while 是先判别条件,再决定是否循环;是先判别条件,再决定是否循环;n do-while 是先至少循环一次,然后再根据是先至少循环一次,然后再根据循环的结果决定是否继续循环。循环的结果决定是否继续循环。while 和和 do-while 的比较的比较真真假假表达式表达式循环体语句循环体语句do-while的下一条语句的下一条语句真真假假while的下一条语句的下一条语句表达式表达式循环体语句循环体语句while (number != 0) number = number / 10; count +;do number = number /
17、10; count +; while (number != 0);例例 while和和dowhile比较比较#include void main() int i,sum=0; scanf(%d,&i); do sum+=i;i+; while(i=10); printf(%d,sum);#include void main() int i,sum=0; scanf(%d,&i); while(i=10) sum+=i;i+; printf(%d,sum);结论:当结论:当 whilewhile后的表达式第一后的表达式第一次的值为次的值为“真真”时,两种结果相时,两种结果相同,否则不同同,否则不
18、同输入:输入:10输出:输出:sum=10 输出:输出:sum=10输入:输入:11 输出:输出:sum=11 输出:输出:sum=0三种循环结构:求三种循环结构:求1100的和的和 sum=0; i=1; while(i=100) sum=sum+i; i+; printf(%d,sum); sum=0; i=1; do sum+=i; i+; while(i=100); printf(%d,sum); sum=0; for(i=1; i=100; i+) sum+=i; printf(%d,sum); 几种循环的比较几种循环的比较1 1、三种循环语句在处理循环问题时、三种循环语句在处理循环
19、问题时, ,一般可以相互替代一般可以相互替代2 2、对于循环次数不确定的问题,可以用、对于循环次数不确定的问题,可以用whilewhile或或do-whiledo-while语句来实现。语句来实现。 whilewhile语句为先判断后执行,语句为先判断后执行,do-whiledo-while语语句则先执行后判断。句则先执行后判断。3 3、对于、对于循环次数确定的问题,用循环次数确定的问题,用for语句更方便。语句更方便。for语句语句也为先判断后执行。也为先判断后执行。4.2.3 循环语句的选择循环语句的选择if(循环次数已知)循环次数已知) 使用使用for语句语句else /* 循环次数未知
20、循环次数未知 */if (循环条件在进入循环时明确循环条件在进入循环时明确)使用使用while语句语句else /* 循环条件需要在循环体中明确循环条件需要在循环体中明确 */使用使用do-while语句语句4.3 判断素数判断素数输入一个正整数输入一个正整数m,判断它是否为素数。判断它是否为素数。4.3.1 程序解析程序解析4.3.2 break语句语句 和和continue语句语句4.3.1 程序解析判断素数程序解析判断素数算法:一个正整数算法:一个正整数m,除了能被除了能被1和它本身和它本身(m)整除外,不能整除外,不能被其它数整除,该数就是素数。被其它数整除,该数就是素数。设设 i 取
21、值取值 2, m-1 n如果如果m不能被该区间上的任何一个数整除,即对每个不能被该区间上的任何一个数整除,即对每个i,m%i 都不为都不为0,则,则m是素数是素数n只要找到一个只要找到一个i,使使m%i为为0,则,则m肯定不是素数肯定不是素数m不可能被大于不可能被大于 m/2 的数整除的数整除 i 取值取值 2, m-1 、 2, m/2 、 2, mfor(i = 2; i m/2) printf(yesn)else printf(non”);int main(void) int i, m;printf(“Enter a number: );scanf (%d, &m);for (i = 2
22、; i m/2 ) printf(%d is a prime number! n, m); else printf(No!n); 例例4-4源程序判断素数源程序判断素数for (i = 2; i = m/2; i+) if (m % i = 0) printf(No!n); else printf(%d is a prime number! n, m); 根据素数定义,在根据素数定义,在for循循环中,只要有一个环中,只要有一个i能满能满足足m%i=0,则,则m就不是就不是素数,不用在检查素数,不用在检查m是是否能被其他数整除,可否能被其他数整除,可提前结束循环提前结束循环 n一般形式:一般形
23、式:break; n功能:功能:放放在循环语句和在循环语句和switch语句中语句中,用于,用于终终止并跳出循环体或止并跳出循环体或switch语句语句,接着执行循环,接着执行循环语句或语句或switch语句后面的语句。语句后面的语句。n说明:说明:break语句应该和语句应该和if语句配合使用,即条件满语句配合使用,即条件满足时,才执行足时,才执行break跳出循环跳出循环break只能只能终止并跳出最近一层的终止并跳出最近一层的循环循环(嵌套嵌套循环时循环时)。如果要跳出多层循环,用如果要跳出多层循环,用goto语句语句 break只只能用于循环语句和能用于循环语句和switch语句语句b
24、reak语句语句求前求前5050项和项和for(i=1; i50) break; sum+=i; printf(%d,sum);switch表达式表达式语句组语句组1break;语句组语句组2break;语句组语句组nbreak;语句组语句组break;.const 1const 2const ndefaultcase 表达式表达式2break;.假假(0)真真(非非0)for表达式表达式1表达式表达式3循环体循环体例例lt-area: break举例:举例:按不同的半径,按不同的半径,输出圆输出圆面积,面积,面积大于面积大于100时停止时停止#include #define PI 3.141
25、59void main() int r; float area; for(r=1;r100) break; printf(r=%d,area=%.2fn,r,area); 通常通常break语语句总是和句总是和if语句连在一语句连在一起起if(area=100) printf(r=%d,area=%.2fn,r,area); else break; 例例lt-char break举例:举例:小写字母转换成大写字母小写字母转换成大写字母,直至输入非直至输入非小写小写字母字母字符。字符。#include void main() char c; while(1) c=getchar(); if(c=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 循环结构 循环 结构 PPT 课件
限制150内