




免费预览已结束,剩余2页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、编程题。根据程序要求,写出函数的完整定义。(40分) 1写一个函数,找出给定字符串中大写字母字符(即a-z这26个字母)的个数(如字符串”china computer wrold”中大写字母字符的个数为3个)。 函数的原型: int calccapital (char *str); 函数参数: str为所要处理的字符串; 函数返回值:所给字符串中数字字符的个数 答:int calccapital (char *str) if (str = null) return 0; /判断字符指针是否为空 int num_of_capital = 0; /记录大写字母字符个数的变量,初值为0 for(int i=0; stri != 0x0; i+) if (stri = z) num_of_ capital +; /若是大写字母,则总数加1 return num_of_ capital; /返回大写字母字符数2写一个函数,用递归函数完成以下运算: sum(n) = 1 1/2 + 1/3 1/4 + -(1/n)*(-1)n (其中n0) 函数原型: float sum(int n); 函数参数:n为正整数。 函数返回值:相应于给定的n,右边表达式运算结果。 提示:你可以使用递归表达式: sum(n) = sum(n-1) -(1/n)*(-1)n 答:float sum(int n) if (n = 1) return 1; else return sum(n-1) -(1.0/n)*(-1)n; 3. 给定新数值,在一个按节点所存放数值从大到小排序的链表中,找适当位置插一个新节点,仍保持有序的链表,写一个函数,完成此操作。 函数的原型: node * insnode(node * head, int newvalue); 其中,链表节点的定义如下: struct nodee int value; /存放数值 node * next; /指向链表中的下一个节点 ; 函数参数:函数的第一个参数head指向链表头一节点的指针,如果链表为空,则head的值为null。第二个参数newvalue为所给定的插入新节点的新数值。 函数返回值:当成功地插入新的节点时,函数返回指向新链表头一节点的指针,否则,若不能申请到内存空间,则返回null。 答:node * insnode(node * head, int newvalue) node * newnode = new node; /申请新的节点空间 if (newnode = null)return null;/ newnode-data = newvalue; /填充新节点的内容 newnode-next = null; node *pre, *cur; pre = head; if (head = null) head = newnode; /插入到空链表的表头 else if(newvalue=head-value) newnode-next=head; head = newnode; /插入到链表的表头 else /在链表寻找插入点 node *cur,*pre = head; while(pre-next != null) cur = pre-next; if(newvalue = cur-value) break; else pre = cur; if(pre-next!= null) newnode-next = cur;/若非末尾,则有下一节点 pre-next = newnode; /将新节点插入 return head; 4写一个函数,找出给定数组中具有最小值的元素。 函数的原型: char mincode(char charary); 函数参数:charary所要处理的字符数组名; 函数返回值:返回具有最小ascii码的字符。 答:char mincode(char charary,int len=10) char mixcode = 0x0; for(int i=0; i len; i+) if (charary i mixcode) mixcode = stri; return mixcode; 二、理解问答题: (20分)下面的文件stack.h是一个堆栈类模板stack的完整实现。在这个文件中,首先定义了一个堆栈元素类模板stackitem,然后,在这个类的基础上定义了堆栈类模板stack。在stack中使用链表存放堆栈的各个元素,top指针指向链表的第一个节点元素,bottom指针指向链表的最后一个节点元素,成员函数push()将一个新节点元素加入(压进)到堆栈顶部,pop()从堆栈顶部删除(弹出)一个节点元素。为方便起见,程序中加上了行号。阅读程序,根据程序后面的问题作出相应解答。 1. /*-*/ 2. /* 文件stack.h */ 3. /*-*/ 4. template 5. class stack; 6. /* 定义模板类stackitem */ 7. template 8. class stackitem 9. 10. public: 11. stackitem(const type & elem):item(elem) 12. stackitem() 13. private: 14. type item; 15. stackitem * nextitem; 16. friend class stack; 17. ; 18. /* 定义模板类stack */ 19. template 20. class stack 21. 22. public: 23. stack():top( null), _(a)_ 24. stack(); 25. type pop(); 26. void push(const type &); 27. bool is_empty() const return _(b) _ ; 28. private: 29. stackitem * top; 30. stackitem * bottom; 31. ; 32. /模板类stack的函数成员pop()的实现。 33. /从堆栈顶弹出一个节点,并返回该节点的值 34. template 35. type stack:pop() 36. 37. stackitem *ptop; /指向顶部节点的临时指针 38. type retval; /返回值 39. _(c) _; 40. retval = top-item; 41. top = top-nextitem; 42. delete ptop; 43. return retval; 44. 45. /模板类stack的函数成员push()的实现 46. template 47. void stack:push(const type & newitem) 48. 49. stackitem *pnew = new stackitem( newitem); 50. _(d)_; 51. if (bottom = null) bottom = top = pnew; 52. else _(e)_; 53. 54. /模板类stack的析构函数stack()的实现 55. template 56. stack:stack() 57. 58. stackitem *p = top, *q; 59. while(p != null) 60. q = p-nextitem; 61. delete p; 62. p = q; 63. 64. 问题1: 程序中有几处填空,将它们完成。 (a)bottom (null) (b)top = null; (c)ptop = top; (d)pnew-nextitem = top; (e)top = pnew; 问题2:程序第4,5行有什么作用?如果没有这两行语句,程序还正确吗? 答:不正确。因为类stackitem模板类的定义中用到了模板类stack, stack还没有定义,所以,必须先声明stack是一个模板类,否则,编译程序就不知道标识符stack代表什么样的含义,无法进行编译。问题3:程序中多处出现const,请分别说明它们各自表示什么含义。 答:第11、26和47行的const修饰的都是函数的参数,表示在这个函数体中不能改它所修饰的参数的值。第27行的const修饰的是模板类stack的成员函数is_empty(),它表示在函数is_empty()的函数体中不能改变任何数据成员的值。问题4:程序中模板类stack的析构函数主要做了什么事情?为什么要这么做? 答:析构函数中主要是释放存放的各个节点所占涌空间。因为stack对象在其生存期间可能加入了很多节点,从堆中申请了一些内存空间。这些空间应随着对象的消亡而释放掉,所以,需要在析构函数中释放这些空间。问题5:下面的程序使用了stack.h文件中定义的类模板,请说明下列程序中定义堆栈对象的语句(1-5)是否正确。 #include “stack.h” void main() stack q1; / 1 stack q2; / 2 stack q3(10); / 3 stack q410; / 4 stack *q5 = new stack; / 5 /. delete q5; 答: 语句号12345对/错错对错错对三、填空题(20分)下面是一个求数组元素之和的程序。主程序中定义了并初始化了一个数组,然后计算该数组各元素的和,并输出结果。函数sum计算数组元素之和。填充程序中不完整的部分。_a_.int sum(int ,int);void main()int ia5 = 2,3,6,8,10;b ;sumofarray = sum(ia,5);cout sum of array: sumofarray endl;int sum(int array,int len)int isum = 0;for(int i = 0; c ; d )e ;return isum;a:#include b: int sumofarray=0;c:ilend:i+e:isum+=arrayi四、综合编程题(20分)定义一个日期类date,该类对象存放一个日期,可以提供的操作有:int getyear ();/取年份int getmonth ();/取月份int getday ();/取日子值void setdate (int year, int month, int day);/设置日期值下面是测试你所定义的日期类程序:#include #include “date.h”void main() date d1(1999, 1, 14);/用所给日期定一个日期变量date d2; /定义一个具有缺省值为1980年1月1日的日期,date d3(d1);/用已有日期x构造一个新对象d2.setdate(1999,3,13);cout date:;cout d1.getyear() . d1.getmonth() . d1.getday() endl;cout date:;cout d2.getyear() . d2.getmonth() . d2.getday() endl;cout date:;cout d3.getyear() . d3.getmonth() . d3.getday() endl;写出日期类的完整定义,其,三个get函数写成内联函数形式,setdate写成非内联函数形式。所有数据成员都定义为私有成员。注意构造函数的三种形式。写出程序的运行结果。修改程序,在日期类中定义日期的输出函数,这样,主程序就可以简化。输出格式和上面一样。只需要写出类date的修改部分。简化后主程序如下:void main()date d1(1999, 1, 14);date d2;date d3(d1);d2.setdate(1999,3,13);d1.print();d2.print();d3.print();答:class dateprivate:int year,month,day;public:data(int yr,int mth,int dy):year(yr),month(mth),day(dy);date():year(1980),month(1),day(1);date(date&d1):year(d1.year),month(d1.month),day(d1.day);int getyear()return year;int getmonth()
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030中国节能玻璃行业竞争格局及未来趋势与投资回报评估报告
- 2025-2030中国绿色建筑市场发展分析及前景趋势与节能减排研究报告
- 山东省日照市五莲二中学2026届物理八上期末统考模拟试题含解析
- 2026届山东省菏泽市部分市县物理八上期末经典模拟试题含解析
- 电缆检修2025年中小企业财务管理与风险防范报告
- 旧书换新绿2025年环保公益活动影响力评估报告
- 废品回收系统2025年中小企业废弃物处理技术与市场研究报告
- 震动监测装置在石油开采行业的2025年应用前景报告
- 2026届山东省济宁市鱼台县物理八年级第一学期期末学业水平测试试题含解析
- 2026届重庆市外国语学校八年级物理第一学期期末考试模拟试题含解析
- 给药错误的应急流程
- 交流电能表现场校验仪检定规程
- 复旦大学金融科技研究院发布-中国金融科技专利技术白皮书(2024年)
- 2025年9月六年级上册数学教学计划
- 多模态大语言模型领域进展分享
- 部编版一年级语文上册教学设计(全册)
- 考点巩固卷02世界地理(原卷版)
- 人教版英语七年级上册阅读理解专项训练16篇(含答案)
- 高效压缩空气系统供应规范(TCECA-G 0225-2023)
- 部编版三年级上册道德与法治全册一课一练(含答案)+期中、期末试卷
- 机械基础第二版全书教案教学设计
评论
0/150
提交评论