西安交大C++程序設計第六章作業_第1頁
西安交大C++程序設計第六章作業_第2頁
西安交大C++程序設計第六章作業_第3頁
西安交大C++程序設計第六章作業_第4頁
西安交大C++程序設計第六章作業_第5頁
已閱讀5頁,還剩7頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、西安交通大學實驗報告課程_計算機程序設計_實驗名稱_ 指針_第 1 頁 共 12 頁系 別_ _ 實 驗 日 期 2014 年 4月 12日專業班級_ _組別_ 實 驗 報 告 日 期 2014 年4 月 12日姓 名_ _學號_ _ 報 告 退 發 ( 訂正 、 重做 )同 組 人_ 教 師 審 批 簽 字 一、實驗目的 掌握指針的使用方法,學會使用指針來處理數組、字符串問題,體會使用指針的優點。二、實驗內容 (一)第一題:編寫程序,將某一個輸入的位數不定的正整數按照標準的三位分節的格式輸出,例如,當用戶輸入82668634時,程序輸出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+)/求得所輸入數n的位數mx=x/10;int *num=new intm;int i;for(i=0;im;i+)/分離出每一位數numi=n%10;n=n/10;cout=0;i-)/每隔三位加“,”輸出if(i+1)/3=(i+1)/3.0)cout,;coutnumi;coutendl;return 0;2.實驗結果:(二)第二題:用指針編寫一個程序,當輸入一個字符串后,要求不僅能夠統計其中字符的個數,還能分別指出其中的大、小寫字母、數字及其他字符的個

3、數。1.源程序代碼:#includeusing namespace std;int main()char u51;cout請輸入字符串: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+)/統計各種類型字符數目if(*(u+i)=0)a+;elseif(*(u+i)=a)b+;elseif(*(u+i)=A)c+;elsed+;cout字符串長度為:nendl;cout數字的個數為:aendl;cout小寫字母的個數為:bendl;cout大寫字母的個數為:cendl;cout其他字符的個數為:dend

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

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

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

7、編寫主函數對其進行測試。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.實驗結果:3、問題分析:為了驗證每次是將最大的元素放在最左邊,改了改函數使其輸出每輪結果: 六、第六題:編寫一個實現文章單詞統計功能的函數,要求:輸入一系列英文單詞(即帶空格的字符串),單詞間用空格隔開或逗號或句號隔開。請統計該字符串中單詞的個數,該函數的原型為:int statistic(char *string);其中參數string是文章字符串,該函數無返回值。編寫主函數,對上述函數進行測試。1源程序代碼:#includeusing namespace std;int stati

9、stic(char *string);int main()char string201;cout請輸入英文語句:;cin.get(string,200);cout其中的單詞數目為:;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實驗結果:3.問題分析: 設計思路:對每個字符與其后的一個字符進行比較(最后一個除外),如果某個位置滿足:該字符是字母而后邊的一個字符不是,則記錄一個單詞數;對于最后一個單詞,若結尾沒有非字母的字符則無法計數,所以再判斷最后一個是不是字母,如果是,那么給單詞數再加一,從而將最后一個單詞也算了進去。(七)第七題:編寫加密函數,將任意字符串的明文中奇數位置的字符放在一起,置逆;接著將偶數位置的字符放在一起,也置逆。最后將置逆的偶數字符串放在前部,將置逆的奇數字符串放在后部,連接形成密文。例如:明文為“I am possible”,密文是“lispm ebso aI”。要求編寫主函數加

11、以測試。加密函數原型如下:char *jiami(char *mingwen);1.源程序代碼:#includeusing namespace std;char *jiami(char *mingwen);int main()char string51;cout請輸入字符串:;cin.get(string,51);cout加密結果是:;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請輸入字符串:;cin.get(string,51);cout加密結果是:;coutjiami(string);coutendl;return 0;char *jiami(char *mingwen)in

溫馨提示

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

評論

0/150

提交評論