參考答案-作業(yè)━━第 4 章(3)━━指針與函數、指針與堆內存_第1頁
參考答案-作業(yè)━━第 4 章(3)━━指針與函數、指針與堆內存_第2頁
免費預覽已結束,剩余2頁可下載查看

下載本文檔

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

文檔簡介

1、 4/4參考答案_作業(yè)第 4 章(3)指針與函數、指針與堆內存 參考答案指針與函數、指針與堆內存 【學習要點】 1掌握指針作為函數參數的作用和使用方法。 2掌握函數參數的傳遞方式值傳遞、引用傳遞、地址傳遞 3掌握指針作為函數返回值的作用和使用方法。 4掌握指向函數的指針變量的定義和使用方法。 5掌握C+的四個內存區(qū)域。 6掌握堆內存和動態(tài)存儲分配。 7掌握new 與delete 運算符的使用方法。 8掌握常指針變量、指向常量的指針的定義和使用方法。 9掌握類型標識符的定義和使用方法。 【例題分析】 1為指針變量p賦初值,下面語句中不正確的是_。 Aint *p=0; Bfloat *p=(fl

2、oat*)50; Cint *p=new 50; Dfloat *p=new float50; 【答案】C 【解析】答案A給指針p 賦0值是正確的;答案B將整數50的單元類型強制轉換為實型指針也是可以的;答案D 將指針p 指向在堆區(qū)上申請的具有50個元素的實型數組也是可以的;答案C錯誤,因為new運算符的運算對象是數據類型,而不能是常量。 2完善程序題,下面函數check( ) 的功能是檢查所給定的字符串中左括號(?和右括號)?的使用是否合法。判斷條件是:左括號(?的個數應與右括號)?的個數相同;右括號的個數在任何時候均不得超過左括號(?的個數;若字符串同時滿足上述兩個條件,函數返回值1,否則

3、返回值0。 #include int check ( char *s ) int lt=0, rt=0; while() if ( *s=( ) lt+; else if ( *s=?)? ) rt+; /A if ( ) return 0; (); return (); void main() char a 30 = “123+(3+5)/(6*(3+2-8)”; cout lt 【答案】s+ 【答案】lt=rt 【解析】 對于指針s所指向的字符串,while循環(huán)要將其中的每個字符都檢查一次,一直檢查到字符串的結束符0?為止。while(*s)或while(*s!=?0?)的意思是只要指針s

4、所指向的字符不是字符串的結束符,就繼續(xù)循環(huán)。 函數中用變量lt表示左括號“(”的個數,用變量rt表示右括號“)”的個數。在檢查時考慮每個字符有三種可能:左括號、右括號和其他字符。在A行處,rt+表示又增加了一個右括號,此時應檢查右括號的數量是否多于左括號的數量,再結合題目要求中關于返回0指的含義,將第處填為:rtlt。 到了第處,就該換下一個字符了,使指針s要指向下一個字符,將第處填為:s+。 到了第處,左、右括號的數量已經統(tǒng)計完畢,而且右括號的數目也不比左括號的數量多,此時如果左括號多于右括號,就應該返回0,如果二者相等,就應該返回1。綜合這兩種可能,將第處填為:lt=rt。 3下面程序的運

5、行結果是_。 #include int take ( int *a, int *b, int n, void (*g) ( int*, int ) ) int i=0, j=n-1, s=0; while ( i void swap1 ( int p1 , int p2 ) int temp = p1 ; p1 = p2 ; p2 = temp ; void swap2 ( int p1 = p2 ; p2 = temp ; void swap3 ( int *p1 , int *p2 ) int temp = *p1 ; *p1 = *p2 ; *p2 = temp ; void swap4

6、 ( int *p1 , int *p2 ) int *temp = p1 ; p1 = p2 ; p2 = temp ; void main ( ) int a = 3 , b = 6 ; swap1( ) ; cout =0 /將該數字字符轉換為一位數字 while ( (c=*p1+) /將這一串連續(xù)的數字字符轉換為整數 p n = m ; /將這個轉換好的整數存入數組 ; /提取出的整數個數增加1 return n ; void main( ) int i , n , a 20 ; char p 100 ; cout void invert ( char *a , int x , in

7、t y ) char t, *p, *q ; p = a+x ; q = a+y ; while ( p void main() static float score 4 = 60,70,80,90 , 50,89,67,88 , 34,78,90,66 , 80,90,99,70 ; float * seek( float (*pointer) 4 ) ; float *p ; int i, j ; for ( i=0; i char * stringcat ( char *s1, const char *s2 ) char *p = s1 ; while ( * s1 + ) ; s1 -

8、 ; while ( * s1 + = * s2 + ) ; return p ; void main ( ) char s1 20 , s2 20 ; cout int stringlen ( const char *s ) int num = 0 ; while ( * s+ ) num+; return num ; void main ( ) char s 100 ; cout char * reverse ( char *s ) char *p1 , *p2 , temp ; p1= p2 = s ; while ( *p2+ ) ; p2 -= 2 ; while ( p1 char * stringcpy ( char *s1, const char *s2 ) char *p = s1 ; while ( * s1 + = * s2 + ) ; return p ; void main ( ) char s1 20 , s2 20 ; cout “請輸入一行字符:” ; cin.getline( s1 , 2

溫馨提示

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

評論

0/150

提交評論