第二次上機實驗報告_第1頁
第二次上機實驗報告_第2頁
第二次上機實驗報告_第3頁
第二次上機實驗報告_第4頁
第二次上機實驗報告_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、西安電子科技大學軟件學院面向對象程序設計課程上機報告班 級:131214學 號:13121398姓 名:文琬靈實驗日期:2014年 5月 14 日第 二 次實驗學號:13121398姓名:文琬靈一、實驗環(huán)境1.軟件環(huán)境:Windows, Dev C+集成開發(fā)環(huán)境 2.硬件環(huán)境:無特殊要求二、實驗內容下面分題目列出上機實驗的要求:題目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;/注意加上這一行和沒有這一行的區(qū)別 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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論