西安交大C++程序設(shè)計(jì)第六章作業(yè)_第1頁
西安交大C++程序設(shè)計(jì)第六章作業(yè)_第2頁
西安交大C++程序設(shè)計(jì)第六章作業(yè)_第3頁
西安交大C++程序設(shè)計(jì)第六章作業(yè)_第4頁
西安交大C++程序設(shè)計(jì)第六章作業(yè)_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、西安交通大學(xué)實(shí)驗(yàn)報(bào)告課程_計(jì)算機(jī)程序設(shè)計(jì)_實(shí)驗(yàn)名稱_ 指針_第 1 頁 共 12 頁系 別_ _ 實(shí) 驗(yàn) 日 期 2014 年 4月 12日專業(yè)班級(jí)_ _組別_ 實(shí) 驗(yàn) 報(bào) 告 日 期 2014 年4 月 12日姓 名_ _學(xué)號(hào)_ _ 報(bào) 告 退 發(fā) ( 訂正 、 重做 )同 組 人_ 教 師 審 批 簽 字 一、實(shí)驗(yàn)?zāi)康?掌握指針的使用方法,學(xué)會(huì)使用指針來處理數(shù)組、字符串問題,體會(huì)使用指針的優(yōu)點(diǎn)。二、實(shí)驗(yàn)內(nèi)容 (一)第一題:編寫程序,將某一個(gè)輸入的位數(shù)不定的正整數(shù)按照標(biāo)準(zhǔn)的三位分節(jié)的格式輸出,例如,當(dāng)用戶輸入82668634時(shí),程序輸出82,668,634.1.源程序代碼: #include

2、using namespace std;int main()int n;coutn;int m,x;for(m=0,x=n;x=1;m+)/求得所輸入數(shù)n的位數(shù)mx=x/10;int *num=new intm;int i;for(i=0;im;i+)/分離出每一位數(shù)numi=n%10;n=n/10;cout=0;i-)/每隔三位加“,”輸出if(i+1)/3=(i+1)/3.0)cout,;coutnumi;coutendl;return 0;2.實(shí)驗(yàn)結(jié)果:(二)第二題:用指針編寫一個(gè)程序,當(dāng)輸入一個(gè)字符串后,要求不僅能夠統(tǒng)計(jì)其中字符的個(gè)數(shù),還能分別指出其中的大、小寫字母、數(shù)字及其他字符的個(gè)

3、數(shù)。1.源程序代碼:#includeusing namespace std;int main()char u51;cout請(qǐng)輸入字符串:n;cin.get(u,50);int i;int a=0,b=0,c=0,d=0;int n=strlen(u);for(i=0;in;i+)/統(tǒng)計(jì)各種類型字符數(shù)目if(*(u+i)=0)a+;elseif(*(u+i)=a)b+;elseif(*(u+i)=A)c+;elsed+;cout字符串長度為:nendl;cout數(shù)字的個(gè)數(shù)為:aendl;cout小寫字母的個(gè)數(shù)為:bendl;cout大寫字母的個(gè)數(shù)為:cendl;cout其他字符的個(gè)數(shù)為:dend

4、l;return 0;2.實(shí)驗(yàn)結(jié)果: (三)第三題:編寫一個(gè)函數(shù),用于將一個(gè)字符串轉(zhuǎn)換成整型數(shù)值。其原型為:int atoi(char *string);其中參數(shù)string為待轉(zhuǎn)換的字符串(包括正負(fù)號(hào)和數(shù)字),返回值為轉(zhuǎn)換結(jié)果。1.源程序代碼: #includeusing namespace std;int atoi(char *string);int main()char string13;coutstring;cout結(jié)果為:atoi(string)0;i-)numi-1=stringi-0;/分離各位數(shù)字并存儲(chǔ)sum=sum+x*(numi-1);/累加,最終求得和即為原數(shù)x=x*10

5、;if(string0=-)/若輸入含有負(fù)號(hào)則輸出負(fù)數(shù)sum=-1*sum;return sum;2.實(shí)驗(yàn)結(jié)果:3.問題分析: 不足之處:對(duì)于正數(shù)必須輸入正號(hào),這一點(diǎn)不好。理論上應(yīng)該在開頭加一個(gè)判斷,若首字符不是負(fù)號(hào),則將從一位字符開始處理;若是,則從第二位開始處理但是這樣的不足就是需要執(zhí)行大量的步驟,明顯加大了程序的運(yùn)行時(shí)間。(四)第四題:編寫一個(gè)函數(shù),用于生成一個(gè)空白字符串,其原型為:char *mystrspc(char *string,int n);其中參數(shù)string為字符串,n為空白字符串的長度(空格符的個(gè)數(shù))。返回值為指向string的指針。1.源程序代碼:#includeusi

