ch05复习习题课(1)_2学时.doc_第1页
ch05复习习题课(1)_2学时.doc_第2页
ch05复习习题课(1)_2学时.doc_第3页
ch05复习习题课(1)_2学时.doc_第4页
ch05复习习题课(1)_2学时.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章 拓展练习请运用所学知识编写一个程序,求从键盘上输入的4个正整数中的最小数,并将结果输出到屏幕上。提示:根据例题1.3,可以求得前两个数的较大数,再将这个求得的较大数和第三个数用同样的方法求得较大的数,这就是前三个数中的最大数,最后将这个结果和第四个数用同样的方法求得较大的数,这就是这四个数中的最大数。【例1.3】找出任意两个整数中较大的数。程序如下:1#include 2int max(int x, int y)/* 定义max函数 */3return( xy ? x : y ); /* 求出两数中的较大数并返回 */4/* max函数结束 */5void main()6int num1, num2, m;7printf(Input the first integer number: );/* 提示输入第一个整数 */8scanf(%d, &num1);/* 从键盘上输入第一个整数 */9printf(Input the second integer number: );/* 提示输入第二个整数 */10scanf(%d, &num2);/* 输入第二个整数 */11m= max(num1, num2);/* 调用max,计算两个数中的较大数*/ printf(Input the 3 integer number: ); scanf(%d, &num1); m= max(num1, m); printf(Input the 4 integer number: ); scanf(%d, &num1); m= max(num1, m);12printf(max=%dn, m);/* 输出结果 */13第2章 2.1 2.4 2.8 2.14 2.16 2.181、对给定的一个年份,判断是不是闰年。要求用N-S图描述该算法。提示:能被4整除但不能被100整除的或能被400整除的年份是闰年。分析:将leap设置为是否闰年的标志:0表示非闰年,1表示闰年。这样,当year为闰年时将leap置为1;当year为非闰年时将leap置为0。最后,根据leap的值即可判断出year是否闰年。这种处理两种状态值的方法,对优化算法和提高程序的可读性非常有效,一定要仔细体会并掌握。参考答案:判断闰年的N-S图如图2.1所示。输入年号year year能被400整除? F T 被4整除但不能 1leap被100整除T F1leap 0leapleap为1 T F打印是闰年 打印非闰年图2.1 判断闰年4、用N-S图描述求100个数中的最小数的算法。分析:输入第1个数给min;输入第2个数给x,若x min,则将x赋给min;输入第3个数给x,若x min,同样将x赋给min;输入第100个数给x,若x min,同样将x赋给min。这样的操作共进行99轮。我们用单元min记最小的数(开始为第一个数),用n作计数器,其他数用x记,如果x min,则x送到min中。参考答案:求100个数中的最小数的N-S图如图2.4所示。输入min1nn100 输入x T xmin? F xminn+1n输出min图2.4 求100个数中的最小数8、百钱买百鸡。鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一,百钱买百鸡,问鸡翁、鸡母、鸡雏各多少。要求用自顶向下、逐步细化的方法设计该算法,并用N-S图描述。分析:设公鸡、母鸡和小鸡的只数分别是cocks、hens、chicks,则根据题意可以得到下面两个式子以及cocks、hens和chicks的取值范围:cocks + hens + chicks =100 5 * cocks +3 * hens + chicks/3=100其中:0cocks19,0hens33,0chicks100。只要依次取cocks的值域中的值,然后求其余两数,看是否合乎题意即可得到答案。参考答案:百钱买百鸡的N-S图如图2.8所示。0cockscocks=190henshens=33 chicks=100-cocks-hens x=5*cocks+3*hens+chicks/3T x=100? F 输出cocks、 hens、chickshens+1henscocks+1cocks图2.8 百钱买百鸡14、字符型常量和字符串常量有什么区别?参考答案: 1、字符型常量是用单引号界定的一个字符,字符个数不能为0.2、字符串常量是用双引号界定的多个字符,字符个数可以为0。 3、若a和”a”的区别是内存存放时分别占一个字节和两个字节。18、写出下列程序的执行结果。(1)#include void main()int m=1,n=2;int k=+m;printf(k=, k);k=m+n+;printf(m=%d, n=%d, k=%dn, m, n, k);k=-n-m;printf(m=%d, n=%d, k=%dn, m, n, k);k=(m=n);printf(k=%dn, k);参考答案:(1) k=m=2, n=3, k=4m=2, n=2, k=0k=1(2)#include void main()int a=4,b=3,c=2,d=1;printf(%dn, (a+b,b+c,c+d);参考答案:(2) 3(3)#include void main()int a=1,b=2,c=0;printf(%dn, a+-1);printf(%dn, b/+a);参考答案:(3) 00(4)#include void main()int a=-5,b=10;float x=1.75, y=2.34e-03;printf(a+b=%dn, a+b);a+;b-;printf(a*b=%dn, a*b);printf(x+y=%fn, x+y);参考答案:(4) a+b=5a*b=-36x+y=1.752340第3章 3.5 3.9 3.125、已知矩形的长和宽分别是300和20,请编写计算其周长和面积的程序。参考程序如下:1#include stdio.h2void main()3 4int l=300,w=20;5int c, s;6c = 2*(l+w);7s =l*w;8printf(c=%d s=%d n, c, s); 99、输入一个华氏温度,要求计算出摄氏温度。计算公式为:要求:输入要有提示,输出要有文字说明,并取两位小数。分析:注意5/9的结果是0,因此,要写成5.0/9,或者采用其他有效的方式。摄氏温度F和华氏温度c都应该用float类型变量存储。参考程序如下:1#include stdio.h2void main()3 4float c, F;5printf(Please Input 华氏温度F:);6scanf(%f,&F);7c=5.0/9*(F-32);8printf(摄氏温度c=%6.2fn,c); 912、请写出下面程序的输出结果: #include stdio.h void main() int a=5,b=7,c=-1; float x=67.6584,y=-879.123; long n=1234567; unsigned u=65535; printf(%d%dn,a,b); printf(%3d%3dn,a,b); printf(%f,%fn,x,y); printf(%-10f,%-10fn,x,y); printf(%8.2f,%8.2f,%.4f,%.4f,%3f,%3fn,x,y,x,y,x,y); printf(%e,%10.2en,x,y); printf(%c,%d,%o,%xn,c,c,c,c); printf(%ld,%lo,%lxn,n,n,n); printf(%u,%o,%x,%dn,u,u,u,u); printf(%s,%5.3sn,COMPUTER,COMPUTER); 参考答案如下:57 5 767.658401,-879.12298667.658401 ,-879.122986 67.66, -879.12,67.6584,-879.1230,67.658401,-879.1229866.765840e+001,-8.79e+002,-1,37777777777,ffffffff1234567,4553207,12d68765535,177777,ffff,65535COMPUTER, COMCh03补充作业:用实验与习题指导P158的标准库函数中rand函数产生两个指定范围内的随机整数,并计算输出显示它们的和,输出格式如下图。提示:1、函数使用格式说明:例如x=rand()%100,可以产生一个100以内的随机数,赋给变量x。2、程序开头部分需加入相应的头文件。#include #include void main( )int x, y ,m;x = rand() % 1000;y = rand() % 1000;m=x+y;printf( 两个随机数: %d + %d 的和是 %d。n , x, y,m );每次变化的随机整数:#include #include #include /*用系统的时间作为种子初始化随机数序列*/ void main( )int x, y ,m; srand( unsigned ) time( NULL ); /*用time函数获取系统时间并转换为一个整数,用做srand函数的参数,作为种子初始化随机数序列*/x = rand() % 100;y = rand() % 100;m=x+y;printf( %d + %d = %d , x, y,m );第4章 P80 4.4 4.10 4.13 4.14 4、编程计算下面的函数,其中,x由键盘输入。分析:这是一个数学上的分段函数问题,可以用三个并列的简单if语句实现,也可以用if-else-if语句实现,还可以用if语句的嵌套实现。由于程序中用到了标准数学函数,因此,一定要加上数学库头文件“math.h”。参考程序如下(方法一):1#include stdio.h2#include 3void main()45float x, y;6printf(Please Input x:);7scanf(%f,&x);8if(x-2 & x2) y=(x+2)*(x+2);11printf(x=%f, y=%fn,x,y);12参考程序如下(方法二):1#include stdio.h2#include 3void main()45float x, y;6printf(Please Input x:);7scanf(%f,&x);8if(x=-2)9y=(x-2)*(x-2);10else if(x=2)11y=exp(x);12else13y=(x+2)*(x+2);14printf(x=%f, y=%fn,x,y);15参考程序如下(方法三):1#include stdio.h2#include 3void main()45float x, y;6printf(Please Input x:);7scanf(%f,&x);8if(x=-2)9y=(x-2)*(x-2);10else11if(x=2)12y=exp(x);13else14y=(x+2)*(x+2);15printf(x=%f, y=%fn,x,y);16参考程序如下(方法四):1#include stdio.h2#include 3void main()45float x, y;6printf(Please Input x:);7scanf(%f,&x);8if(x=2)9if(x=-2)10y=(x-2)*(x-2);11else12y=exp(x);13else14y=(x+2)*(x+2);15printf(x=%f, y=%fn,x,y);16说明:本题给出了四种写法的程序,方法一采用的是简单if语句,方法二采用的if-else if语句,方法三和方法四采用的是if语句嵌套,前者嵌套在else子句中,后者嵌套在if子句中。希望读者认真比较这四种写法,体会其中的不同。10、从键盘输入四个数a、b、c、d,找出其最大值。分析:如果a小于b,则将b赋给a,这样,a就是a、b中的较大数;再将a与c比较,如果a小于c,则将c赋给a,这样,a就是a、b、c中的最大数;最后将a与d比较,如果a小于d,则将d赋给a,这样,a就是a、b、c、d中的最大数。参考程序如下:1#include stdio.h2void main()3 4int a, b, c, d;5printf(Please Input a,b,c,d:);6scanf(%d%d%d%d,&a,&b,&c,&d);7if(ab) a=b;8if(ac) a=c;9if(ad) a=d;10printf(max=%d n, a);1113、企业发放奖金是根据利润提成的,提成的办法如下: (1)利润(用I表示)10万元时,可提成10%; (2)超过10万元时: 10万I20万的部分,可提成7.5%,低的部分同上(下同); 20万I40万的部分,可提成5%; 40万I60万的部分,可提成3%; 60万I100万的部分,可提成1.5%; 超过100万的部分,可提成1%。从键盘输入当月利润I,输出应发放的奖金总额。参考程序如下:1#include stdio.h2void main()34float I, y;5printf(Please Input I:);6scanf(%f,&I);7if(I=10)8y=I*0.1;9else if(x=20)10y=10*0.1+(I-10)*0.075;11else if(x=40)12y=10*0.1+10*0.075+(I-20)*0.05;13else if(x=60)14y=10*0.1+10*0.075+20*0.05+(I-40)*0.03;15else if(x9999)10n=5;11else if(num999)12n=4;13else if(num99)14n=3;15else if(num9)16n=2;17else18n=1;19printf(位数是%dn,n);20printf(各位数字的和为:);21x4=num/10000;22x3=num%10000/1000;23x2=num%10000%1000/100;24x1=num%10000%1000%100/10;25x0=num%10;26swit

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论