

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 課程名稱 C++課程設(shè)計 </p><p> 教師姓名 </p><p> 本科生姓名 </p><p> 本科生學(xué)號 </p><p> 本科生專業(yè) 網(wǎng)絡(luò)工程 </p>&
2、lt;p> 所在院系 計算機學(xué)院 </p><p> 日期: 2012年7月7日 </p><p><b> 課程設(shè)計評語</b></p><p> 注:1、無評閱人簽名成績無效;</p><p> 2、必須用鋼筆或圓珠筆批閱,用鉛筆閱卷無效;</p>
3、<p> 3、如有平時成績,必須在上面評分表中標出,并計算入總成績。</p><p><b> 目 錄</b></p><p> 封面··················
4、183;····································
5、·········1</p><p> 課程設(shè)計評語······················
6、3;·································2</p><p&g
7、t; 目 錄···································
8、83;···························3</p><p> 1.課程論文題目····
9、;····································
10、83;············4</p><p> 2.程序設(shè)計思路···················
11、;··································4</p>&l
12、t;p> 3.功能模塊圖··································
13、·····················5</p><p> 4.模塊分析··········
14、3;····································
15、183;·········6</p><p> 5.程序代碼······················
16、··································8</p><
17、;p> 6.運行結(jié)果··································
18、183;·····················14</p><p> 遇到的困難及解決方法·········&
19、#183;···································18<
20、;/p><p> 8.心得體會································
21、183;·······················18</p><p> 致謝········
22、83;····································&
23、#183;···················18</p><p> 10參考文獻···········
24、3;····································
25、183;·······18</p><p><b> 課程題目:</b></p><p><b> 題目:字符串處理</b></p><p><b> 要求:</b></p><p> 1.strcp
26、y函數(shù)</p><p> 2.strncpy函數(shù)</p><p> 3.strcat函數(shù) </p><p> 4.strncat函數(shù)</p><p> 5.strlwen函數(shù)</p><p> 6.strupr函數(shù)</p><p> 7.strlwr函數(shù)</p>
27、<p><b> 設(shè)計思路:</b></p><p> 該題目要求實現(xiàn)七個功能,既要求編寫七個函數(shù)來分別實現(xiàn)。利用分裝的設(shè)計思路我把各個函數(shù)的聲明放到**.h文件里面,將函數(shù)的定義放在一個**.cpp文件里面,最后將main函數(shù)放在一個**.cpp文件里面,通過main函數(shù)去調(diào)用不同的函數(shù)同時編寫一個菜單函數(shù)來進行對具體調(diào)用哪個函數(shù)來進行選擇,實現(xiàn)不同的功能。</p>
28、;<p><b> 3.功能模塊:</b></p><p><b> 模塊分析</b></p><p> ?。?)Mystrcpy模塊</p><p> 實現(xiàn)目的是將數(shù)組s1的元素全部復(fù)制給s1.利用的方法是通過while循環(huán)逐位讀取s1的元素,只要不為'\0'就將其復(fù)制給s1。需注意的
29、是要在s2結(jié)尾處添加'\0'以結(jié)束其復(fù)制。</p><p> char* Mystring::Mystrcpy(char s1[],char s2[]) {</p><p><b> int i=0;</b></p><p> while(s1[i]!='\0')</p><p>
30、 {s2[i]=s1[i];</p><p><b> i++;}</b></p><p> s2[i]='\0'; //strcpy完成后輸入'\0'結(jié)束S2</p><p> cout << s2 <<endl << "已完成Mystrcpy"
31、; << endl;</p><p> return s2;</p><p><b> }</b></p><p> Mystrncpy模塊</p><p> 該模塊實現(xiàn)功能與Mystrcpy模塊相似,但是其復(fù)制時要滿足從規(guī)定的地方開始復(fù)制。所以,在此我添加了復(fù)制位數(shù)n以實現(xiàn)控制功能。利用for語句來
32、控制其能夠在第n位停止。</p><p> char* Mystring::Mystrncpy(char s1[],char s2[]) {</p><p> cout << "請輸入復(fù)制位數(shù)n" << endl;</p><p><b> int n;</b></p><p
33、> cin >> n; //控制strncpy長度</p><p> for(int i=0;i<n;i++) ///直到第n位循環(huán)結(jié)束</p><p> s2[i]=s1[i];</p><p> s2[i]='\0';</p><p> cout << s2 <&
34、lt; endl << "已完成Mystrncpy" << endl;</p><p> return s2;</p><p><b> }</b></p><p> Mystrcat模塊</p><p> 該模塊實現(xiàn)功能是將數(shù)組s1接到s2后面。于是我利用strcpy
35、模塊的方式從s2的結(jié)尾處開始復(fù)制。只是要實現(xiàn)這一功能必須獲取s2數(shù)組的長度,通過while循環(huán)來獲取。</p><p> char* Mystring::Mystrcat(char s1[],char s2[]) {</p><p><b> int j=0;</b></p><p> while(s2[j]!='\0')
36、</p><p> j ++; //while循環(huán)獲得s2[]字符長度,該處不能直接利用sizeof來獲取,因為sizeof是建立在string庫基礎(chǔ)上的</p><p><b> int i=0;</b></p><p> while(s1[i]!='\0') {</p><p> while
37、((s2[j]=s1[i])!='\0'){</p><p> //s2[j]=s1[i];</p><p><b> j++;</b></p><p><b> i++;}}</b></p><p> //s2[j]='\0';</p><
38、;p> cout << s2 << endl << "已完成Mystrcat"<< endl;</p><p> return s2;</p><p><b> }</b></p><p> Mystrncat模塊</p><p> 與M
39、ystrcat模塊類似,只是要求能夠控制連接長度,于是輸入長度a來控制。</p><p> char* Mystring::Mystrncat(char s1[],char s2[]) {</p><p><b> int i=0;</b></p><p> while(s1[i]!='\0')</p>&l
40、t;p><b> {</b></p><p> cout << "請輸入Mystrncat長度a" << endl;</p><p><b> int a;</b></p><p> cin >> a; //控制strncat長度</p>
41、<p> while((s2[a]=s1[i])!='\0'){</p><p> //s2[a]=s1[i];</p><p><b> a++;</b></p><p><b> i++;}}</b></p><p> //s2[a]='\0
42、9;;</p><p> cout << s2 << endl << "已完成Mystrncat" << endl;</p><p> return s2;</p><p><b> }</b></p><p> ?。?)Mystrlen模塊&l
43、t;/p><p> 該模塊較為簡單,前面的模塊中也有用到即利用while循環(huán)來實現(xiàn)讀取長度。</p><p> void Mystring::Mystrlen(char s[]) {</p><p><b> int j=0;</b></p><p> while(s[j]!='\0') {</
44、p><p><b> j++;</b></p><p> } //通過while循環(huán)獲取數(shù)組s2[]長度</p><p> cout << j << endl << "已完成Mystrlen" <<endl;</p><p><b>
45、 }</b></p><p> Mystrupr模塊</p><p> 該模塊實現(xiàn)功能是將小寫字母轉(zhuǎn)換成大寫字母。此處采用方式是對各元素進行ASCII位置移動。</p><p> void Mystring::Mystrupr(char str1[])</p><p><b> {</b></p
46、><p> char *s = str1; //指針s指向str1[]首地址</p><p> for(int i=0;str1[i]!='\0';i++){</p><p> if(*(s+i)>=957&& *(s+i)<=122){ ///判斷是否在小寫字母區(qū)間內(nèi),在執(zhí)行替換功能;不在直接跳過<
47、;/p><p> *(s+i)-=32;</p><p><b> }</b></p><p> } </p><p> //while (*s != '\0')</p><p><b> //{</b></p&
48、gt;<p> // if (*s >= 'a' && *s <= 'z') //控制*s范圍</p><p> // *s -= 0x20; //通過移動指針位置改變其所指內(nèi)容</p><p> // s ++;
49、 //移向下一位</p><p><b> // }</b></p><p> cout << str1 << endl << "已完成Mystrupr" << endl;</p><p><b> }</b></p&g
50、t;<p> Mystrlwr模塊</p><p> 該模塊是Mystrlwr模塊的逆過程,將大寫字母替換為小寫字母。</p><p> void Mystring::Mystrlwr(char str2[])</p><p><b> {</b></p><p> char *s = str2;
51、</p><p> for(int i=0;str2[i]!='\0';i++){</p><p> if(*(s+i)>=65 && *(s+i)<=90){</p><p> *(s+i)+=32;</p><p><b> }</b></p><
52、;p><b> }</b></p><p> cout << str2 << endl << "已完成Mstrlwr" << endl;</p><p><b> }///:~</b></p><p><b> 程序代碼</b
53、></p><p> ...........................................................................................................................................Mystring.h</p><p> //:Mystring.h</p&g
54、t;<p> //Mystring classes</p><p> #ifndef MYSTRING_H</p><p> #define MYSTRING_H</p><p> class Mystring{</p><p><b> public:</b></p><p&
55、gt; Mystring();</p><p> ~Mystring();</p><p><b> menu();</b></p><p> char* Mystrcpy(char s1[],char s2[]);</p><p> char* Mystrncpy(char s1[],char s2[]);&
56、lt;/p><p> char* Mystrcat(char s1[],char s2[]);</p><p> char* Mystrncat(char s1[],char s2[]);</p><p> void Mystrlen(char s[]);</p><p> void Mystrupr(char str1[]);</
57、p><p> void Mystrlwr(char str2[]);</p><p><b> };</b></p><p> #endif //MYSTRING_H ///:~</p><p> ...........................................................
58、.........................................................................Mystring.cpp</p><p> //:Mystring.cpp</p><p> //Mystring.cpp</p><p> #include "Mystring.h"</p
59、><p> #include <cassert></p><p> #include <iostream></p><p> using namespace std;</p><p> Mystring::Mystring() {</p><p><b> }</b>
60、</p><p> Mystring::~Mystring() {</p><p><b> }</b></p><p> /*****Mystrcpy*****/</p><p> char* Mystring::Mystrcpy(char s1[],char s2[]) {</p><p&
61、gt;<b> int i=0;</b></p><p> while(s1[i]!='\0')</p><p> {s2[i]=s1[i];</p><p><b> i++;}</b></p><p> s2[i]='\0'; //strcpy完成
62、后輸入'\0'結(jié)束S2</p><p> cout << s2 <<endl << "已完成Mystrcpy" << endl;</p><p> return s2;</p><p><b> }</b></p><p> /*
63、****Mystrncpy*****/</p><p> char* Mystring::Mystrncpy(char s1[],char s2[]) {</p><p> cout << "請輸入復(fù)制位數(shù)n" << endl;</p><p><b> int n;</b></p>
64、<p> cin >> n; //控制strncpy長度</p><p> for(int i=0;i<n;i++)</p><p> s2[i]=s1[i];</p><p> s2[i]='\0';</p><p> cout << s2 << endl
65、 << "已完成Mystrncpy" << endl;</p><p> return s2;</p><p><b> }</b></p><p> /*****Mystrcat*****/</p><p> char* Mystring::Mystrcat(char
66、 s1[],char s2[]) {</p><p><b> int j=0;</b></p><p> while(s2[j]!='\0')</p><p> j ++; //while循環(huán)獲得s2[]字符長度</p><p><b> int i=0;</b><
67、/p><p> while(s1[i]!='\0') {</p><p> while((s2[j]=s1[i])!='\0'){</p><p> //s2[j]=s1[i];</p><p><b> j++;</b></p><p><b>
68、i++;}}</b></p><p> //s2[j]='\0';</p><p> cout << s2 << endl << "已完成Mystrcat"<< endl;</p><p> return s2;</p><p><b&
69、gt; }</b></p><p> /*****Mystrncat*****/</p><p> char* Mystring::Mystrncat(char s1[],char s2[]) {</p><p><b> int i=0;</b></p><p> while(s1[i]!=
70、9;\0')</p><p><b> {</b></p><p> cout << "請輸入Mystrncat長度a" << endl;</p><p><b> int a;</b></p><p> cin >> a;
71、 //控制strncat長度</p><p> while((s2[a]=s1[i])!='\0'){</p><p> //s2[a]=s1[i];</p><p><b> a++;</b></p><p><b> i++;}}</b></p><p
72、> //s2[a]='\0';</p><p> cout << s2 << endl << "已完成Mystrncat" << endl;</p><p> return s2;</p><p><b> }</b></p>&l
73、t;p> /*****Mystrlen*****/</p><p> void Mystring::Mystrlen(char s[]) {</p><p><b> int j=0;</b></p><p> while(s[j]!='\0') {</p><p><b> j
74、++;</b></p><p> } //通過while循環(huán)獲取數(shù)組s2[]長度</p><p> cout << j << endl << "已完成Mystrlen" <<endl;</p><p><b> }</b></p><
75、p> /*****Mystrupr*****/</p><p> void Mystring::Mystrupr(char str1[])</p><p><b> {</b></p><p> char *s = str1; //指針s指向str1[]首地址</p><p> for(int
76、 i=0;str1[i]!='\0';i++){</p><p> if(*(s+i)>=95 && *(s+i)<=122){</p><p> *(s+i)-=32;</p><p><b> }</b></p><p> } &
77、lt;/p><p> //while (*s != '\0')</p><p><b> //{</b></p><p> // if (*s >= 'a' && *s <= 'z') //控制*s范圍</p><p> //
78、 *s -= 0x20; //通過移動指針位置改變其所指內(nèi)容</p><p> // s ++; //移向下一位</p><p><b> // }</b></p><p> cout << str1 << e
79、ndl << "已完成Mystrupr" << endl;</p><p><b> }</b></p><p> /*****Mystrlwr*****/</p><p> void Mystring::Mystrlwr(char str2[])</p><p><
80、;b> {</b></p><p> char *s = str2;</p><p> for(int i=0;str2[i]!='\0';i++){</p><p> if(*(s+i)>=65 && *(s+i)<=90){</p><p> *(s+i)+=32;&
81、lt;/p><p><b> }</b></p><p><b> }</b></p><p> cout << str2 << endl << "已完成Mstrlwr" << endl;</p><p><b> }
82、///:~</b></p><p> ..................................................................................................................................MstringTest.cpp</p><p> //MystringTest
83、.cpp</p><p> #include "Mystring.h"</p><p> #include <iostream></p><p> #include <fstream></p><p> using namespace std;</p><p> v
84、oid menu()</p><p><b> {</b></p><p><b> int w1;</b></p><p><b> char n;</b></p><p> /*變量n保存選擇菜單數(shù)字,w1判斷輸入的數(shù)字是否在功能菜單對應(yīng)數(shù)字范圍內(nèi)*/</p&
85、gt;<p> system("cls");</p><p><b> do</b></p><p><b> {</b></p><p> cout<<"****************************************************
86、********"<<endl;</p><p> cout<<" ***************** 總菜單 *****************"<<endl;</p><p> cout<<" *** 1.Mystrcpy
87、 ***"<<endl;</p><p> cout<<" *** 2.Mystrncpy ***"<<endl;</p><p> cout<<" *** 3.Mystrcat
88、 ***"<<endl;</p><p> cout<<" *** 4.Mystrncat ***"<<endl;</p><p> cout<<" *** 5.Mystrlen
89、 ***"<<endl;</p><p> cout<<" *** 6.Mystrupr ***"<<endl;</p><p> cout<<" *** 7.Mystlwr
90、 ***"<<endl;</p><p> cout<<" *** 8.退出 ***"<<endl;</p><p> cout<<"************************
91、************************************"<<endl;</p><p> cout<<"選擇要進行的功能代號(1-8):";</p><p><b> cin>>n;</b></p><p> if(n<'1'||n&
92、gt;'8') /*對選擇的數(shù)字作判斷*/</p><p><b> {</b></p><p><b> w1=1;</b></p><p> cout<<"??? 請輸入數(shù)字 1~8!"<<endl;</p
93、><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> Mystring x;</p><p><b> w1=0;</b></p>&
94、lt;p><b> /*選擇功能*/</b></p><p><b> switch(n)</b></p><p><b> {</b></p><p> case '1':{</p><p> cout << "請輸入數(shù)組
95、s1[],s2[]" << endl;</p><p> char s1[100];</p><p> cin >> s1;</p><p> char s2[100];</p><p> cin >> s2;</p><p> x.Mystrcpy(s1,s2)
96、;break;</p><p> } /*strcpy模塊*/</p><p> case '2':{</p><p> cout << "請輸入數(shù)組s1[],s2[]" << endl;</p><p>
97、 char s1[100];</p><p> cin >> s1;</p><p> char s2[100];</p><p> cin >> s2;</p><p> x.Mystrncpy(s1,s2);break;</p><p> }
98、 /*strncpy模塊*/</p><p> case '3':{</p><p> cout << "請輸入數(shù)組s1[],s2[]" << endl;</p><p> char s1[100];</p><p> cin >>
99、; s1;</p><p> char s2[100];</p><p> cin >> s2;</p><p> x.Mystrcat(s1,s2);break;</p><p> } /*strcat模塊*/</p><p>
100、; case '4':{</p><p> cout << "請輸入數(shù)組s1[],s2[]" << endl;</p><p> char s1[100];</p><p> cin >> s1;</p><p> char s2[100];</p>
101、<p> cin >> s2;</p><p> x.Mystrncat(s1,s2);break;</p><p> } /*strncat模塊*/</p><p> case '5':{</p><p> cout
102、<<"請輸入數(shù)組s[]" << endl;</p><p> char s[100];</p><p><b> cin >> s;</b></p><p> x.Mystrlen(s);break;</p><p> }
103、 /*strlen模塊*/</p><p> case '6':{</p><p> cout << "請輸入數(shù)組小寫str1[]" << endl;</p><p> char str1[100];</p><p> cin >
104、> str1;</p><p> x.Mystrupr(str1);break;</p><p> } /*strupr模塊*/</p><p> case '7':{</p><p> cout << "請輸入數(shù)組
105、大寫str2[]" << endl;</p><p> char str2[100];</p><p> cin >> str2;</p><p> x.Mystrlwr(str2);</p><p> } /*strlw
106、r模塊*/</p><p> case '8':exit(0);</p><p><b> }</b></p><p><b> }</b></p><p> }while(w1==1); getchar();</p><p><b> }
107、</b></p><p> int main()</p><p><b> {</b></p><p> menu(); /*進入菜單*/</p><p><b> return 0;</b></p><p><b> }///:
108、~</b></p><p><b> 程序運行結(jié)果</b></p><p> Mstrcpy運行結(jié)果</p><p> Mstrncpy運行結(jié)果</p><p> Mstrcat運行結(jié)果</p><p> Mstrncat運行結(jié)果</p><p>
109、Mstrlen運行結(jié)果</p><p> Mystrupr運行結(jié)果</p><p> Mystrlwr運行結(jié)果</p><p> 遇到的困難及解決方法</p><p> 萬事開頭難,其實最先開始時我不知如何下手來實現(xiàn)這些功能。只能從最簡單的strcpy開始。但是當寫完strcpy后我突然發(fā)現(xiàn)也不是很難,于是慢慢寫下來終于寫好了。期間遇
110、到的問題有一個是如何來控制strcat的起始位置,同學(xué)告訴我說可以利用strlen來進行先讀取數(shù)組長度再處理。我經(jīng)過思考解決了這個問題。</p><p> 8.總結(jié)心得及良好建議</p><p> 寫程序本身即是一件令人枯燥乏味的事情,重要的是要有堅持的信心。最令人興奮喜悅的卻莫過于經(jīng)過N+1次的修改調(diào)試之后終于成功的快樂。很多程序都是相通的,很多語言也是有共同點的,但又是不同的。我在
111、編寫程序的過程中用到了大量的C語言知識,菜單函數(shù)也是我對C語言課程設(shè)計的直接修改后用的。而要實現(xiàn)題目的要求還要對課本進行詳細的解讀(例如類具體是如何對各個函數(shù)進行控制的)。在分裝過程中我直接是對課本類似例題的修改而來。經(jīng)過此次練習(xí)不僅讓我對信知識有了了解也讓我經(jīng)以前模糊的概念逐漸弄清楚。</p><p><b> 9.致謝</b></p><p> 首先感謝xx老
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c++課程設(shè)計實驗報告---字符串操作
- c++課程設(shè)計---字符串類的設(shè)計
- C++課程設(shè)計實驗報告---字符串操作.doc
- c課程設(shè)計---字符串處理系統(tǒng)
- c++課程設(shè)計--字符串類的設(shè)計與實現(xiàn)
- c++字符串分詞
- c語言課程設(shè)計--字符串類
- 字符串處理系統(tǒng)課程設(shè)計
- c語言課程設(shè)計(字符串函數(shù)包)
- 課程設(shè)計--- 字符串排序
- 課程設(shè)計--字符串類
- 字符串處理2課程設(shè)計報告書
- 課程設(shè)計--字符串的操作
- cmd批處理替換字符串、截取字符串、擴充字符串
- 微機原理課程設(shè)計報告-字符串分類統(tǒng)計
- 課程設(shè)計--查找字符串中的指定字符
- 課程設(shè)計--實現(xiàn)字符串的多種操作
- 微機課程設(shè)計--字符串動畫加速減速
- 匯編課程設(shè)計-字符串查找與替換
- 微機原理課程設(shè)計---字符串動畫顯示
評論
0/150
提交評論