版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、西安电子科技大学软件学院面向对象程序设计课程上机报告班 级:131214学 号:13121398姓 名:文琬灵实验日期:2014年 5月 14 日第 二 次实验学号:13121398姓名:文琬灵一、实验环境1.软件环境:Windows, Dev C+集成开发环境 2.硬件环境:无特殊要求二、实验内容下面分题目列出上机实验的要求:题目1:写出一个类似“Hello,world!”的函数,他以一个名字作为命令行参数,并写出“Hello,name!”(其中name是实际的命令行参数)。修改这个程序,使它能以一系列名字作为参数,并对每个名字分别说Hello。 题目2:考虑:struct Tnode st
2、ring word; int count;struct treenode * left; struct treenode * right;写一个函数向Tnode的树中插入新的单词。写一个函数将Tnode的树打印出来。写一函数将Tnode的树按照单词的字典顺序打印出来。修改Tnode,使得它只存储一个到任意长度的单词的指针,该单词存储在一个由new分配的数组里。修改上述函数,使它们使用新的Tnode。题目3:写一个error函数,它取一个printf风格的包含%c,%s和%d指示符的格式串,以及任意多个参数。请不要使用printf()。使用<cstdarg>。题目四:写一个函数,实现
3、为5.913定义的Date加上一天,一年,一月的功能。写一个函数对于所给的Date给出对应的星期几。写一个函数给出Date之后的打一个星期一对应的Date。 三、源代码及运行结果针对实验内容及要求,给出各题目的源代码,并给出所用的输入数据和对应的输出数据。题目1:源代码如下:#include<cstdarg>#include<iostream>#include<string>using namespace std;void Print_name(const char *abc.) va_list ap; va_start(ap, abc); const ch
4、ar *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","li
5、si","wangwu","chener","zhaoping","end"); system("pause"); return 0;题目1的运行结果如下(应给出输入和对应的输出): 输出:Hello,zhangsan ! Hello,lisi ! Hello,wangwu ! Hello,chener ! Hello,zhaoping !题目2:源代码如下:#include <iostream>#include <iomanip>#include <cm
6、ath>#include<cstdlib>#define EQ(a,b) ( (a) = (b) )#define LT(a,b) ( (a) < (b) )#define LQ(a,b) ( (a) <= (b) )#define FALSE 0#define TRUE 1using namespace std;typedef struct treenode struct treenode * left; string word; struct treenode * right;BiTreenode, * BiTreep;void init_tree(BiTre
7、ep & root) root = NULL;int SearchBST(BiTreep & rt, string key, BiTreep father, BiTreep & p)/查找元素 if ( ! rt) p = father; return FALSE; else if (EQ(key,rt->word) p = rt; return TRUE; else if (LT(key,rt -> word) return SearchBST(rt -> left,key,rt,p); else return SearchBST(rt ->
8、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 ->
9、left = s; else p -> right = s; return TRUE; else return FALSE;void mid_order(BiTreep & rt) if (rt != NULL) mid_order(rt -> left); cout << rt -> word << " " ; mid_order(rt -> right); void pre_order(BiTreep & rt) if( rt != NULL) cout << rt -> word <
10、;< " " pre_order(rt -> left); pre_order(rt -> right); void behind_order(BiTreep & rt) if( rt != NULL) behind_order(rt -> left); behind_order(rt -> right); cout << rt -> word << " " int serach_tree(BiTreep & rt, string key) if (rt = NULL) retu
11、rn FALSE; else if (rt -> 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:" <&l
12、t; endl; /while(cin>>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:"
13、; << 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<iostream>#includ
14、e<stdarg.h>using 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;
15、case 'c':cerr << va_arg(ap, int);break; case 'f':cerr << va_arg(ap,double);break; /case 'db':cerr<<va_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'
16、;,'D','v'); cout << endl; system("pause"); return 0;题目3的运行结果如下(应给出输入和对应的输出):输出:There are 3 errors . The list of errors : 97 68 118题目四的源代码如下:#include<iostream>#include<cmath>using namespace std;struct year_m_dint year;int month;int day;/struct year_m_d date
17、;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
18、_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 <&
19、lt; "所给日期是星期:" << endl << i << endl; datec = date1; dates = Monday(datec); cout << "下一个星期一是:" << endl << dates.year << "年" << dates.month << "月" << dates.day << "日" << endl;dates
20、 = add_year(date1);cout << "加上一年:" << endl << dates.year << "年" << dates.month << "月" << dates.day << "日" << endl;dates = add_month(date1);cout << "加上一月:" << endl << dates.year &
21、lt;< "年" << dates.month << "月" << dates.day << "日" << endl;dates = add_day(date1);cout << "加上一日:" << endl << dates.year << "年" << dates.month << "月" << dates.day <
22、;< "日" << 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 &
23、lt; 0)return 0;else if(date.month < 1 | 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
24、)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) dat
25、e.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 +=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建筑业薪酬政策
- 林业安防施工合同
- 国际项目经理聘用合同样本
- 超市入口雨棚建设协议
- 办公楼电梯电缆铺设协议
- 智能众测开发票协议书
- 电子商务履约管理办法
- 办公楼物业租赁合同
- 礼品店装修粉刷施工协议
- 制造执行系统操作与应用课件 4-3-2设备故障与维护
- 浙教版(2023)四年级上册信息科技-教学计划
- (新版)糖尿病知识竞赛考试题库300题(含答案)
- 2022人民医院医共体章程
- 技术创新课件教学课件
- 汽车退款合同
- 第四章 光现象章节练习2024-2025学年人教版八年级物理上册
- 《生活处处有设计》课件2024-2025学年湘美版初中美术七年级上册
- 第十五届全国交通运输行业职业技能大赛(公路收费及监控员赛项)考试题库-上(单选题)
- 《中国肿瘤防治核心科普知识(2024)》解读
- 2024年新人教版七年级上册历史教学课件 第10课 秦末农民大起义
- 2024年北师大版小升初数学试卷及答案
评论
0/150
提交评论