C语言循环结构程序设计.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《C语言循环结构程序设计.ppt》由会员分享,可在线阅读,更多相关《C语言循环结构程序设计.ppt(88页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、,C语言程序设计,学习目标,熟练三种基本的循环控制语句,掌握循环的嵌套,第5章循环结构程序设计,能够应用基本的循环语句编写复杂的程序,课程回顾,单分支结构 if(条件) 语句1; 语句2;双分支结构 if(条件) 语句1; else 语句2;多分支结构 if (表达式1) 语句 else if (表达式) 语句 else 语句n,第5章循环结构程序设计,课程回顾,#include main() int x=1,a=0,b=0; switch(x) case 0: b+;break; case 1: a+; case 2: a+;b+;break; default: a+; printf(a=%
2、d,b=%dn,a,b); getch();,程序运行结果:,第5章循环结构程序设计,void main() int age; printf(请输入年龄:); scanf(%d,提高用户友好界面,限制年龄范围,无分号,作业点评,循环的必要性 1-1,int result1,result2,result3;int result4,result5;result1 = 1 * 10;printf(1 10 %d n,result1);result2 = 2 * 10;printf(2 10 %d n,result2);result3 = 3 * 10;printf(3 10 %d n,result3
3、);result4 = 4 * 10;printf(4 10 %d n,result4);result5 = 5 * 10;printf(5 10 %d n,result5);,1 10 102 10 203 10 304 10 405 10 50,输出结果,重复语句,循环的必要性 2-2,1 10 = 102 10 = 203 10 = 304 10 = 405 10 = 50,0 + 1,1 + 1,2 + 1,上个数字 + 1,.,重复 (上个数字 +1) 10,5.1 while语句,基本形式,一般为关系表达式或逻辑表达式,也可以是C语言其他类型的合法表达式 用来控制循环体是否执行,称
4、为内嵌语句,可以是基本语句、控制语句,也可以是复合语句是循环重复执行的部分,5.1 while语句,语句流程,while (表达式) 循环体语句;,1、循环体如果包含一个以上的语句,必须使用复合语句形式。2、在循环体中,必须有使循环条件趋向于不满足(假)的语句。3、先判断表达式,后执行语句。,程序分析案例1,#include stdio.h int main() int n=9; n6是表达式 while(n6) 意思应该为只要n不小于6,就一直执行while后面的这一条语句; 大括号括起来的应该为内嵌语句 n-; 因为大于一条所以用括号包起来 printf(%d,n); 成为一条复合语句 r
5、eturn 0;,程序运行结果:,5.1 while语句,5.1 while语句,实例分析,用while循环求1100的累加和。,sum=1+2+100;,分析,首先设置一个累计器sum,其初值为0,利用sum += n来计算(n依次取1、2、100),只要解决以下3个问题即可: (1)将n的初值置为1; (2)每执行1次“sum += n;”后,n增1; (3)当n增到101时,停止计算。 此时,sum的值就是1100的累计和。,s=1+2+3+4+.100;s=1+2;s=s+3;s=s+4; s=s+100;,s=s+1;s=s+2;,s=s+n;,#include stdio.h/用w
6、hile循环求1100的累加值,计科1809安逸/int main(void) int sum=0,n=0;/n=0|n=1都是一样的/ while(n101) /这是一个限制条件/ sum+=n; /n+和sum+=n的先后顺序很重要/ n+; /第一次计算值是0,无效/ /只要限制条件的值没达到就一直循环/ printf(%d,sum); return 0; /结果等于5050/,5.1 while语句,实例分析,用while循环求1100的累加和。,#include int main() int sum = 0 , i = 1; while(i = 100) sum = sum + i;
7、 i +; printf(sum = %dn, sum); return 0;,运行结果如下:sum=5050,1、如果去掉循环体中的大括号,执行过程将会怎样变化?2、在循环体中,使循环条件趋向于不满足(假)的语句是哪条?,1、求1-5的整数和 2、求1-10的偶数和,#include stdio.h/用while循环求15的整数和,计科1809安逸/int main() int sum=0,n=0; while(n6) sum+=n;n+; printf(%dn,sum); return 0;/结果等于15/,#include stdio.h/用while循环求110的偶数和,计科1809安
8、逸/int main() int sum=0,n=0; while(n=10) sum+=n;n+=2; printf(%dn,sum); return 0;/结果等于30/,#include stdio.h/用while循环求1100的奇数和,计科1809安逸/int main() int sum=0,n=0,sum1=0,sum2=0,n2=0; while(n=100) sum+=n;n+; while(n2=100) sum2+=n2; n2+=2; sum1=sum-sum2; printf(%dn,sum1); return 0;/结果等于2500/,注意事项,5.1 while语
9、句,如果while的 (表达式) 值为0,则循环体一次也不执行 (例如当i的初值=101) 。在循环体中必须有使循环趋向结束的操作,否则循环将无限进行(死循环)。 在循环体中,语句的先后位置必须符合逻辑,否则会影响运算结果。,5.2 do-while语句,基本形式,do 语句 while(表达式);,执行过程: 它先执行循环体中的语句,然后再判断条件是否为真,如果为真则继续循环;如果为假,则终止循环。,语句流程,5.2 do-while语句,do 循环体语句;while (表达式);,至少执行一次,1、循环体如果包含一个以上的语句,必须使用复合语句形式。2、在循环体中,必须有使循环条件趋向于不
10、满足(假)的语句。3、先执行循环体语句,后判断表达式的值。,程序分析案例2,#include stdio.h int main() int a=3; do printf(“%dn”,a-=2);该处参与a的赋值 while(!(-a);这里的非-3是什么意思?return 0;s,程序运行结果:,5.2 do-while语句,sum= 55,求110的累加和。,include void main() int i,sum; i=1; sum=0;/定义成1可以少循环一次 do sum=sum+i; i+; while (i=10); printf(“sum=%dn”,sum);,1、如果去掉循环
11、体中的大括号,执行过程将会怎样变化?语句错误不能执行。2、在循环体中,使循环条件趋向于不满足(假)的语句是哪条?i+,5.2 do-while语句,案例分析,while语句: 先判断,后执行。 程序执行次数可能为0 do-while语句: 先执行,后判断。 程序至少被执行1次,5.2 do-while语句,while、do-while的区别,实例分析,用dowhile循环求n!。,5.2 do-while语句,算法描述:(1)定义变量n,接受用户的输入;(2)定义累乘器变量multi,multi 1;(3)定义变量i,i 1;(4)如果 n 0,则给出相应的提示信息; 否则,如果 n = 0,
12、则直接输出变量multi的值1; 否则,执行第56步。(5)如果i =0):); scanf(%d, ,实例分析,5.2 do-while语句,问题描述:猜数游戏。要求猜一个介于110之间的数字,根据用户猜测的数与标准值进行对比,并给出提示,以便下次猜测能接近标准值,直到猜中为止。,思考?,main()int number=5,guess; printf (猜一个介于 1 与 10 之间的数n); do printf(请输入您猜测的数:); scanf(%d,猜一个介于 1 与 10 之间的数请输入您猜测的数:3太小请输入您猜测的数:5您猜中了! 答案为 5,输入数字 5 后,dowhile
13、循环中的条件为假, 输出结果消息后,程序终止。,#include stdio.h/用dowhile循环编写猜数字游戏,计科1809安逸/int main()int number,guess;puts(1号选手请输入一个介于1100中间的整数:); scanf(%d,实例分析,5.2 do-while语句,编写程序,找出满足条件1+2+3+n500的最大值?,#include int main() int n=1,sum=0; do sum=sum+n;n+; while(sum500); printf(n= %dn,n-2); return 0;循环次数和累加值不同,实例分析,5.2 do-w
14、hile语句,分析: 后一项分子为前一项分子与分母之和; 后一项的分母为前一项的分子算法描述:(1)定义变量i=1,a=1,b=2,sum=0;(2)定义累加器变量sum,sum 0;(3)如果i=10循环执行以下语句 sum=sum+b/a; b=a+b; a=b-a; i+;(6)输出sum的值。,设有一个分数数列2/1+3/2+5/3+8/5+13/8+21/13?编程求这个数列的前10项和,实例分析,5.2 do-while语句,设有一个分数数列2/1+3/2+5/3+8/5+13/8+21/13?编程求这个数列的前10项和,#include int main() int a=1,b=
15、2,i=1; float sum=0; do sum=sum+(float)b/a;b=a+b;a=b-a; i+; while(i6) n-; printf(%d,n); return 0;,程序运行结果:,5.3 for语句,课程回顾,#include stdio.h int main() int a=3; do printf(“%dn”,a-=2); while(!(-a);return 0;,程序运行结果:,5.3 for语句,课程回顾,#include int main() int v1=0,v2=0; char ch ; while(ch=getchar()!=#) switch(
16、ch) case a: case h: case 0:v2+; default:v1+; printf(%d,%dn,v1,v2);,程序运行结果:,5.3 for语句,如果从键盘上输入china#回车,则输出结果为,5.3 for语句,基本形式,for(表达式1; 表达式2; 表达式3) 语句,语句流程,5.3 for语句,(1)先求解表达式1;(2)求解表达式2,若其值为真,则 执行循环体语句,然后执行第(3)步;若为假,则结束循环,转到第(5)步;(3)求解表达式3;(4)转向步骤(2);(5)循环结束,执行for语句下面的一个语句。,实例分析,5.3 for语句,求110的累加和。,i
17、nclude void main() int i,sum; sum=0; for (i=1;i=10;i+) sum=sum+i; printf(“sum=%5dn”,sum);,sum= 55,1 求15的累加和.2 求110的奇数和.3 求110的偶数和.,5.3 for语句,省略表达式1、2、3,即: for ( ; ; )就等同于:while (1),会无限循环(死循环)省略表达式1和表达式3,即: for(;表达式2;)就等同于:while( 表达式2 )省略表达式2,即: for(表达式1; ;表达式3)就等同于:表达式1; while(1)表达式3;,注意事项,分号分隔符不能省略
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 循环 结构 程序设计
![提示](https://www.deliwenku.com/images/bang_tan.gif)
限制150内