6、ng namespace std;char *mystrspc(char *string,int n);int main()int n;coutn;char *string=new charn+1;cout結(jié)果為:“;coutmystrspc(string,n)”endl;char *mystrspc(char *string,int n)int i;for(i=0;in;i+)stringi= ;stringi=0;return string;2.實(shí)驗(yàn)結(jié)果:五、第五題:修改選擇排序函數(shù),使每輪挑選最大元素,函數(shù)原型如下:void selectsort( int *array, int n);

7、編寫主函數(shù)對(duì)其進(jìn)行測試。1.源程序代碼:#include using namespace std;void selectsort( int *array, int n)for(int i=n-1;i=0;i-)int k=i; for(int j=i-1;j=0;j-)if(*(array+j)*(array+k)k=j; if(k!=i) int tmp=*(array+i);*(array+i)=*(array+k);*(array+k)=tmp;int main()int array6=2,7,2,2,3,1;selectsort(array,6);coutThe result is:e

8、ndl;for(int i=0;i6;i+) coutarrayi ;coutendl;return 0;2.實(shí)驗(yàn)結(jié)果:3、問題分析:為了驗(yàn)證每次是將最大的元素放在最左邊,改了改函數(shù)使其輸出每輪結(jié)果: 六、第六題:編寫一個(gè)實(shí)現(xiàn)文章單詞統(tǒng)計(jì)功能的函數(shù),要求:輸入一系列英文單詞(即帶空格的字符串),單詞間用空格隔開或逗號(hào)或句號(hào)隔開。請(qǐng)統(tǒng)計(jì)該字符串中單詞的個(gè)數(shù),該函數(shù)的原型為:int statistic(char *string);其中參數(shù)string是文章字符串,該函數(shù)無返回值。編寫主函數(shù),對(duì)上述函數(shù)進(jìn)行測試。1源程序代碼:#includeusing namespace std;int stati

9、stic(char *string);int main()char string201;cout請(qǐng)輸入英文語句:;cin.get(string,200);cout其中的單詞數(shù)目為:;coutstatistic(string)endl;return 0;int statistic(char *string)int n=strlen(string);int i,s=0;for(i=0;in-1;i+)char a=*(string+i),b=*(string+i+1);if(a=a)|(a=A)&(bz)&(bZ)s+;char a=*(string+i);if(a=a)|(a=A)s+;retu

10、rn s; 2實(shí)驗(yàn)結(jié)果:3.問題分析: 設(shè)計(jì)思路:對(duì)每個(gè)字符與其后的一個(gè)字符進(jìn)行比較(最后一個(gè)除外),如果某個(gè)位置滿足:該字符是字母而后邊的一個(gè)字符不是,則記錄一個(gè)單詞數(shù);對(duì)于最后一個(gè)單詞,若結(jié)尾沒有非字母的字符則無法計(jì)數(shù),所以再判斷最后一個(gè)是不是字母,如果是,那么給單詞數(shù)再加一,從而將最后一個(gè)單詞也算了進(jìn)去。(七)第七題:編寫加密函數(shù),將任意字符串的明文中奇數(shù)位置的字符放在一起,置逆;接著將偶數(shù)位置的字符放在一起,也置逆。最后將置逆的偶數(shù)字符串放在前部,將置逆的奇數(shù)字符串放在后部,連接形成密文。例如:明文為“I am possible”,密文是“l(fā)ispm ebso aI”。要求編寫主函數(shù)加

11、以測試。加密函數(shù)原型如下:char *jiami(char *mingwen);1.源程序代碼:#includeusing namespace std;char *jiami(char *mingwen);int main()char string51;cout請(qǐng)輸入字符串:;cin.get(string,51);cout加密結(jié)果是:;jiami(string);coutendl;return 0;char *jiami(char *mingwen)int n=strlen(mingwen);int a=(n+1)/2,b=n/2;char *odd=new chara+1;char *eve

12、n=new charb+1;int i;for(i=0;ia;i+)*(odd+a-i-1)=*(mingwen+2*i);*(odd+a)=0;for(i=0;ib;i+)*(even+b-i-1)=*(mingwen+2*i+1);*(even+b)=0;coutevenodd;return 0;改編版:#includeusing namespace std;char *jiami(char *mingwen);int main()char string51;cout請(qǐng)輸入字符串:;cin.get(string,51);cout加密結(jié)果是:;coutjiami(string);coutendl;return 0;char *jiami(char *mingwen)in

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論