C语言中-循环结构.ppt
《C语言中-循环结构.ppt》由会员分享,可在线阅读,更多相关《C语言中-循环结构.ppt(43页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、本章知识点:本章知识点:whilewhile语句的一般形式及应用语句的一般形式及应用forfor语句的一般形式及应用语句的一般形式及应用do.whiledo.while语句的一般形式及应用语句的一般形式及应用多重循环结构的使用多重循环结构的使用breakbreak语句和语句和continuecontinue语句语句25.1 while语句语句的一般形式如下:语句的一般形式如下:while (while (表达式表达式) ) 循环体语句循环体语句说明:说明:whilewhile语句属于语句属于“当型当型”循环。循环。表达式循环体语句假(0)真(非0)图5.1 while语句流程图 说明:说明:
2、(1)while是关键字。是关键字。while后圆括号内的后圆括号内的表达式一般是关系表达式或逻辑表达式,表达式一般是关系表达式或逻辑表达式,但也可以是但也可以是C 语言中任意合法的表达式。语言中任意合法的表达式。 (2)循环体语句可以是一条语句,也可以)循环体语句可以是一条语句,也可以是多条语句,如果循环体语句包含多条语是多条语句,如果循环体语句包含多条语句,则需要用一对花括号句,则需要用一对花括号“”把循环体语把循环体语句括起来,采用复合语句的形式。句括起来,采用复合语句的形式。while (表达式表达式) 循环体语句循环体语句【例5.1】 求前100个自然数的和 。#include #i
3、nclude int main()int main() int n,sum;int n,sum;n=1;sum=0; /n=1;sum=0; /* *变量赋初值变量赋初值* */ /while (n=100)while (n=100) sum=sum+n; / sum=sum+n; /* *累加求和累加求和* */ / n+; / n+; /* *修改基本数据项修改基本数据项n n* */ / printf(printf(sum=%dn,sum);sum=%dn,sum);return 0;return 0; 5 需要注意的几个问题:需要注意的几个问题:(1)累加求和算法。这个程序采用的算法思
4、想)累加求和算法。这个程序采用的算法思想称为累加求和,即:不断用新累加的值取代变称为累加求和,即:不断用新累加的值取代变量的旧值,最终得到求和结果,变量量的旧值,最终得到求和结果,变量sum也叫也叫“累加器累加器”,初值一般为,初值一般为0。(2)必须给变量赋初值。)必须给变量赋初值。 (3)正确判断条件的边界值。)正确判断条件的边界值。 (4) 避免出现避免出现“死循环死循环”。 (5)可能出现循环体不执行。)可能出现循环体不执行。 (6)while后面圆括号内的表达式一般为关系表后面圆括号内的表达式一般为关系表达式或逻辑表达式,但也可以是其它类型的表达式或逻辑表达式,但也可以是其它类型的表
5、达式,达式,.【例5.2】 使用while语句求n!。#include #include int main()int main() int n,i=1;int n,i=1;double sum=1;double sum=1; printf( printf(请输入一个正整数:请输入一个正整数:);); scanf(%d,&n); scanf(%d,&n); while (i=n) while (i=A&ch=a&ch=0&ch=9) c+; /*判断是否为数字*/else if(ch= ) d+;else e+;printf(%d,%d,%d,%d,%dn,a,b,c,d,e);return 0
6、;95.2 for语句forfor语句的一般形式如下:语句的一般形式如下:forfor(表达式(表达式1 1;表达式;表达式2 2;表达式;表达式3 3) 循环体语句循环体语句说明:说明:forfor语句属于语句属于“计数计数”型循环。型循环。11循环体语句真(非0)假(0)表达式1表达式2表达式3for语句流程图For语句最常用、最简单的形式 forfor(循环变量赋初值;循环条件;循环变量增值)(循环变量赋初值;循环条件;循环变量增值)12【例5.1】 求前100个自然数的和 。#include #include int main()int main() int n,sum=0; int
7、n,sum=0; for (n=1;n=100;n+) for (n=1;n=100;n+) sum=sum+n;sum=sum+n; printf(sum=%dn,sum); printf(sum=%dn,sum); return 0; return 0; 【例例5.45.4】设设n=30n=30,编写程序,计算并输出,编写程序,计算并输出S(n)S(n)的值。的值。 S(n)=(1S(n)=(1* *2)/(32)/(3* *4)-(34)-(3* *4)/(54)/(5* *6)+(56)+(5* *6)/(76)/(7* *8)+(-1)8)+(-1)(n-(n-1)1)* *(2n-
8、1)(2n-1)* *2n/(2n+1)2n/(2n+1)* *(2n+2) +(2n+2) +#include#include#include#includeint main()int main() int n;int n; float s=0; float s=0;for(n=1;n=30;n+)for(n=1;n=30;n+) s=s+pow(-1),(n-1) s=s+pow(-1),(n-1)* *(2(2* *n-1)n-1)* *2 2* *n)/(2n)/(2* *n+1)n+1)* *(2(2* *n+2);n+2);printf(s(n)=%f,s);printf(s(n)
9、=%f,s);return 0;return 0; 13关于关于for语句的几点说明:语句的几点说明:(1)循环体语句可以是简单语句也可以是使用一对花)循环体语句可以是简单语句也可以是使用一对花括号括起来的复合语句。如果是一个语句,也可以和括号括起来的复合语句。如果是一个语句,也可以和for写在一行上,这样使程序看起来更加简洁;如果写在一行上,这样使程序看起来更加简洁;如果循环体包含多条语句,最好是另起一行,采用一对花循环体包含多条语句,最好是另起一行,采用一对花括号括起来的复合语句形式,增加程序的可读性。括号括起来的复合语句形式,增加程序的可读性。(2)表达式的省略。)表达式的省略。for语
10、句中的三个表达式均可以省语句中的三个表达式均可以省略,但是两个分号不能省略。略,但是两个分号不能省略。for(循环变量赋初值;循环条件;循环变量增值)(循环变量赋初值;循环条件;循环变量增值)for(表达式(表达式1;表达式;表达式2;表达式;表达式3) 循环体语句循环体语句【例例5.5】编写程序,输出所有的水仙花数。水仙花数是编写程序,输出所有的水仙花数。水仙花数是指一个指一个3位数,其各位数字的立方和等于该数本身。例如:位数,其各位数字的立方和等于该数本身。例如:153=13+53+33=153,所以,所以153就是水仙花数。就是水仙花数。int main()int a,b,c,i;for
11、(i=100;i=999;i+)a=i/100; b=i/10%10; c=i%10; if(i=a*a*a+b*b*b+c*c*c) printf(%dn,i);printf(n);15【例5.11】判断m是否为素数。程序分析:所谓素数,就是一个正整数,除了本身和1 以外并没有任何其他因子。例如 2,3,5,7 就是素数。int main() int m,i,k,flag; /*定义标志变量*/ scanf(%d,&m); flag=1; /*假设m是素数*/ for (i=2;im;i+) if(m%i=0) flag=0; /*表示m不是素数*/ break; /*跳出循环*/ if(f
12、lag=1) printf(%d is a prime numbern,m); else printf(%d is not a prime numbern,m); return 0;165.3 dowhile语句forfor语句的一般形式如下:语句的一般形式如下:dodo循环体语句循环体语句WhileWhile表达式表达式 ;说明:说明:do do whilewhile语句属于语句属于“直到型直到型”循环。循环。(1)dowhile语句中“While表达式;”后面的分号是不能省略的,这一点是和while语句不一样的。(2)dowhile语句是先执行循环体语句,后判断表达式,因此无论条件是否成立
13、,将至少执行一次循环体。而while语句是先判断表达式,后执行循环体语句,因此,如果表达式在第一次判断时就不成立,则循环体一次也不执行。注意:(1)在计算机解决实际问题时,常常会用到类似本程序的“穷举法”。“穷举法”解决的问题一般具有这种特点:如果问题有解,一组或多组,必定全在某个集合中;如果这个集合内无解,集合外也肯定无解。这样,在解决问题时,就可以将集合中的元素一一列举出来,验证是否为问题的解。本题就是一一验证100999之间所有的数,最终找出答案。(2)程序中在做是否相等关系判断(“i=a*a*a+b*b*b+c*c*c)使用到了关系运算符“=”,而不是“=”,后者是赋值运算符,在c语言
14、中这两种运算符形式是不一样的,要注意区别。20循环体语句表达式假(0)真(非0)图5.5 dowhile语句流程图WhileWhile语句和语句和dowhiledowhile语句的比较:语句的比较:一般来说,对于同一个问题,使用While语句或dowhile语句结果是一样的,但有时并不一样,比较以下两段程序:21#include #include int main()int main() int n,sum=0; int n,sum=0; scanf(%d,&n); scanf(%d,&n); while (n=10) while (n=10) sum=sum+n; sum=sum+n; n+
15、; n+; printf(sum=%dn,sum); printf(sum=%dn,sum); return 0; return 0; #include #include int main()int main() int n,sum=0;int n,sum=0;scanf(%d,&n);scanf(%d,&n);dodo sum=sum+n; sum=sum+n; n+; n+; while (n=10);while (n=1.0e-6);pi=4.0*pi;printf(pi=%10.7lfn,pi);23【例例5.7】 用公式用公式 求求的近似值,直到的近似值,直到71513114最后一项
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 循环 结构
限制150内