资源预览内容
第1页 / 共31页
第2页 / 共31页
第3页 / 共31页
第4页 / 共31页
第5页 / 共31页
第6页 / 共31页
第7页 / 共31页
第8页 / 共31页
第9页 / 共31页
第10页 / 共31页
第11页 / 共31页
第12页 / 共31页
第13页 / 共31页
第14页 / 共31页
第15页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,上次作业参考答案,/5.3,#include,main(),int a=3,b=4,c=5;,printf(“输出结果是:n”);,printf(a+bc,printf(a|b+c,printf(!(ab),printf(!(x=a),printf(!(a+b)+c-1,1,第1页,第1页,/5.4,#include,main(),int a,b,c,t,max;,printf(请输入3个整数:n);,scanf(%d,%d,%d,t=(ab)?a:b;,max=(tc)?t:c;,printf(3个整数最大数是%dn,max);,/5.4另解,#include,void main(),int a,b,c;,scanf(%d,%d,%d,if(a=b&a=c),printf(%d,a);,if(b=a&b=c),printf(%d,b);,if(c=a&c=b),printf(%d,c);,/5.5,#include,main(),int x,y;,printf(请输入x:n);,scanf(%d,if(x1),y=x;,else if(x=b),t=a;,else t=b;,if(t=c),printf(%d,t);,else printf(%d,c);,2,第2页,第2页,/5.9,#include,main(),int t,a,b,c,d;,printf(请输入4个整数:n);,scanf(%d,%d,%d,%d,printf(a=%d,b=%d,c=%d,d=%dn,a,b,c,d);,if(ab),t=a;a=b;b=t;,if(ac),t=a;a=c;c=t;,if(ad),/a依次和b、c、d比较,t=a;a=d;d=t;,if(bc),t=b;b=c;c=t;,if(bd),/b和c、d比较,t=b;b=d;d=t;,if(cd),t=c;c=d;d=t;,/c和d比较,printf(排序结果是:n);,printf(%d,%d,%d,%dn,a,b,c,d);,3,第3页,第3页,/5.7,#include,void main(),int i,a,b,c,d,e;,printf(请输入一个正整数n);,scanf(%d,if(i=10000&ic&a+cb&b+ca,),s=(a+b+c)/2.0;,area=sqrt(s*(s-a)*(s-b)*(s-c);,/*海伦公式求面积*/,printf(The resule is area=%.2fn,area);,else,printf(你输入数据无效n);,8,第8页,第8页,分析,3讲中源程序只考虑了最抱负情况,没有对是否能够构成三角形作出判断,4讲中作了补充,那么4讲中例程是否尚有不足?,4讲中对于输入三边,假如不能构成三角形,则程序直接输出“输入无效”后而结束。通常,我们希望程序能够这样:假如用户输入数据无效,给出提醒,能够重复输入,直到输入有效数据。,9,第9页,第9页,改进后源程序,#include,#include,main(),int a,b,c;,/*三个变量,用来表示三条边长*/,float s,area;,/*area变量用来表示面积*/,scanf(%d,%d,%d,/*输入三条边长值*/,while(a+b=c|a+c=b|b+c=a),/当不能构成三角形时候,printf(你输入数据无效,请重新输入n);,scanf(%d,%d,%d,s=(a+b+c)/2.0;,area=sqrt(s*(s-a)*(s-b)*(s-c);,/*海伦公式求面积*/,printf(The resule is area=%.2fn,area);,循环条件,循环体,10,第10页,第10页,循环结构三要素,循环变量赋初值,循环起始,从哪里开始。,循环条件,满足什么条件时才执行循环;也即告知循环终止条件。,循环体,要被重复执行对象,11,第11页,第11页,While循环语句,三种基本循环语句,while(表示式),循环体语句,执行过程:当表示式为非0值时,执行while语句中内嵌语句。其特点是:先判断表示式,后执行语句。,e.g.i=0;,while(i5),printf(“*”);,i+;,表示式能够是关系表示式、逻辑表示式等,初值,循环条件,循环体,12,第12页,第12页,dowhile循环语句,do,循环体语句,while(表示式),;,执行过程:先执行一次指定循环体语句,然后判别表示式,当表示式值为非零(“真”)时,返回重新执行循环体语句,如此重复,直到表示式值等于0为止,此时循环结束。,e.g.i=0;,do,printf(“*”);,i+;,while(i5);,表示式能够是关系表示式、逻辑表示式等,13,第13页,第13页,例:while和dowhile比较,#include,main(),int sum=0,i;,scanf(“%d”,while(i=10),sum+=i;,i+;,printf(“sum=%dn”,sum);,#include,main(),int sum=0,i;,scanf(“%d”,do,sum+=i;,i+;,while(i=10);,printf(“sum=%dn”,sum);,14,第14页,第14页,分析,当第一次输入i值小于10时,两个程序结果相同;,当第一次输入i值大于10时,结果不同;,结论:当while后面表示式值第一次为真时,两种循环结果相同,不然,循环结果不同,15,第15页,第15页,for循环语句,for,(表示式1;表示式2;表示式3),循环,语句,1,2,3,4,普通情况下,表示式1是循环变量赋初值;表示式2是循环条件;表示式3是循环变量增值;,比如:for(i=0;i10;i+),a+=1;,16,第16页,第16页,执行for循环之后语句,表示式2,?,执行,语句,成立,不成立,执行表示式3,执行表示式1,for 流程图,for循环改写成while循环形式,表示式1,while(表示式2),语句;,表示式3;,17,第17页,第17页,例2:,编程计算,分析:,假如用sum变量来保留和,其初值为0,,那么变量i从1开始,先将其累加到sum变量中,然后i本身加1,再累加到sum中,直到i=100为止,整个过程连续100次;,计算过程下列:,0,+1+2+3+100,18,第18页,第18页,算法流程,sum=0;i=1;,sum=sum+i;,i=i+1;/*i+;*/,i=100,结束,循环初值,循环体,循环条件,19,第19页,第19页,/*while实现*/,#include,main(),int,i=1,sum=0,;,while(,i=100,),sum=sum+i;,i+;,printf(累加和是%dn,sum);,/*dowhile实现*/,#include,main(),int,i=1,sum=0,;,do,sum=sum+i;,i+;,while(,i=100,);,printf(累加和是%dn,sum);,20,第20页,第20页,/*for循环实现*/,#include,main(),int i,sum=0;,for(,i=1;i=100;i+,),sum+=i;,printf(累加和是%dn,sum);,21,第21页,第21页,几种循环比较,在while循环和dowhile循环中,只在while后面括号中指定循环条件,因此为了使循环能正常地结束,循环体中应包含使循环趋于结束语句;如i+,i=i+1等等;,for循环表示式3中包含使循环趋于结束操作;,While和dowhile循环,循环变量初始化应在while和dowhile语句之前,而for循环可在表示式1中实现循环变量初始化;,for循环功效强大、灵活,不但能够用于循环次数已知情况,也能够用户循环次数不知而知道循环结束情况;,22,第22页,第22页,例3 课堂练习:编程求n!,其中n从键盘输入,计算过程下列:,1,*1*2*3*n,分析:,假如用sq变量来保留阶乘,其初值为1,,那么变量i从1开始,先将其累乘到sq变量中,然后i本身加1,再累乘到sq中,直到i=100为止,整个过程连续n次;,23,第23页,第23页,#include,main(),int n,i=1,sq=1;,printf(please input the value of n:n);,scanf(%d,while(i=n),sq*=i;,i+;,printf(the factorial of%d is%dn,n,sq);,24,第24页,第24页,#include,main(),int n,i,sq=1;,printf(please input the value of n:n);,scanf(%d,for(i=1;i=n;i+),sq*=i;,printf(the factorial of%d is%dn,n,sq);,#include,main(),int n,i=1,sq=1;,printf(please input the value of n:n);,scanf(%d,for(;i=n;i+),sq*=i;,printf(the factorial of%d is%dn,n,sq);,for循环使用灵活,关于for循环其它情况阐明,请详细参考书本P118内容;,25,第25页,第25页,例4:编程打印半径为110圆面积。,分析,循环开始:,循环结束:,循环体:,半径r=1;,半径r=10;,求面积;,26,第26页,第26页,/*while循环实现*/,#include,#define PI 3.14,main(),int r=1;,float s;,while(r=10),s=PI*r*r;,printf(“%.2f”,s);,r+;,/*for循环实现*/,#include,#define PI 3.14,main(),for(r=1;r=10;r+),s=PI*r*r;,printf(“%.2f”,s);,27,第27页,第27页,例5.增长条件,只输出面积不超出100圆面积,/*例4原程序*/,#include,#define PI 3.14,main(),for(r=1;r=10;r+),s=PI*r*r;,printf(“%.2f”,s);,/*例5参考程序for循环实现*/,#include,#define PI 3.14,main(),for(r=1;r=10;r+),s=PI*r*r;,If(s=100),printf(“%.2f”,s);,28,第28页,第28页,/*for循环实现*/,#include,#define PI 3.14,main(),for(r=1;r=10;r+),s=PI*r*r;,If(s=100)printf(“%.2f”,s);,/*for循环实现,加入break*/,#include,#define PI 3.14,main(),for(r=1;r=10;r+),s=PI*r*r;,If(s=100),printf(“%.2f”,s);,else,break;,结束循环,提前跳出循环;,右边程序效率高于左边,为何?,29,第29页,第29页,例6.读程序,说出程序功效,#inlude,void main(),int n;,for(n=100;n=200;n+),if(n%3=0),continue;,else,printf(“%d”,n);,程序功效:输出100200之间不能被3整除数;,continue与break,continue 结束本次循环,break结束整个循环,参考教材P122,30,第30页,第30页,作业,1.编程计算半径为115圆面积,仅输出面积超出50圆面积;,2.编写程序输出1100之间所有不能被7整除数;,3.编写程序输出100以内整数
点击显示更多内容>>

最新DOC

最新PPT

最新RAR

收藏 下载该资源
网站客服QQ:3392350380
装配图网版权所有
苏ICP备12009002号-6