




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
西安电子科技大学软件学院面向对象程序设计课程上机报告班 级:131214学 号:13121398姓 名:文琬灵实验日期:2014年 5月 14 日14第 二 次实验学号:13121398姓名:文琬灵一、实验环境1.软件环境:Windows, Dev C+集成开发环境 2.硬件环境:无特殊要求二、实验内容下面分题目列出上机实验的要求:题目1:写出一个类似“Hello,world!”的函数,他以一个名字作为命令行参数,并写出“Hello,name!”(其中name是实际的命令行参数)。修改这个程序,使它能以一系列名字作为参数,并对每个名字分别说Hello。 题目2:考虑:struct Tnode string word; int count;struct treenode * left; struct treenode * right;写一个函数向Tnode的树中插入新的单词。写一个函数将Tnode的树打印出来。写一函数将Tnode的树按照单词的字典顺序打印出来。修改Tnode,使得它只存储一个到任意长度的单词的指针,该单词存储在一个由new分配的数组里。修改上述函数,使它们使用新的Tnode。题目3:写一个error函数,它取一个printf风格的包含%c,%s和%d指示符的格式串,以及任意多个参数。请不要使用printf()。使用。题目四:写一个函数,实现为5.913定义的Date加上一天,一年,一月的功能。写一个函数对于所给的Date给出对应的星期几。写一个函数给出Date之后的打一个星期一对应的Date。 三、源代码及运行结果针对实验内容及要求,给出各题目的源代码,并给出所用的输入数据和对应的输出数据。题目1:源代码如下:#include#include#includeusing namespace std;void Print_name(const char *abc.) va_list ap; va_start(ap, abc); const char *s; cout Hello, abc ! endl; while(s = va_arg(ap, const char*) if(s = end) break; cout Hello, s ! endl; va_end(ap);int main() Print_name(zhangsan,lisi,wangwu,chener,zhaoping,end); system(pause); return 0;题目1的运行结果如下(应给出输入和对应的输出): 输出:Hello,zhangsan ! Hello,lisi ! Hello,wangwu ! Hello,chener ! Hello,zhaoping !题目2:源代码如下:#include #include #include #include#define EQ(a,b) ( (a) = (b) )#define LT(a,b) ( (a) (b) )#define LQ(a,b) ( (a) word) p = rt; return TRUE; else if (LT(key,rt - word) return SearchBST(rt - left,key,rt,p); else return SearchBST(rt - right,key,rt,p); int InsertBST(BiTreep & rt, string key)/查找元素后不在树里,就加入 BiTreep p; BiTreep s; if ( ! SearchBST(rt,key,NULL,p) s = new BiTreenode;/(BiTreep)malloc( sizeof (BiTreenode); s - word = key; s - left = s - right = NULL; if ( ! p) rt = s; else if (LT(key,p - word) p - left = s; else p - right = s; return TRUE; else return FALSE;void mid_order(BiTreep & rt) if (rt != NULL) mid_order(rt - left); cout word right); void pre_order(BiTreep & rt) if( rt != NULL) cout word left); pre_order(rt - right); void behind_order(BiTreep & rt) if( rt != NULL) behind_order(rt - left); behind_order(rt - right); cout word word = key) return TRUE; else if (LT(key,rt - word) return serach_tree(rt - left,key); else return serach_tree(rt - right,key); int main() string val,s; BiTreep root; init_tree(root); cout Input the string you want to create a tree: val) /if(val = end) break; /InsertBST(root,val); / while(cin val & val != end) InsertBST(root,val); cout Print the tree (pre_order): endl; pre_order(root); cout endl order: endl; mid_order(root); cout endl; system(pause); return 0 ;题目2的运行结果如下(应给出输入和对应的输出): 输出: Input the string you want to create a tree: 输入: efg ab hij cd end 输出:Print the tree (pre_order): 输出:efg ab cd hij 输出:sort: 输出:ab cd efg hij题目3的源代码如下:#include#includeusing namespace std;void error(char const *abc, .) va_list ap; va_start(ap, abc); for(char const *s=abc; *s; +s) if(*s != %) cerr.put(*s); else switch(*(+s) case d:cerr va_arg(ap, int);break; case s:cerr va_arg(ap, char const*);break; case c:cerr va_arg(ap, int);break; case f:cerr va_arg(ap,double);break; /case db:cerrva_arg(t,double);break; va_end(ap);int main() error(%s %d %s %c %c %c,There are,3,errors .nThe list of errors :n,a,D,v); cout endl; system(pause); return 0;题目3的运行结果如下(应给出输入和对应的输出):输出:There are 3 errors . The list of errors : 97 68 118题目四的源代码如下:#include#includeusing namespace std;struct year_m_dint year;int month;int day;/struct year_m_d date;int leap_day12 = 31,29,31,30,31,30,31,31,30,31,30,31;int not_leap_day12 = 31,28,31,30,31,30,31,31,30,31,30,31;int weeka7 = 7,6,5,4,3,2,1;int weekb7 = 1,2,3,4,5,6,7;int check_leap(year_m_d date);int check_year_m_d(year_m_d date);year_m_d add_year(year_m_d date);year_m_d add_month(year_m_d date);year_m_d add_day(year_m_d date);int week(year_m_d date);year_m_d Monday(year_m_d &date); int main() int i; year_m_d date1,dates,datec;/必须要 有一个dates来将date1的值赋给它,否则调用函数输出的始终是date1刚开始的值 cin date1.year date1.month date1.day; if(check_year_m_d(date1) i = week(date1); cout 所给日期是星期: endl i endl; datec = date1; dates = Monday(datec); cout 下一个星期一是: endl dates.year 年 dates.month 月 dates.day 日 endl;dates = add_year(date1);cout 加上一年: endl dates.year 年 dates.month 月 dates.day 日 endl;dates = add_month(date1);cout 加上一月: endl dates.year 年 dates.month 月 dates.day 日 endl;dates = add_day(date1);cout 加上一日: endl dates.year 年 dates.month 月 dates.day 日 endl;else cout 输入错误 ! endl;system(pause);return 0;int check_leap(year_m_d date)if(date.year % 400 = 0) | (date.year % 100 != 0) & (date.year % 4 = 0) return 1;else return 0;int check_year_m_d(year_m_d date)if(date.year 0)return 0;else if(date.month 12) return 0;else if(check_leap(date)if(date.day leap_daydate.month-1)return 0;else return 1;/注意加上这一行和没有这一行的区别 else if(date.day not_leap_daydate.month-1) return 0;else return 1;year_m_d add_year(year_m_d date)if(check_year_m_d(date)date.year += 1;return date;year_m_d add_month(year_m_d date)if(check_year_m_d(date)if(date.month = 12)date.month = 1;date.year += 1; else date.month += 1;return date;year_m_d add_day(year_m_d date)if(check_year_m_d (date)if(check_leap(date)if(date.day = leap_daydate.month-1) if(date.month = 12) date.month = 1; date.day = 1; date.year += 1; else date.month += 1; date.day = 1; else date.day += 1; else if(date.day = not_leap_daydate.month-1) if(date.month = 12) date.month = 1; date.day = 1; date.year += 1; else date.month += 1; date.day = 1; else date.day += 1;return date;int week(year_m_d date) int day = 0; for(int year = 1970;year != date.year;+ year) if(check_leap(date) day += 366; else day += 365; for(int month = 1;month != date.month;+ month) if(check_leap(date) day += leap_daydate.month - 1; else day += not_leap_daydate.month-1; day += date.day-1; return (d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 培训保安消防知识目的课件
- 培训体系的基本知识课件
- 2025年住院医师规培-陕西-陕西住院医师规培(内科)历年参考题库典型考点含答案解析
- 2025年住院医师规培-辽宁-辽宁住院医师规培(眼科)历年参考题库典型考点含答案解析
- 2025年住院医师规培-福建-福建住院医师规培(耳鼻咽喉科)历年参考题库含答案解析
- 2025年住院医师规培-甘肃-甘肃住院医师规培(预防医学科)历年参考题库含答案解析(5套)
- 2025年住院医师规培-甘肃-甘肃住院医师规培(外科)历年参考题库含答案解析
- 2025年住院医师规培-湖北-湖北住院医师规培(骨科)历年参考题库含答案解析
- 高品质托管业务岗位面试题库
- 新面试题:河钢招聘攻略与面试技巧
- 无人机项目融资计划书
- 液氧站施工方案
- GB/T 16886.12-2023医疗器械生物学评价第12部分:样品制备与参照材料
- 发泡模具验收报告
- HCCDP 云迁移认证理论题库
- 无线电技术设施运行维护定期巡检项目总表
- 社会组织规范化建设评价指标体系解读
- GB/T 702-2017热轧钢棒尺寸、外形、重量及允许偏差
- GB/T 20238-2018木质地板铺装、验收和使用规范
- GB/T 1303.1-1998环氧玻璃布层压板
- GB/T 11684-2003核仪器电磁环境条件与试验方法
评论
0/150
提交评论