《上次作业参考答案.ppt》由会员分享,可在线阅读,更多相关《上次作业参考答案.ppt(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、上次作业参考答案 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望/5.4#includemain()int a,b,c,t,max;printf(请输入请输入3个整数:个整数:n);scanf(%d,%d,%d,&a,&b,&c);t=(ab)?a:b;max=(tc)?t:c;printf(3个整数的最大数是个整数的最大数是%dn,max);/5.4另解另解#includevoid main()int a,b,c;scanf(%d,%d,%d,&a,&b,&c)
2、;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#includemain()int x,y;printf(请输入请输入x:n);scanf(%d,&x);if(x1)y=x;else if(x10)y=2*x-1;else y=3*x-11;printf(“y=%dn,y);#include/5.4另解另解void main()int a,b,c,t;scanf(%d,%d,%d,&a,&b,&c);if(a=b)t=a;else t=b;if(t=c)printf(%d,t);else
3、printf(%d,c);2/5.9#includemain()int t,a,b,c,d;printf(请输入请输入4个整数:个整数:n);scanf(%d,%d,%d,%d,&a,&b,&c,&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(排序结果是:排序结
4、果是:n);printf(%d,%d,%d,%dn,a,b,c,d);3/5.7#includevoid main()int i,a,b,c,d,e;printf(请输入一个正整数请输入一个正整数n);scanf(%d,&i);if(i=10000&i=99999)printf(这是一个五位数;这是一个五位数;n);a=i/10000;b=(i-a*10000)/1000;c=(i-a*10000-b*1000)/100;d=(i-a*10000-b*1000-c*100)/10;e=i-a*10000-b*1000-c*100-d*10;printf(其数位分别是:其数位分别是:%d,%d,
5、%d,%d,%dn,a,b,c,d,e);printf(其逆序数位分别是:其逆序数位分别是:%d,%d,%d,%d,%dn,e,d,c,b,a);/其它几个同上处理其它几个同上处理还可以按如下方法求解:还可以按如下方法求解:e=i%10;d=i/10%10;c=i/100%10;/c=i/10/10%10;b=i/1000%10;/b=i/10/10/10%10a=i/100004上讲回顾上讲回顾关系运算符、关系表达式;关系运算符、关系表达式;逻辑运算符、逻辑表达式;逻辑运算符、逻辑表达式;条件运算符的使用;条件运算符的使用;条件判断语句条件判断语句if等的使用;等的使用;多分支选择语句的使用
6、;多分支选择语句的使用;选择结构程序设计;选择结构程序设计;5本讲要点掌握掌握3种常见的种常见的C循环语句;循环语句;了解、掌握循环结构程序设计的了解、掌握循环结构程序设计的3要素;要素;掌握循环结构语句执行的顺序;掌握循环结构语句执行的顺序;掌握简单的循环结构程序设计;掌握简单的循环结构程序设计;6循环结构程序设计循环结构程序设计main()7例1:从键盘输入三角形的三条边长,求三角形的面积。/*第第3讲源程序讲源程序*/#include#include main()int a,b,c;/*三个变量,用来表示三个变量,用来表示三条边长三条边长*/float s,area;/*area变量用来
7、表示变量用来表示面积面积*/scanf(%d,%d,%d,&a,&b,&c);/*输入三条边长的值输入三条边长的值*/s=(a+b+c)/2.0;area=sqrt(s*(s-a)*(s-b)*(s-c);/*海伦公式求面积海伦公式求面积*/printf(The resule is area=%.2fn,area);/*第第4讲源程序讲源程序*/#include#include main()int a,b,c;/*三个变量,用来表示三条三个变量,用来表示三条 边长边长*/float s,area;/*area变量用来表示面积变量用来表示面积*/scanf(%d,%d,%d,&a,&b,&c);
8、/*输入输入三条边长的值三条边长的值*/if(a+bc&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分析3讲中的源程序只考虑了最理想的情况,没有对是否能够构成三角形作出判断,4讲中作了补充,那么4讲中的例程是否还有不足?4讲中对于输入的三边,如果不能构成三角形,则程序直接输出“输入无效”后而结束。通常,我们希望程序能够这样:如果用户输入的数据无效,给出提示,
9、可以反复输入,直到输入有效的数据。9改进后的源程序#include#include main()int a,b,c;/*三个变量,用来表示三条边长*/float s,area;/*area变量用来表示面积*/scanf(%d,%d,%d,&a,&b,&c);/*输入三条边长的值*/while(a+b=c|a+c=b|b+c=a)/当不能构成三角形的时候当不能构成三角形的时候printf(你输入的数据无效你输入的数据无效,请重新输入请重新输入n);scanf(%d,%d,%d,&a,&b,&c);s=(a+b+c)/2.0;area=sqrt(s*(s-a)*(s-b)*(s-c);/*海伦公式
10、求面积*/printf(The resule is area=%.2fn,area);循环条件循环条件循环体循环体10循环结构三要素循环结构三要素循环变量赋初值循环变量赋初值p循环的起始,从哪里开始。循环的起始,从哪里开始。循环条件循环条件p满足什么条件时才执行循环;也即告知循满足什么条件时才执行循环;也即告知循环终止的条件。环终止的条件。循环体循环体p要被反复执行的对象11While循环语句循环语句三种基本循环语句while(表达式表达式)循环体语句循环体语句p执行过程:当表达式执行过程:当表达式为非为非0值时,执行值时,执行while语句中的内嵌语语句中的内嵌语句。其特点是句。其特点是:先
11、判断先判断表达式,后执行语句。表达式,后执行语句。e.g.i=0;while(i5)printf(“*”);i+;表达式可以是关系表达式、逻辑表达式等表达式可以是关系表达式、逻辑表达式等初值初值循环条件循环条件循环体循环体12dowhile循环语句循环语句 do 循环体语句循环体语句while(表达式表达式);p执行过程:先执行一次指执行过程:先执行一次指定的循环体语句,然后判定的循环体语句,然后判别表达式,当表达式的值别表达式,当表达式的值为非零为非零(“真真”)时,返回时,返回重新执行循环体语句,如重新执行循环体语句,如此反复,直到表达式的值此反复,直到表达式的值等于等于0为止,此时循环结
12、束。为止,此时循环结束。e.g.i=0;do printf(“*”);i+;while(i5);表达式可以是表达式可以是关系表达式、关系表达式、逻辑表达式等逻辑表达式等13例:例:while和和dowhile的比较的比较#includemain()int sum=0,i;scanf(“%d”,&i);while(i=10)sum+=i;i+;printf(“sum=%dn”,sum);#includemain()int sum=0,i;scanf(“%d”,&i);dosum+=i;i+;while(i=10);printf(“sum=%dn”,sum);14分析分析当第一次输入的当第一次输入
13、的i的值小于的值小于10时,两个程时,两个程序的结果相同;序的结果相同;当第一次输入的当第一次输入的i的值大于的值大于10时,结果不时,结果不同;同;结论:当结论:当while后面表达式的值第一次为后面表达式的值第一次为真时,两种循环的结果相同,否则,循真时,两种循环的结果相同,否则,循环的结果不同环的结果不同15for循环语句循环语句for(表达式1;表达式2;表达式3)循环语句 1234n一般情况下,表达式1是循环变量赋初值;表达式2是循环条件;表达式3是循环变量增值;例如:例如:for(i=0;i10;i+)a+=1;16 执行for循环之后的语句表达式表达式2?执行语句语句成立成立不成
14、立不成立执行表达式3执行表达式执行表达式1for 流程图流程图for循环改写成循环改写成while循环形式循环形式 表达式表达式1 while(表达式表达式2)语句;语句;表达式表达式3;17例2:编程计算编程计算分析:分析:假如用假如用sum变量来保存和变量来保存和,其初值为其初值为0,那么变量,那么变量i从从1开开始,先将其累加到始,先将其累加到sum变量中,然后变量中,然后i自身加自身加1,再累加,再累加到到sum中,中,直到直到i=100为止,整个过程持续为止,整个过程持续100次;次;计算过程如下:计算过程如下:0+1+2+3+1 0 018算法流程sum=0;i=1;sum=sum
15、+i;i=i+1;/*i+;*/i=100结束结束循环初值循环初值循环体循环体循环条件循环条件19/*while实现实现*/#includemain()int i=1,sum=0;while(i=100)sum=sum+i;i+;printf(累加和是累加和是%dn,sum);/*dowhile实现实现*/#includemain()int i=1,sum=0;dosum=sum+i;i+;while(i=100);printf(累加和是累加和是%dn,sum);20/*for循环实现循环实现*/#includemain()int i,sum=0;for(i=1;i=100;i+)sum+=i
16、;printf(累加和是累加和是%dn,sum);21几种循环的比较在在while循环和循环和dowhile循环中,只在循环中,只在while后后面的括号中指定循环条件,因此为了使循环能正面的括号中指定循环条件,因此为了使循环能正常地结束,循环体中应包含使循环趋于结束的语常地结束,循环体中应包含使循环趋于结束的语句;如句;如i+,i=i+1等等;等等;for循环表达式循环表达式3中包含使循环趋于结束的操作;中包含使循环趋于结束的操作;While和和dowhile循环,循环变量初始化应在循环,循环变量初始化应在while和和dowhile语句之前,而语句之前,而for循环可在表循环可在表达式达式
17、1中实现循环变量的初始化;中实现循环变量的初始化;for循环功能强大、灵活,不仅可以用于循环次数循环功能强大、灵活,不仅可以用于循环次数已知的情况,也可以用户循环次数不知而知道循已知的情况,也可以用户循环次数不知而知道循环结束的情况;环结束的情况;22例3 课堂练习:编程求n!,其中n从键盘输入计算过程如下:计算过程如下:1*1*2*3*n分析:分析:假如用假如用sq变量来保存阶乘变量来保存阶乘,其初值为其初值为1,那么变量,那么变量i从从1开开始,先将其累乘到始,先将其累乘到sq变量中,然后变量中,然后i自身加自身加1,再累乘到,再累乘到sq中,中,直到直到i=100为止,整个过程持续为止,
18、整个过程持续n次;次;23#includemain()int n,i=1,sq=1;printf(please input the value of n:n);scanf(%d,&n);while(i=n)sq*=i;i+;printf(the factorial of%d is%dn,n,sq);24#includemain()int n,i,sq=1;printf(please input the value of n:n);scanf(%d,&n);for(i=1;i=n;i+)sq*=i;printf(the factorial of%d is%dn,n,sq);#includemai
19、n()int n,i=1,sq=1;printf(please input the value of n:n);scanf(%d,&n);for(;i=n;i+)sq*=i;printf(the factorial of%d is%dn,n,sq);for循环使用灵活,关循环使用灵活,关于于for循环的其他情况说循环的其他情况说明,请具体参考课本明,请具体参考课本P118的内容;的内容;25例4:编程打印半径为110的圆的面积。分析分析循环开始:循环开始:循环结束:循环结束:循环体:循环体:半径半径r=1;半径半径r=10;求面积;求面积;26/*while循环实现循环实现*/#include
20、#define PI 3.14main()int r=1;float s;while(r=10)s=PI*r*r;printf(“%.2f”,s);r+;/*for循环实现循环实现*/#include#define PI 3.14main()for(r=1;r=10;r+)s=PI*r*r;printf(“%.2f”,s);27例5.增加条件,只输出面积不超过100的圆的面积/*例例4原程序原程序*/#include#define PI 3.14main()for(r=1;r=10;r+)s=PI*r*r;printf(“%.2f”,s);/*例例5参考程序参考程序for循环实现循环实现*/#
21、include#define PI 3.14main()for(r=1;r=10;r+)s=PI*r*r;If(s=100)printf(“%.2f”,s);28/*for循环实现循环实现*/#include#define PI 3.14main()for(r=1;r=10;r+)s=PI*r*r;If(s=100)printf(“%.2f”,s);/*for循环实现循环实现,加入加入break*/#include#define PI 3.14main()for(r=1;r=10;r+)s=PI*r*r;If(s=100)printf(“%.2f”,s);else break;结束循环结束循环
22、,提前跳出循环;提前跳出循环;右边程序效率高于左边,为什右边程序效率高于左边,为什么?么?29例例6.读程序,说出程序的功能读程序,说出程序的功能#inludevoid main()int n;for(n=100;n=200;n+)if(n%3=0)continue;else printf(“%d”,n);l程序功能:输出程序功能:输出100200之间之间不能被不能被3整除的数;整除的数;lcontinue与breaklcontinue 结束本次循环结束本次循环lbreak结束整个循环结束整个循环l参考教材参考教材P12230作业1.编程计算半径为编程计算半径为115的圆的面积,仅输的圆的面积,仅输出面积超过出面积超过50的圆的面积;的圆的面积;2.编写程序输出编写程序输出1100之间所有不能被之间所有不能被7整整除的数;除的数;3.编写程序输出编写程序输出100以内整数中以内整数中13倍数的最倍数的最大值。大值。课本课本P129 6.1、6.2、6.6以上以上6题任选题任选4题,建议都做题,建议都做;31