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

下載本文檔

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

文檔簡介

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

2、oat*)50; Cint *p=new 50; Dfloat *p=new float50; 【答案】C 【解析】答案A給指針p 賦0值是正確的;答案B將整數(shù)50的單元類型強(qiáng)制轉(zhuǎn)換為實(shí)型指針也是可以的;答案D 將指針p 指向在堆區(qū)上申請的具有50個(gè)元素的實(shí)型數(shù)組也是可以的;答案C錯(cuò)誤,因?yàn)閚ew運(yùn)算符的運(yùn)算對象是數(shù)據(jù)類型,而不能是常量。 2完善程序題,下面函數(shù)check( ) 的功能是檢查所給定的字符串中左括號(hào)(?和右括號(hào))?的使用是否合法。判斷條件是:左括號(hào)(?的個(gè)數(shù)應(yīng)與右括號(hào))?的個(gè)數(shù)相同;右括號(hào)的個(gè)數(shù)在任何時(shí)候均不得超過左括號(hào)(?的個(gè)數(shù);若字符串同時(shí)滿足上述兩個(gè)條件,函數(shù)返回值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)要將其中的每個(gè)字符都檢查一次,一直檢查到字符串的結(jié)束符0?為止。while(*s)或while(*s!=?0?)的意思是只要指針s

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

5、行結(jié)果是_。 #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 /將該數(shù)字字符轉(zhuǎn)換為一位數(shù)字 while ( (c=*p1+) /將這一串連續(xù)的數(shù)字字符轉(zhuǎn)換為整數(shù) p n = m ; /將這個(gè)轉(zhuǎn)換好的整數(shù)存入數(shù)組 ; /提取出的整數(shù)個(gè)數(shù)增加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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論