欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2022年面向对象程序设计C山师第五章习题答案 .pdf

    • 资源ID:27800138       资源大小:54.19KB        全文页数:12页
    • 资源格式: PDF        下载积分:4.3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4.3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2022年面向对象程序设计C山师第五章习题答案 .pdf

    1 / 12 第五章习题答案一、选择填空 1、A 2、D 3、B 4、 D 5、D 6 、C 7、C 8、D 9、C 10、A 11 、B 12、C 13、A 14、D 15、C 二、判断下列描述的正确性,对者划,错者划。 1、 2、 3、 4、 5、 6、 7、 8、 9、 10、 11、 12、 13、 14、 15、 16、 17、 18、 19、 20、三、分析下列程序的输出结果。1、运行该程序输出如下结果。5 8 11 14 2、运行该程序输出如下结果。25 3、该程序输出如下结果。10+2+1=13 20+2+2=24 30+2+3=35 40+2+4=46 4、运行该程序的输出结果如下所示。6,11 5、运行该程序输出如下结果。5!+4!+3!+2!+1!=153 6、运行该程序输出如下结果。6,6,6 7、运行该程序输出如下结果。sum 1=13 sum 2=18 sum 3=23 8、运行该程序输出如下结果。720 9、运行该程序输出如下结果:a=5,b=8 a=8,b=5 10、运行该程序输出结果如下所示。10 11、运行该程序输出结果如下所示。ff(double):88.18 ff(int):97 12、运行该程序输出结果如下所示。1 12 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 12 页2 / 12 123 1234 四、按下列要求编程,并上机验证。1、分析:该程序有3 个函数: main(),sum()和 average()。主函数main()中包含有如下操作:输入15 个浮点数放在一个数组中,使用循环语句从键盘上输入值,接着分别调用sum()函数求15 个浮点数之和,调用average()函数求15 个浮点数的平均值,最后将15 个浮点数的和值与平均值输出显示。程序如下:#include double s, sum(double b,int n),average(int n) 。void main( ) double a15 。cout ” Input 15 doubles:”。for(int i=0 。iai 。s=sum(a,15)。double ave=average(15)。cout ” SUM= ” s , ”AVERAGE= ” aveendl。 double sum(double b,int n) double sum=0。for(int i=0 。i15 。i+) sum+=bi 。return sum。 double average(int n) return s/n。 2、分析:先将10 个 int 型数从键盘上输入,并放在一个int 型数组中。接着,在数组中将重复的数组元素去掉。其方法是在比较中发现有重复的就用数组中最末元素替换,同时更新数组元素个数。最后,将数组中的元素使用排序函数sort()进行排序,并输出显示最后排好序的数组元素。排序函数sort()是按照 “ 冒泡 ” 排序的算法进行编程的。程序的内容如下所示。#include void main() int a10,n=10 。void sort(int b ,int n)。cout ” Input 10integer:”。for(int i=0 。iai 。for(i=0 。in。 i+) for(int j=i+1 。 jn。j+) if(ai=aj) aj=a- -n 。j-。 sort(a,n)。for(i=0 。in。i+) coutai ”。cout ”n” 。 void sort(int b ,int n) for(int i=1 。in。i+) for(int j=0 。jn-i 。j+) if(bjbj+1) int t=bj 。bj=bj+1。bj+1=t 。 3、分析:该程序将包含一个主函数和两个被调函数:一个是计算某一年是否是闰年的函数 leap(),另一个是计算日期的函数sum_day()。主函数中,先从键盘上输入某天的年、月、日,存放在相应的变量year,month 和 day中。接着,调用sum_day()函数,计算出这一天是该年的第几天,计算时按非闰年计算,即2 月份 28 天。然后,再判断该年是否是闰年,并且该月是否是大于2 月。如果是闰年,且月份又大于2 月,则计算的天数加1。最后将其结果输出显示。计算闰年的函数leap()是按照闰年的定义,使用逻辑表达式返回。闰年时返回1,否则返回 0。指定的每月的总天数的数组进行相加计算,这时2 月份按28 天计算,将每月天数存放在一个数组中,使该数组的下标与月份数相同。例如,5 月 4 日,计算天数时如下所示。days_month1+days_month2+days_month3+days_month4+4。并将这个表式值返回。程序内容如下所示。#include int sum_day(int,int),leap(int) 。void main() int year,month,day。coutyearmonthday 。int days=sum_day(month,day) 。if(leap(year)&month2) days+。cout是这一年的第days 天n。 int sum_day(int month,int day) static int days_month13=0,31,28,31,30,31,30,31,31,30,31,30,31。for(int i=1 。imonth 。 i+) day+=days_monthi 。return day。 int leap(int year) int leap=year%4=0&year%100!=0|year%400=0。return leap。 当输入为1998 年 4 月 7 日时,输出信息如下所示。请输入一个日期(yyyy mm dd ):1998 4 7 是这一年的第97 天。4、#include #include void fun(char)。void main( ) char s80 。couts 。cout ”反序前 : ” sendl。fun(s)。cout ”反序后 : ” sendl。 void fun(char ss) int n=strlen(ss) 。for(int i=0 。in/2 。i+) char c=ssi。ssi=ssn-1-i 。ssn-1-i=c 。 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 12 页5 / 12 该程序输出如下信息。请输入一个字符串:abcdefgh 输出结果如下所示。反序前: abcdefgh 反序后: hgfedcba 5、分析:由于十六制数的表示中,除了有数字09,还有6 个字母a,b,c,d,e,f.因此输入十六进制数时,应采用char 型,将它存放在一个字符数组中。然后,调用一个转换函数htoi() ,将输入的字符型数组中的十六进制数转换为十进制的。在转换函数中,应考虑到下述 3 类不同字符的转换方法:(1)数字字符 0至 9;(2)小写字母 a至f ;(3)大写字母 A至F。程序内容如下所示。#include int htoi(char) 。void main( ) int htoi(chars ) 。cout ”输入一个十六进制数: ”。char s120=” ”。cin.read(s1,20)。coutendl 。int n=htoi(s1) 。cout ”该数转换为十进制数” n= 0 &si= a &si= A &si= F ) n=n*16+si- A +10。 return n。 6、#include char *fun1(int)。int fun2( ) 。char s10。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 12 页6 / 12 void main( ) int number 。coutnumber 。cout ”整型数加空格后为: ” fun1(number)endl 。cout ”加空格后字符串长度为: ” fun2()endl 。 char *fun1(int n) int a5 。a4=n%10 。a3=n/10%10 。a2=n/100%10 。a1=n/1000%10 。a0=n/10000 。for(int i=0,j=0 。i5。i+,j+=2) sj=char(ai+ 0)。sj+1=。 sj- 1= 0 。return s。 int fun2() int n=0,i=0 。 while(si+) n+。 return n。 运行该程序显示如下信息:输入一个 5 位的整型数: 87654 输出结果如下所示:整型数加空格后为:8 7 6 5 4 加空格后字符串长度为:9 7、分析:首先定义一个char型数组name5 10 用来存放5 个学生的姓名,再定义一个 int 型数组 score5 4 来存放 5 个学生的 4 门功课成绩,再定义一个数组al5 用来存放用来存放每个学生的总成绩。该程序将有4 个函数组成。(1)主函数main(),包括所有定义的数组,并赋初值。先调用求每个学生4 门功课的总分的函数all_scor(),通过for 循环将每个学生功课总分显示在屏幕上,同时存放在数组 al5 中。再调用求每个学生4 门功课平均成绩的函数aver_scor 通过 for 街环将每个学生功课的平均成绩输出显示在屏幕上。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 12 页7 / 12 最后,用计算5 个学生中总分最高的函数high_scor(),通过返回最高分,并通过传址调用获得最高分学生下标序号,用来输出该学生的姓名。(2)算学生的总分函数all_scor( ),该函数有一个参数,它是一族数组,返回值为int型变量,即返回该学生4 门功课的总分。(3)算学生平均分函数aver_scor(),该函数有一个数组参数,返回值为double 型量。该函数调用了all_scor 函数。(4)求出最高总分及该总分对应的下标值函数high_scor()。该函数有两个参数:一个是数组,另一个是int* 型指针。该函数返回值为int 型量。程序内容如下所示。#include int all_scor(int a),high_scor(int a,int *i)。double aver_scor(int sc) 。void main( ) char name 10=“ Ma” , ” Wang ” , ” Li ” , ” Huang” , ” Kang”。int score4=89,86,75,90,91,82,75,80,78,93,85,80,90,79,95,85,68,75,81,83。int a15 。cout ”每个学生功课的总分: ”。for(int i=0 。i5。i+) cout(a1i=all_scor(score i)” ”。cout ” 每个学生功课的平均成绩: ”。for(i=0 。i5。 i+) cout aver_scor(scorei) 。int n=0,high 。high=high_scor(a1,&n) 。cout ”n 学生姓名 : ” namen” t 最高分 ” highendl 。 double aver_scor(int sc) return (double)all_scor(sc)/4 。 int all_scor(int a) int s=0 。for(int j=0 。j4。j+) s+=aj 。return s。 int high_scor(int a,int *i) for(int j=1 。j5。j+) if(a01)。然后,调用转换函数convert() 将n 位整数转换成字符串,其长度为n。转换函数convert()定义为递归函数。递归条件如下所示。if(a=n/10)!=0) convert(a)。其中,是一个待处理的为整数,是一个型变量。当是1 位整数时,体将不被执行。当为2位整数时,执行体,这时为1 位整数。依次类推。程序内容如下所示。#include void main() int num 。void convert(int) 。coutnum 。cout ”输出的字符串是: ”。convert(num) 。cout n 。 void convert(int n) int a。if(a=n/10)!=0) convert(a)。char c=n%10+ 0。coutc。 执行该程序显示如下信息。输入一个整数:1357 输出的字符串是:1357 9、double distance(int xl,int yl,int x2,int y2) double s。s=sprt(x1-x2)* (x1-x2) +(y1-y2)*(y1-y2) 。return s。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 12 页9 / 12 double distance(double xl,double yl,double y2) double s。s=sprt(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)。return s。 这里,前一个distance()函数是用来计算两个int 型数的点间距离,而后一个distance()函数是用来计算两个double 型数的点间距离。计算两个点间距离公式如下所示。s=sqrt(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2) 程序内容如下所示。#include #include void main( ) double distance(int ,int,int,int),distance(double, double, double, double)。int x1=5,y1=8,x2=12,y2=15 。double xd1=1.5,yd1=5.2,xd2=3.7,yd2=4.6 。cout ”两个 int 型数的点间距离: ”。double disi=distance(x1,y1,x2,y2) 。coutdisiendl 。cout ”两个 double 型数的点间距离: ”。double disd=distance(xd1,yd1,xd2,yd2) 。coutdisdendl 。 double distance(int a1,int b1,int a2,int b2 ) double s=sqrt(a1-a2)*(a1-a2)+(b1-b2)*(b1-b2)。return s。 double distance(double a1, double b1,double a2, doubleb2) return sqrt(a1-a2)*(a1-a2)+(b1-b2)*(b1-b2)。 10、该程序中三次使用字符串处理函数strcat()将 4 个已知的字符串连接成一个新的字符串。程序内容如下所示。#include #include char s 5=“ abcd ” , ” efgh ” , ” ijkl” , ” mnop”。void main( ) strcat(s0,s1) 。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 12 页10 / 12 strcat(s0,s2) 。strcat(s0,s3) 。couts0endl 。 11、分析:该程序将分3 个函数来完成此功能。一个主函数用输出显示n=1,2,3时,上述表达式的值。主函数的调用函数fun()用来求得各项之和,该函数又调用另一个求立方的函数power() 。程序内容如下所示。#include int fun(int n=2) 。int power(int ,int) void main() coutfun(1)endl 。 coutfun(2)endl 。 coutfun(3)endl 。 int fun(int n) int sum=0。 for(int i=1 。i=10。i+) sum+=power(i,n) 。 return sum。 int power(int n1,int n2) int p=1 。 for(int i=1 。i=6),将它表示为i 与 j 之和。 n=i+j;当 i 和 j 都为素数时则为所求。程序内容如下所示。#include int prime(int) 。void main( ) int prime(int) 。int n 。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 10 页,共 12 页11 / 12 coutn 。int i,j 。cout ”两个素数之和的全部可能n ” 。for(i=2 。in。 i+) j=n-i 。if(prime(i)&prime(j) cout ”N=” i + jendl 。 int prime(int n) int j=2 。while(n%j!=0) j+。if(n=j) return 1。else return 0。 运行该程序输出下列信息。输入一个大于等于6 的偶数: 126 输出结果如下所示。两个素数之和的所有可能:N=13+133 N=17+109 N=19+107 N=23+103 N=29+97 N=37+89 N=43+83 N=47+79 N=53+73 N=59+6 13、#include char_count(char *s,char letter) int count=0 。while(*s) if(*s+=letter) count+。return (count) 。 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 11 页,共 12 页12 / 12 void main() char str100,c 。coutstr。coutc。coutthe count is:char_count(str,c) “次” endl 。 14、#include int pattern_index(char substr,char str) int i,j,k 。 for(i=0 。stri 。i+) for(j=i,k=0 。(strj=substrk)|(substrk=?)。j+,k+) if(!substrk+1) return(i) 。 return(0)。 void main() char *substring,*string 。 int same。 substring=?gram 。 string=this program return index of substring。 same=pattern_index(substring ,string) 。 if (same) cout 子串起始位置:sameendl。 else cout 匹配不成功 endl。 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 12 页,共 12 页

    注意事项

    本文(2022年面向对象程序设计C山师第五章习题答案 .pdf)为本站会员(Q****o)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开