版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
課程資源課程資源PAGEPAGE1第第1章概念理解題計算機系統(tǒng)由哪兩大部分組成?什么是計算機主機和外設(shè)?常見外設(shè)有哪些?什么是系統(tǒng)軟件?什么是應(yīng)用軟件?舉例說明。編程工具軟件是干什么用的?舉例說明。舉一例說明程序的輸入與輸出功能。你知道的輸入與輸出設(shè)備有哪些?什么是計算機的內(nèi)存(RAM)?程序是在內(nèi)存中還是在外存中運行?為什么?你如果不進(jìn)行計算,有什么辦法把十進(jìn)制整數(shù)快速轉(zhuǎn)換成二進(jìn)制整數(shù)?內(nèi)存為什么需要編址?一個內(nèi)存單元占多大內(nèi)存?內(nèi)存編址是一維整數(shù)編號,還是二維或三維整數(shù)編號?64位系統(tǒng)最大可用多大內(nèi)存(GB)?給出計算公式和計算結(jié)果。你若不把數(shù)據(jù)存入存儲單元,那么存儲單元內(nèi)就是空的、沒任何數(shù)據(jù)嗎?什么是可執(zhí)行程序?Windows系統(tǒng)常見的可執(zhí)行程序是什么類型?一個可執(zhí)行程序在任何版本的操作系統(tǒng)上都能夠運行嗎?如何理解可執(zhí)行程序的入口?多個進(jìn)程空間彼此獨立嗎?如果內(nèi)存不足,程序可以運行嗎?你遇到過這種情況嗎?機器語言、匯編語言和高級語言各有何特點與用途?C++語言的目的和目標(biāo)是什么?如何學(xué)好它?第第2章概念理解題mainmain函數(shù)?一條語句的結(jié)束符是什么?多條語句可以寫在一行上嗎?一條語句可以換行寫嗎?注釋的作用是什么?為什么好的編程風(fēng)格要求寫出比較詳細(xì)的注釋?cin語句輸入多個數(shù)據(jù)時,怎么分隔它們?你知道有哪些分隔符?為什么編程前是設(shè)計過程?主要考慮哪四個方面問題?各方面主要考慮哪些問題?C++源程序(*.cpp)可以運行嗎?為什么?編譯器的作用是什么?不同編譯器編譯的機器代碼質(zhì)量有好壞之分嗎?連接器的作用是什么?源代碼的輸入(編輯VC++IDE中完成嗎?解決方案的作用是什么?解決方案和項目文件的擴(kuò)展名是什么?解決方案文件、項目文件、源程序文件、EXE文件各自在哪個文件夾里?什么是單元文件?它可以被單獨編譯嗎?本節(jié)三個例題各有幾個單元文件?什么是啟動項目?如何將一個項目設(shè)為啟動項目?VC++IDEF5鍵的功能是什么?它的快捷按鈕在哪?第第2章上機練習(xí)題格式要求C++上機練習(xí)題題目編號_(自取2-1輸出字符串,題目編號寫在項目名的最前面,與本書上機練習(xí)題的編號相同。上機注意鑒于VC++IDE非常龐雜,各種設(shè)置或選項很多,初學(xué)者在明白它們的含義之前,不要輕易修改,以免出現(xiàn)各種奇葩錯誤而影響使用,今后逐步熟悉了再逐一嘗試與探索。核心提示:編程序時思維要保持高度活躍,即使看別人的代碼,也要不斷地問自己為什么這樣做?這樣或那樣修改可以嗎?思考和修改的過程,就是不斷熟悉的過程。2-12-3作為練習(xí)項目,源程序正確敲入后按下面的步驟順序完成練習(xí)。說明:下面各步修改了的地方,在繼續(xù)下一步之前要改回去,以免太多錯誤而不知道錯在哪兒。(1)按鍵F5或單擊其快捷按鈕運行程序,首先保證程序能夠正確運行。(2)檢查解決方案、項目等各個文件夾,看看生成了一些什么文件。(3#ncudeoseam>(eor(。(4)同樣,注釋第二行usingnamespacestd語句,觀察錯誤信息。(5)(6)(7)注釋語句inta,b,max;有什么編譯錯誤?理解為什么。(8)注釋語句system("pause")后運行程序,會出現(xiàn)什么情況?(9)分別注釋兩個cout語句,運行結(jié)果如何?理解為什么。(10)交換intMAX(intx,inty)中的x和y,運行結(jié)果如何?理解為什么。(11)交換max=MAX(a,b)中的a和b,運行結(jié)果如何?理解為什么。(12)補充一種注釋方法:塊注/**/注釋兩個星號之間的代碼。塊注既可maxMAX(a,b)max=/*max=*/,運行結(jié)果如何?理解為什么。(13)把語句cin>>a>>b;分開寫成兩句,即cin>>a; cin>>b;運行結(jié)果正確嗎?若寫成cin>>b>>a;運行結(jié)果如何?理解為什么。第第3章概念理解題字符在計算機中如何存儲?字符為什么要進(jìn)行唯一編碼?ASCII編碼長度是多少位?最多對多少個字符進(jìn)行編碼?ASCII編碼包含哪些種類的字符?ASCII編碼有什么規(guī)律?C/C++命名規(guī)則是什么?系統(tǒng)保留字(關(guān)鍵字)是什么意思?數(shù)據(jù)為什么要分為不同的類型?1、2、4、8字節(jié)整型的類型名稱及整數(shù)范圍。3-8unsignedintint變量的取值范圍。根據(jù)存儲方式說明:為什么浮點型比整型能存儲大得多的數(shù)?定義整型變量時,如何確定選擇哪種整型?你用什么手段知道變量所占用的內(nèi)存大???類型和變量是什么關(guān)系?為什么定義變量時必須指定類型?定義變量的具體含義是什么?為什么必須先定義后使用?doubled1=d2=d3=0.5;有什么錯誤?怎么改正?什么是常變量?什么是變量初始化?為什么定義常變量通常要初始化?字面值(直接常量)52L、100u是什么意思?11640xFFFF的二進(jìn)制數(shù)。說明'\xA'0xA的含義。'\xA''0xA'正確嗎?021是什么進(jìn)制?舉例說明:用指數(shù)形式書寫浮點數(shù),有哪些錯誤寫法?何謂轉(zhuǎn)義符?它是一個還是兩個字符?常用的轉(zhuǎn)義符有哪些?2個及以上字符的就是字符串嗎?編譯器怎么識別字符串?字符'\0'ASCII編碼是多少(十進(jìn)制)?舉例說明:怎么寫一個字符串常量?字符串長度:等于包含的字符個數(shù)嗎?等于字符串占用的內(nèi)存字節(jié)數(shù)嗎?#define宏定義的符號常量是常變量嗎?為什么?不同類型的數(shù)據(jù)混合運算時,自動類型轉(zhuǎn)換的原則是什么?舉例說明:強制類型轉(zhuǎn)換的用途。自動或強制類型轉(zhuǎn)換都不會四舍五入,如果要求四舍五入該怎么做?“整型升級”是什么意思?它發(fā)生在什么情況下?C/C++允許浮點數(shù)進(jìn)行求余運算嗎?為什么?怎么區(qū)別表達(dá)式和語句?怎么把表達(dá)式變成語句?3-33表達(dá)式(int)5.8/2*3.4的值是多少?“++”和“--”可用于常量(直接常量或常變量)嗎?為什么?賦值或組合賦值運算符的左端,可以是表達(dá)式或常量嗎?賦值運算符的優(yōu)先級比算術(shù)運算符的優(yōu)先級高嗎?如何正確理解和使用組合賦值運算符?對于較長的表達(dá)式,哪些手段可以增強代碼的可讀性?“代碼可讀性好”有哪些優(yōu)點?“好的編程風(fēng)格”包括哪些方面?第第3章上機練習(xí)題說明:以后各章上機練習(xí)題省略#include、using、system等,請自行添加。3-1理解本章所有例題并上機練習(xí),回答提出的問題并說明理由。先理解程序并寫出運行結(jié)果,然后上機驗證。int main(){unsigned int m=10;int n=-100;if(m+n>0)cout<<">0"<<endl; //?elsecout<<"<=0"<<endl; //?return0;}先理解程序并寫出運行結(jié)果,然后上機驗證。int main(){int x;x=-2+3*5-6; cout<<x<<endl; //?x=2+3%5-6; cout<<x<<endl;//?x=4*7%(-10/2);cout<<x<<endl;//?x=4*7%-10/2; cout<<x<<endl;//?x=-4*7%-10/2;cout<<x<<endl;//?return0;}先理解程序并寫出運行結(jié)果,然后上機驗證。int main(){charch1='1',ch2='2';short n1,n2,n3;n1=ch1-'0';n2=n1*10+(ch2-'0');cout<<n2<<endl; //?cout<<sizeof(n1)<<endl; //?n3=n2+53;cout<<char(n3)<<endl; //?cout<<sizeof(n3)<<endl; //?cout<<sizeof(n2+53)<<endl;//?return0;}先理解程序并寫出運行結(jié)果,然后上機驗證。#define SUM1 10+20#define SUM2 (10+20)int main(){ inta,b,c,d,n=3;a=SUM1; cout<<a<<endl;//?b=a*n; cout<<b<<endl;//?c=SUM1*n;cout<<c<<endl;//?d=SUM2*n;cout<<d<<endl;//?return0;}9/5*℃+32。#define C 30intmain(){1cout<<9/5*C+32<<endl;//622doubleF1=9/5*C+32;3cout<<F1<<endl;//624cout<<C*9/5+32<<endl;//865doubleF2=C*9/5+32;6cout<<F2<<endl;//86return0;}回答提問:(1)為什么第1、2行計算結(jié)果錯誤?(2)4、5行計算結(jié)果正確?什么情況下會出錯(bug)?bug較難發(fā)現(xiàn),應(yīng)盡量避免。(3)修改程序:排除潛在bug。(x2x1)2y2y1)2,1,1和2,2。0~1000之間的正整數(shù),將該整數(shù)的各位數(shù)字相加(位和。891188210。提示:12891,然后1,以此類推。編寫一個程序,按下圖格式輸出由若干個字符組成的圖形。要求:圖形大小可變。第第4章概念理解題算法是什么?流程圖和偽碼描述算法各有何優(yōu)缺點?流程圖起止框、處理框、判定框、輸入/輸出框、流程線怎么畫?程序流程的基本控制結(jié)構(gòu)有哪三種?畫出其流程圖。關(guān)系運算符、邏輯運算符、算術(shù)運算符、賦值運算符的優(yōu)先級順序是什么?如果記不清或者怕記錯運算符優(yōu)先級,建議怎么做?程序正確性是最終追求嗎?如不是,那是什么?為什么通常不用==!=比較浮點數(shù)?如需要比較,該怎么做?time(0)函數(shù)的返回值是什么?x||y、x&&y、!x結(jié)果何時為真?何時為假?什么是邏輯表達(dá)式的短路性?switch(e)e有什么要求?e必須是常量嗎?casecase表達(dá)式的值可以相等嗎?4-13switchdefaultcase之后嗎?4-14breakswitch-case和嵌套循環(huán)中的作用各是什么?4-15continuebreak有何區(qū)別?4-16whilefor循環(huán)的流程圖,它們可以相互替換嗎?whilefor兩種無限循環(huán)(死循環(huán))寫法有哪些?C/C++gotogoto語句?二重循環(huán)的執(zhí)行過程是怎樣的?什么是真隨機數(shù)和偽隨機數(shù)?rand函數(shù)生成哪種隨機數(shù)?rand函數(shù)生成隨機數(shù)的數(shù)值范圍是什么?服從什么分布?srand函數(shù)的作用是什么?常用的種子是什么?為什么?rand函數(shù)如何生成特定區(qū)間的隨機整數(shù)和浮點數(shù)?第第4章上機練習(xí)題理解本章所有例題并上機練習(xí),回答提出的問題并說明理由。先理解程序并寫出運行結(jié)果,然后上機驗證。int main(){intx=1,y=1,z=0;if(z<0)if(y>0)x=3;elsex=5;cout<<x;if(z=y<0)x=3;elseif(y==0)x=5;elsex=7;cout<<"\t"<<x;cout<<"\t"<<z;}先理解程序并寫出運行結(jié)果,然后上機驗證。int main(){inta=1,b=3,c=5,d=4,x;if(a<b)if(c<d)x=1;elseif(a<c)if(b<d)x=2;elsex=3;elsex=6;elsex=7;cout<<x<<endl;}先理解程序并寫出運行結(jié)果,然后上機驗證。int main(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;case3:a++;b++;}cout<<a<<","<<b<<endl;}先理解程序并寫出運行結(jié)果,然后上機驗證。int main(){char ch='A'; int k=0;while(ch<'G'){switch(ch){case'A':k++; break;case'B':k--;case'C':k+=2; break;case'D':k%=2;ch++; continue;case'E':k*=10;break;default:k/=3;}ch++;cout<<ch<<",";k++;}cout<<k<<endl;}先理解程序并寫出運行結(jié)果,然后上機驗證。int main()PAGEPAGE10{intx,y;for(x=0,y=0; (y=5)&&(x<10); x++,y++);cout<<x++<<","<<y<<endl;}先理解程序并寫出運行結(jié)果,然后上機驗證。int main(){inti, j, k=19;while(i=k-1){k-=3;if(k%5==0) { i++; continue; }elseif(k<5) break;i++;}cout<<i<<","<<k<<endl;}先理解程序并寫出運行結(jié)果,然后上機驗證。int main(){inti, j;for(i=0; i<3; i+=2){for(j=4; j>=0; j--){if((j+i)%2){j--; cout<<j<<",";continue;}--i; j--;cout<<j<<",";}}}先理解程序并寫出運行結(jié)果,然后上機驗證。int main(){int num,sum=0,i=0,k;cout<<"輸入一個2位以上正整數(shù):"; //例如123456cin>>num;while(num>0){k=num%10; cout<<k;num/=10; i++;sum+=k;}cout<<"\t"<<i<<"\t"<<sum<<endl;}先理解程序并寫出運行結(jié)果,然后上機驗證。int main(){int i;for(i=1;i<=5;i++)switch(i%5){case0:cout<<"0";break;case1:cout<<"1";break;default:cout<<"\n";case2:cout<<"2";}}(和(b。(a)上機練習(xí)題4-11輸出格式(b)上機練習(xí)題4-11輸出格式整換零問題。11分、2分、5分硬幣,編程求解共有多少種不同的換法。123!+1920!,要求輸出各個階乘的值及表達(dá)式的值。4-14求分?jǐn)?shù)序列2/1,3/2,5/3,8/5,13/8,21/13,…前20項之和。a用迭代法求x 的近似值,求平方根的迭代公式為:a1 anxn12xnxnn1 n精度要求:相鄰兩次近似解之差的絕對值小于0.00001,即x x≤105n1 n[1001000]6個整數(shù),輸出每個整數(shù)及其各位數(shù)字之和。第第5章概念理解題模塊(函數(shù))功能劃分的原則是什么?主函數(shù)的設(shè)計原則是什么?什么是庫函數(shù)?它是哪來的?你可以用庫函數(shù)嗎?函數(shù)必須有返回值嗎?一個函數(shù)最多能返回幾個值?函數(shù)如何將其局部變量返回調(diào)用處?函數(shù)頭(首部)包含哪些要素?什么是函數(shù)原型?什么是函數(shù)聲明?什么是函數(shù)定義?聲明函數(shù)時形參的名稱及類型可以省略嗎?函數(shù)必須有形參嗎?函數(shù)的形參值從哪來?什么是函數(shù)參數(shù)的單向傳值?形參缺省值(默認(rèn)值)的作用是什么?可以給多個形參的一部分形參指定缺省值嗎?有什么要求?若存在函數(shù)聲明,那么可在定義函數(shù)時指定形參缺省值嗎?什么是引用(變量)?引用作為函數(shù)的形參有何特點?什么是常引用?形參在什么場合須用常引用?什么是變量的生存期(生命期)和作用域(可見性)?什么是全局變量?它何時誕生(創(chuàng)建)?何時消亡(被刪除)?全局變量無論定義在什么位置,都能被本單元文件的所有函數(shù)訪問嗎?嚴(yán)格限制使用全局變量的理由是什么?什么是變量的同名覆蓋?C/C++程序的內(nèi)存分區(qū)有哪幾個?各有何用途?extern全局變量用在什么場合?什么是靜態(tài)局部變量?它有什么特點?什么是靜態(tài)全局變量?它有什么特點?extern函數(shù)是什么意思?static函數(shù)又是什么意思?5-25說明函數(shù)的調(diào)用與系統(tǒng)棧變化的大致過程。inline函數(shù)?它如何提高函數(shù)調(diào)用的時空效率?inline函數(shù)的限制條件是什么?它用在什么場合?什么是遞歸函數(shù)?它有哪些缺點?遞歸函數(shù)可改寫為非遞歸函數(shù)嗎?為什么用函數(shù)重載?編譯器如何區(qū)分重載函數(shù)?重載函數(shù)的形參有默認(rèn)值時,為什么容易導(dǎo)致二義性錯誤?什么是函數(shù)模板?什么是模板函數(shù)?如何定義函數(shù)模板?如何聲明函數(shù)模板?聲明函數(shù)模板的泛型用什么關(guān)鍵字?泛型個數(shù)由什么確定?函數(shù)模板的泛型在什么時候、根據(jù)什么確定其具體類型?何謂函數(shù)模板的實例化?何謂函數(shù)模板的特化?函數(shù)模板可以重載嗎?編譯器如何區(qū)分它們?函數(shù)模板可與非函數(shù)模板(具體函數(shù))重載嗎?第第5章上機練習(xí)題理解本章所有例題并上機練習(xí),回答提出的問題并說明理由。先理解程序并寫出運行結(jié)果,然后上機驗證。intfunc(inta){intb=0, c=3;b++; c++;return(a+b+c);}int main(){inta=2,i;for(i=0; i<3; i++)cout<<func(a);cout<<endl;return0;}先理解程序并寫出運行結(jié)果,然后上機驗證。intfunc(intx,inty){return(y-x)*x;}int main(){inta=1,b=2,c=3,d;d=func(func(5,6),func(8,10));cout<<d<<endl;return0;}先理解程序并寫出運行結(jié)果,然后上機驗證。voidfunc(int);int main(){for(inti=1;i<4;i++)func(i);system("pause"); return0;}voidfunc(inti){staticintm=1;m+=i;cout<<m<<'\t';}先理解程序并寫出運行結(jié)果,然后上機驗證。intfunc(intn){int a;if(n==1) a=1;else a=n+func(n-1);returna;}int main(){int i=5;cout<<func(i)<<endl;return0;}先理解程序并寫出運行結(jié)果,然后上機驗證。longfunc(intn){intk;if(n<2) k=1;elsek=func(n-1)+func(n-2);return(k);}int main(){for(inti=0;i<7; i++)cout<<func(i)<<"";return0;}先理解程序并寫出運行結(jié)果,然后上機驗證。intfunc(int&x,inty){x++; y++;return x+y;}int main(){int a=2,b=3;int r=func(++a,b--);cout<<"a="<<a<<",b="<<b<<",r="<<r<<endl;return0;}編寫一個函數(shù),計算如下級數(shù):f(n)12 n2 3 n1要求:n從鍵盤輸入,對每一個n輸出相應(yīng)的f(n)值。5-9將上機練習(xí)題5-6改為非遞歸函數(shù)實現(xiàn)。5-10mySort3個數(shù)進(jìn)行排序(升序。(1)整數(shù)排序。規(guī)定函數(shù)頭(函數(shù)原型)如下:voidmySort(int&a,int&b,int&c)(2)浮點數(shù)排序,要求用函數(shù)重載實現(xiàn)mySort。(3)整數(shù)、浮點數(shù)、字符均可排序,要求用函數(shù)模版實現(xiàn)mySort。(4)用函數(shù)模版重載:分別對3個數(shù)(整數(shù)、浮點數(shù)、字符)進(jìn)行排序。第第6章概念理解題為什么用數(shù)組即數(shù)組的用途是什么?數(shù)組元素在內(nèi)存中的存儲有何特點?數(shù)組元素是如何實現(xiàn)隨機訪問的?隨機訪問有何優(yōu)點?數(shù)組元素所占內(nèi)存大小由什么確定?數(shù)組大小可以動態(tài)改變嗎?用什么方式訪問數(shù)組的元素?用什么辦法知道整個數(shù)組所占內(nèi)存空間的大?。慷啻芜\行同一個程序,數(shù)組元素的內(nèi)存地址相同嗎?數(shù)組元素也可以是數(shù)組嗎?若是,則對此有什么要求?編譯器是否檢查越界訪問數(shù)組元素?若越界,則是否有警告或錯誤?數(shù)組可以作為整體進(jìn)行存取嗎?比如賦值。定義數(shù)組時下標(biāo)可以是變量嗎?數(shù)組初始化是什么意思?若數(shù)組沒有初始化,其元素值是多少?什么是數(shù)組的完全初始化和部分初始化?定義二維數(shù)組時,行列下標(biāo)都必須是常量嗎?二維數(shù)組可用一維數(shù)組替代嗎?三維數(shù)組可以用二維數(shù)組替代嗎?二維數(shù)組在內(nèi)存中如何存儲?寫出二維與一維數(shù)組的下標(biāo)轉(zhuǎn)換式。二維數(shù)組的完全初始化和部分初始化怎么做?舉例說明。二維數(shù)組初始化時,行列下標(biāo)可以省略嗎?為什么?數(shù)組元素作為實參,相應(yīng)形參是一個數(shù)組還是一個變量?一維數(shù)組作為實參,形參怎么寫?實參怎么寫?二維數(shù)組轉(zhuǎn)一維數(shù)組進(jìn)行參數(shù)傳遞,有何重要意義?形參可以是數(shù)組元素的引用嗎?若是,該如何書寫?形參可以是數(shù)組的引用嗎?若是,該如何書寫?char數(shù)組?能夠存儲漢字及中文符號嗎?什么是字符串?char數(shù)組中都是字符串嗎?為什么?NULL是字符嗎?它是哪里定義的?其十進(jìn)制編碼值是多少?char數(shù)組能存儲多個字符串嗎?char數(shù)組能存儲整數(shù)嗎?若能,則存儲什么類型的整數(shù)?int數(shù)組能存儲字符嗎?若能,則存儲字符有何缺點?nchar數(shù)組。char數(shù)組初始化為空有哪幾種寫法?你喜歡哪種?>><<char數(shù)組所有元素嗎?C庫函數(shù)嗎?C++支持這些庫函數(shù)嗎?C庫函數(shù)嗎?C++支持這些庫函數(shù)嗎?string時需包含什么頭文件?Cstring類型嗎?6-36stringstring數(shù)組?string數(shù)組只能存儲一個字符串嗎?string對象的容量(可容納字符數(shù))是固定不變的嗎?string對象有哪些方式?為什么不止一種方式?string對象的運算符(操作符)有哪些?第第6章上機練習(xí)題理解本章所有例題并上機練習(xí),回答提出的問題并說明理由。先理解程序并寫出運行結(jié)果,然后上機驗證。int func(intn[],intk){for(inti=0;i<k;i++) n[i]=0;for(inti=0;i<k;i++)for(intj=0;j<k;j++)n[j]=n[i]+1;return n[--k];}int main(){constint k=3;int arr[k];cout<<func(arr,k)<<endl;return0;}先理解程序并寫出運行結(jié)果,然后上機驗證。intfunc(inta[]){for(inti=0;i<16;i++) a[i]=i+1;a[16]=0;int test=0,head;while(test!=a[test]){for(inti=1;i<3;i++){ head=test; test=a[test];}a[head]=a[test]; test=a[head];}returntest;}int main(){int arr[17];cout<<func(arr)<<endl;return0;}先理解程序并寫出運行結(jié)果,然后上機驗證。void func(inta[],int&n){for(inti=2;i<20;i++) a[i]=i;for(inti=2;i<10;i++){if(a[i]==0) continue;for(intj=i+1;j<=20;j++)if(a[j]%a[i]==0) a[j]=0;}for(inti=2;i<=20;i++)if(a[i])PAGEPAGE20{cout<<a[i]<<"";n++;if(n%4==0) cout<<endl;}}int main(){int arr[21],m=0;func(arr,m);return0;}先理解程序并寫出運行結(jié)果,然后上機驗證。voidfunc(chara[],intn){for(inti=0;i<n; i++) //為何用二重循環(huán)?for(intj=0;j<n; j++)if(i==0||i+j==n) a[i*n+j]='*';else a[i*n+j]='';for(inti=0;ini++) //改為一重循環(huán){for(intj=0;j<n;j++)cout<<a[i*n+j];cout<<endl;}}int main(){constintnum=5;charch[num][num];func(ch[0],num);return0;}先理解程序并寫出運行結(jié)果,然后上機驗證。voidfunc(inta[],intn){inti,j;for(i=0;i<n;i++){a[i*n+0]=1;a[i*n+i]=1;}for(i=2;i<n;i++)for(j=1j<i;j++) //為何用二重循環(huán)?a[i*n+j]=a[(i-1)*n+(j-1)]+a[(i-1)*n+jfor(i=0;ini++) //改用一重循環(huán){for(j=0;j<=i;j++) cout<<a[i*n+j];cout<<endl;}}int main(){#defineN5intarr[N][N];func(arr[0],N);return0;}先理解程序并寫出運行結(jié)果,然后上機驗證。int main(){charstr[]={"a1b2c3d4e5"};for(inti=0; str[i]!=0; i++)if(str[i]>='a'&&str[i]<='z')cout<<str[i]<<'';cout<<endl;return0;}先理解程序并寫出運行結(jié)果,然后上機驗證。voidfunc(chara[],constint&n //const的作用是什么?可省略嗎?{for(inti=0;i<n;i++)for(intj=0;j<n;j++){if(i<j) a[i*n+j]='#';elseif(i==j)a[i*n+j]='0';else a[i*n+j]='*';}for(inti=0;i<n*n;i++){cout<<a[i];if((i+1)%n==0) cout<<endl;}}#defineN6int main(){chararr[N][N];func(arr[0],N);return0;}編寫函數(shù),統(tǒng)計一個字符串中每種字符的個數(shù)(考慮重復(fù)情況。函數(shù)原型為:voidCount(constcharstr[], intcounts[])countsstr數(shù)組中每種字符的個數(shù),字母不區(qū)分大小寫。6-10voidftoa(doublef,charstr[])編寫函數(shù),返回一個二維數(shù)組某一列的元素和。函數(shù)原型為:doublesumColumn(constdouble arr[],intintcol,intcolIndex);ABC中,A、B、C均為二維數(shù)組。A,n+n=nm行n)A和B矩陣對應(yīng)元素相加,即:a00
a01
a0,n-1b00
b01
b0,n-1
a00b00
a01b01
a0,n-1b0,n1 a10 a22
a1,n1b10
b22 b1,n1
a10b10
a22b22
a1,n1b1,n1a a
a b
b b
a b
a b
a b m1,0
m1,1
m1,n1
m1,0
m1,1
m1,n1
m1,0
m1,0
m1,1
m1,1
m1,n1
m1,n1編寫函數(shù),對二維數(shù)組的全部元素實現(xiàn)隨機打亂位置(洗牌。函數(shù)原型為:void MatShuffle(intarr[],intintcol)編寫函數(shù),判定行列相同的兩個矩陣是否相等(對應(yīng)元素相等。函數(shù)原型為:boolMatEqual(constinta[],constintb[],intnum)(1)(01構(gòu)成(2)1。double數(shù)組排序,結(jié)果存于一個新的二維數(shù)組中。要求((編寫函數(shù),返回兩個字符串中的相同字符(位置可以不同。函數(shù)原型為:string CommonChars(conststring&str1,conststring&str2)編寫一個函數(shù),對一個字符串進(jìn)行排序。函數(shù)原型為:string strSort(stringstr)6-9Countstring實現(xiàn)。函數(shù)原型為:void Count(conststring&str,intcounts[],intsize)其中,size是counts的元素個數(shù)。(bool isPalindrome(conststringstr)第第7章概念理解題什么是內(nèi)存地址?為什么要對內(nèi)存編址?一個存儲單元占多少字節(jié)的內(nèi)存?什么是變量的值?什么是變量的地址?什么是變量的直接訪問?什么是變量的間接訪問?指針變量值是什么?指針變量名又是什么?為什么指針變量要有類型?在何時指定?空指針是什么意思?NULL值是多少?不同類型指針占用的內(nèi)存大小相同嗎?運算符*在指針定義和運算時有何差別?數(shù)組名是指向數(shù)組的指針,可以改變指向嗎?7-10intdouble數(shù)組的元素嗎?指針變量“±整數(shù)”表示什么意思?什么場合才有意義?char指針+3int指針+3有什么差別?什么是二級指針?如何定義二級指針?a是二維數(shù)組名,*a、**a、*(a+1)、**(a+1)分別是什么意思?arar++7-16&a[i][j]、*(a+i)+j、a[i][j]、*(*(a+i)+j)分別是什么意思?什么是行指針?如何定義和使用行指針?行指針有什么缺點?語句inta[3][4]; int*p=a[2];正確嗎?為什么?語句inta[3][4]; int**p=a;為什么錯?如何正確定義p指針?什么是指針數(shù)組?如何定義指針數(shù)組?如何給指針數(shù)組賦值?指針數(shù)組定義在寫法形式上與行指針定義有什么不同?如何訪問指針數(shù)組的元素?指針與引用作為函數(shù)形參,在寫法上、意義上、用法上有什么不同?函數(shù)參數(shù)傳遞本質(zhì)上分為單向傳值和引用傳遞,傳遞指針屬于哪種?什么是指針函數(shù)?什么是函數(shù)指針?返回函數(shù)內(nèi)局部數(shù)組(非動態(tài)分配)的名稱或指針,有什么問題?函數(shù)指針與函數(shù)名有何區(qū)別?如何定義函數(shù)指針并初始化?一個函數(shù)指針可以指向任何函數(shù)嗎?函數(shù)指針的用途是什么?mainmain函數(shù)傳遞實參?什么是內(nèi)存的動態(tài)分配與釋放?什么情況下使用動態(tài)分配?動態(tài)分配內(nèi)存有可能失敗嗎?如何知道?C語言怎么進(jìn)行動態(tài)分配內(nèi)存?動態(tài)分配內(nèi)存時為何必須指明類型?new一片內(nèi)存塊,其存儲單元是連續(xù)的嗎?new一片內(nèi)存塊,如何對其初始化?deletepdeletep有什么差別?請編程驗證。7-38new一個二維數(shù)組?new?有何優(yōu)點?new一塊內(nèi)存,該函數(shù)返回時會自動釋放嗎?void指針?void指針可以進(jìn)行加減運算嗎?void指針嗎?反之會如何?void指針有什么用途?指針賦值是什么意思?有什么前提要求?如何定義指針,使其指向可以改變、指向的數(shù)據(jù)不可改變?如何定義指針,使其指向不可改變、指向的數(shù)據(jù)可以改變?如何定義指針,使其指向和所指數(shù)據(jù)都不可改變?用什么手段可以禁止在函數(shù)內(nèi)修改形參數(shù)據(jù)(包括變量、指針、引用)?定義指針和引用時必須初始化嗎?什么是空指針?如何定義?有什么好處?什么是野指針?有何危害?如何產(chǎn)生的?第第7章上機練習(xí)題理解本章所有例題并上機練習(xí),回答提出的問題并說明理由。先理解程序并寫出運行結(jié)果,然后上機驗證。int*func(int*x, int*y){if(*x<*y)returnx;elsereturny;}int main(){inta=10,b=20;int*x,*y,*z;x=&a;y=&b;z=func(x,y);cout<<*x<<""<<*y<<""<<*z<<endl;}先理解程序并寫出運行結(jié)果,然后上機驗證。int main(){constchar*s[]={"123","456","7890"};constchar*p=*(s+1);cout<<*(++p)<<""<<s[0]<<endl;//int x[]={10,20,30,40,50,60};int*pp=x+2;cout<<pp[2]<<endl;}先理解程序并寫出運行結(jié)果,然后上機驗證。int main(){inta[][3]={{1,2,3},{4,5,6}};int(*p)[3];p=a;for(inti=0;i<3;i++){if(i<2)p[1][i]-=1;else p[1][i]=1;}cout<<a[0][1]+a[1][1]+a[1][2]<<endl;}先理解程序并寫出運行結(jié)果,然后上機驗證。編譯為func.exe,鍵入命令行運行程序:func.exe 12345(回車)intfunc(void);int main(intargc,char*argv[]){intnum;for(inti=0; *(*(argv+1)+i)!=0; i++)num=func();cout<<num*argc<<endl;}int func(void){staticint k=0;k+=1;returnk;}先理解程序并寫出運行結(jié)果,然后上機驗證。int main(){inta=10,*p1,**p2;p1=&a;p2=&p1;(*p1)++;cout<<**p2<<endl;}先理解程序并寫出運行結(jié)果,然后上機驗證。int main(){constchar*str="135";intk=0,a=0,b=0;while(str[k+1]){k++;if(k%2==0){a+=str[k]-'0';continue;}b+=str[k]-'0';a+=str[k]-'0';}cout<<k<<a<<b<<endl;}先理解程序并寫出運行結(jié)果,然后上機驗證。int main(){int a[]={1,2,3,4,5};int y=1,*p;p=&a[1];for(inti=0;i<3;i++)y+=*(p+i);cout<<y<<endl;}先理解程序并寫出運行結(jié)果,然后上機驗證。int main(){int a[5]={1,2,3,4,5};int *p,**pp;p=a;p++;pp=&p;cout<<*(p++)<<endl;cout<<**pp<<endl;}先理解程序并寫出運行結(jié)果,然后上機驗證。voidfunc(int**s, intp[][3]){ **s=p[1][1]; }int main(){inta[2][3]={{1,2,3},{4,5,6}},*p;p=newint;func(&p,a);cout<<*p<<endl;deletep;}int*func(constint*arr,intsize)函數(shù)返回一個新數(shù)組,大小為原數(shù)組arr的兩倍。0~9的個數(shù)。函數(shù)原型如下:int*count(char*str)有1009voidcount(string&s,intcounts[],intsize)s為字符串,counts數(shù)組的元素表示字符0~9的個數(shù),size為counts數(shù)組的元素個數(shù)。7-141~7s1ms2。要求用重載函數(shù)實現(xiàn),函數(shù)原型如下:voidStringCopy(char*s2,char*s1,intm)voidStringCopy(string&s2,string&s1,intm)編寫一個函數(shù),原型如下:int*invert(intarr[],intm,intn);narrarrm位置開始的所有元素逆序存入另一個數(shù)組(用指針返回。編寫一個函數(shù),原型如下:voidMatMultiply(int*A,int*B,int*C,intm,intn,intk);完成矩陣乘法C[m][k]=A[m][n]*B[n][k],結(jié)果存入C,矩陣乘法公式請查相關(guān)資料。第第8章概念理解題結(jié)構(gòu)類型的用途是什么?系統(tǒng)為何不預(yù)定義而要用戶定義?如何定義結(jié)構(gòu)類型?什么是結(jié)構(gòu)變量?它與結(jié)構(gòu)類型是什么關(guān)系?結(jié)構(gòu)的成員變量(簡稱成員)與結(jié)構(gòu)變量有何區(qū)別?PAGEPAGE30允許定義無名結(jié)構(gòu)類型嗎?有何用途?如何使用?結(jié)構(gòu)允許嵌套定義嗎?void指針嗎?結(jié)構(gòu)成員可以是結(jié)構(gòu)變量嗎?定義一個結(jié)構(gòu)類型,它占用內(nèi)存嗎?定義一個結(jié)構(gòu)變量,它占用內(nèi)存嗎?定義一個結(jié)構(gòu)變量,其全部成員都必須在內(nèi)存中創(chuàng)建嗎?結(jié)構(gòu)變量占用的內(nèi)存大小等于全部成員占用內(nèi)存之和嗎?什么是結(jié)構(gòu)成員的內(nèi)存對齊?為什么要內(nèi)存對齊?為了節(jié)省內(nèi)存,應(yīng)如何安排結(jié)構(gòu)成員的聲明順序?定義結(jié)構(gòu)類型時可以對成員變量賦值嗎?理由是什么?如何對結(jié)構(gòu)變量進(jìn)行初始化?訪問結(jié)構(gòu)成員有哪兩種方式?如何正確使用?同類型結(jié)構(gòu)變量可以相互賦值嗎?如何賦值?不同類型結(jié)構(gòu)變量可以相互賦值嗎?為什么?不同類型結(jié)構(gòu)變量的成員可以相互賦值嗎?有限制條件嗎?什么是結(jié)構(gòu)數(shù)組?數(shù)組元素是什么?元素類型必須相同嗎?結(jié)構(gòu)數(shù)組的每個元素在內(nèi)存中必須連續(xù)存儲嗎?如何定義結(jié)構(gòu)數(shù)組?一維和二維結(jié)構(gòu)數(shù)組如何初始化?如何訪問結(jié)構(gòu)數(shù)組元素的成員?舉例說明。何謂結(jié)構(gòu)指針?如何定義結(jié)構(gòu)指針?結(jié)構(gòu)指針與成員指針有何區(qū)別?可用結(jié)構(gòu)指針訪問其指針成員嗎?為什么?結(jié)構(gòu)數(shù)組的指針與結(jié)構(gòu)指針數(shù)組的區(qū)別是什么?如何定義和使用結(jié)構(gòu)數(shù)組的指針?如何定義和使用結(jié)構(gòu)指針數(shù)組?如何定義結(jié)構(gòu)變量的引用?可以定義數(shù)組的引用嗎?函數(shù)形參可以是結(jié)構(gòu)變量、結(jié)構(gòu)指針、結(jié)構(gòu)引用嗎?C++允許結(jié)構(gòu)成員為函數(shù)嗎?編程實驗。什么是共用體(聯(lián)合體)類型?如何定義?如何定義共用體變量?共用體變量所占內(nèi)存大小等于各成員所占內(nèi)存之和嗎?舉例說明共用體的用途。什么是枚舉類型?為什么用枚舉類型?如何定義枚舉類型?什么是枚舉常量?什么是枚舉常量值?枚舉常量值是什么類型?什么是枚舉變量?如何定義和使用枚舉變量?如何指定枚舉常量值?如果不指定枚舉常量值,缺省值是什么?指定枚舉常量值是在定義枚舉類型時?還是在定義枚舉變量時?可以只指定一部分枚舉常量值嗎?未指定的常量值是如何確定的?枚舉變量的取值有什么限制?有什么方法可突破該限制?typedef使用頻繁,其作用是什么?它與引用、宏的區(qū)別是什么?typedef有哪些用途?舉例說明。位運算符有哪幾種?運算規(guī)則是什么?位運算符改變其操作數(shù)嗎?如何改變操作數(shù)?位運算只能對整數(shù)進(jìn)行嗎?為什么?位存儲和位運算主要用在什么場合?什么是位域結(jié)構(gòu)?什么是位寬?如何定義位域結(jié)構(gòu)的變量?如何訪問位域變量的成員?位域結(jié)構(gòu)內(nèi)存對齊的規(guī)則是什么?意義是什么?如何節(jié)省內(nèi)存?為什么不要用位域結(jié)構(gòu)數(shù)據(jù)的正負(fù)進(jìn)行算法設(shè)計?第第8章上機練習(xí)題理解本章所有例題并上機練習(xí),回答提出的問題并說明理由。先理解程序并寫出運行結(jié)果,然后上機驗證。struct st{charname[10];int num;};void func(sts){st b={"FUNC1",};s=b;}void fun1(st&s){st b={"FUNC2",2222};s=b;}void fun1(st*s){stb={"FUNC3",3333};*s=b;}int main(){st a={"*****",1000},b,c;c=b=a;func(a);fun1(b);fun1(&c);cout<<<<","<<a.num<<endl;cout<<<<","<<b.num<<endl;cout<<<<","<<c.num<<endl;}先理解程序并寫出運行結(jié)果,然后上機驗證。struct Point{intx,y;};int func(Point*constp, intn //const的作用是什么?{Point *pt=p; //為什么定義pt?int k=0;for(inti=1; i<=n; i++)for(intj=1;j<=n;j++){*pt={ij //理解用法pt //何意?k //何意?}return k; //k何意?}int main(){int n=9;Point *pt,*p=newPoint[n]; //為何定義pt?int num=func(p,3); //返回什么?for(ptp; pt<pnum; pt+ //循環(huán)條件何意?cout<<pt->x<<","<<pt->y<<endl;delete []p;}先理解程序并寫出運行結(jié)果,然后上機驗證。struct NODE{int num;NODE *next; //注意指針類型};int main(){NODE*a,*b,*c;a=newNODE; //C++b=newNODE;c=(structNODE*)malloc(sizeof(structNODE)); //Ca->num=10;b->num=20;c->num=30;a->next=b;b->next=c;c->next=NULL;int sum=0;sum+=b->next->num;sum+=a->num;cout<<sum<<endl;deletea; deleteb;free(c);}先理解程序并寫出運行結(jié)果,然后上機驗證。struct NODE{int data;NODE*next;};int main(){NODE arr[5], *beginarr, *end=arr4; //end指向哪里?int i=0;while(begin!=end){begin->data=++i;begin++;end->data=i++;end--;}end->data=i;for(i=0;i<5;i++)cout<<arr[i].data<<"";cout<<endl;system("pause");}先理解程序并寫出運行結(jié)果,然后上機驗證。struct NODE //單鏈表2個域即數(shù)據(jù)域和指針域{int data; //數(shù)據(jù)域NODE*next //指針域,指向下一個結(jié)點};NODE*makeListintintnum //創(chuàng)建單鏈表{NODE *p,*tail,*head;headnewNODE; //new目的?p=tail=head;for(inti=0; i<num; i++){p=newNODE;p->data=arr[i];tail->next=p;tail=p;}tail->nextNULL //作用?return head; //head?}int main(){constintN=5;int array[N]={10,20,30,40,50};NODE*head,*p;head=makeList(array,N);phead->next //為什么不p=head;whilep //循環(huán)作用?{cout<<p->data<<"";p=p->next;}cout<<endl;}先理解程序并寫出運行結(jié)果,然后上機驗證。int main(){unsigneda=63,b;b=a&3;cout<<b<<endl;b&=7;cout<<b<<endl;b=a|3;cout<<b<<endl;b|=7;cout<<b<<endl;b=a^3;cout<<b<<endl;b^=7;cout<<b<<endl;}先理解程序并寫出運行結(jié)果,然后上機驗證。int main(){unsignedshort a=240,b,c,d;a=~a;cout<<a<<endl;a=~a;cout<<a<<endl;b=a>>2;cout<<b<<endl;c=~(~0<<4);cout<<c<<endl;d=b&c;cout<<d<<endl;}先理解程序并寫出運行結(jié)果,然后上機驗證。int main(){union{}x;
short i;char c[2];cout<<sizeof(short)<<endl;x.c[0]=10;x.c[1]=1;cout<<x.i<<endl;}先理解程序并寫出運行結(jié)果,然后上機驗證。union some{int k1,k2;struct{int x,z;}s;};int main(){some a;a.k1=100;a.k2=200;cout<<a.k1<<endl;a.s.x=40;a.s.y=50;a.s.z=60;cout<<a.k1<<endl;cout<<a.k2<<endl;cout<<sizeof(a.s)*8<<"bit"<<endl;cout<<sizeof(a)*8<<"bit"<<endl;}8-6,請作如下修改或補充:(1)寫一個輸出函數(shù),輸出各個data,使其不在main中輸出。函數(shù)原型為:void showNodeData(NODE*head)(2)寫一個逆序輸出函數(shù),以逆序輸出各個NODE的data值。函數(shù)原型為:void reverseShowNodeData(NODE*head)如果需要額外空間,請在本函數(shù)中動態(tài)分配及釋放。(3)寫一個計算均值函數(shù),計算各個data的均值并返回。函數(shù)原型為:double averageNodeData(NODE*head)(4)寫一個查找函數(shù),在各個data中查找某個值KEY。函數(shù)原型為:NODE*searchNodeData(NODE*head,intKEY)如果找到了,則返回該NODE地址并輸出data;如果沒找到,則返回NULL指針。(5)寫一個插入函數(shù),在第K個位置插入一個newNODE。函數(shù)原型為:bool InsertNode(NODE*head,intK,NODE*newNODE)mainnewNODEdata(data值自定。truedata以觀察插入成功。如果失敗則返回false。思考:插入成功與失敗的條件分別是什么?(6)寫一個刪除函數(shù),刪除第K個位置上的NODE。函數(shù)原型為:bool DelNode(NODE*head,intK)NODEtruedata以觀察刪除成功。false。(7)原題new分配的所有NODE內(nèi)存都沒有釋放,編一個釋放函數(shù),原型如下:void DelList(NODE*head)第第9章概念理解題編譯預(yù)處理簡稱預(yù)處理,預(yù)處理宏(簡稱宏)C/C++語句嗎?宏以#開頭,用分號表示行結(jié)束嗎?一個宏可以分開寫在多行上嗎?若可以,則該怎么寫?#include的作用是什么?#include文件名>與#include文件名"有什么區(qū)別?static全局變量或函數(shù),在包含它的單元文件中可以用嗎?#define的作用是什么?const常變量有什么區(qū)別?宏有效范圍是什么?定義在某函數(shù)內(nèi)的宏只能被該函數(shù)使用嗎?#undef的作用是什么?何謂帶參數(shù)宏?如何定義它?定義帶參數(shù)宏時,注意避免什么錯誤?內(nèi)聯(lián)函數(shù)與宏函數(shù)的主要區(qū)別是什么?inline函數(shù)哪個更好?為什么?何謂條件編譯?條件編譯有哪些用途?條件編譯的“常量條件表達(dá)式”中“常量”指什么?9-17#if有哪幾種變形?#else、#endif可以省略嗎?什么是文件包含?它如何導(dǎo)致重定義錯誤的?條件編譯如何避免文件包含時的重定義錯誤?第第9章上機練習(xí)題理解本章所有例題并上機練習(xí),回答提出的問題并說明理由。先理解程序并寫出運行結(jié)果,然后上機驗證。#define OUT(x) cout<<"int="<<(x)<<endl //C++//#define OUT(x) printf("int=%d\n",x) //Cint main(){intx=1,y=1,z=1;y+=z;x+=y;OUT(x<y?y:x);OUT(x<y?x++:y++);OUT(x);OUT(y);OUT(z+=x<y?x++:y++);OUT(y);}先理解程序并寫出運行結(jié)果,然后上機驗證。PAGEPAGE40#define#defineSHOW(x) cout<<"x="<<(int)(x)OUT(x) SHOW(x); cout<<"\n";//C++//C++//#defineSHOW(x) printf("x=%d",(int)(x))//C//#defineOUT(x) SHOW(x); printf("\n");//Cint main(){double x=5.6,y=-1.8;OUT(2*x);OUT(2.5*x);OUT(3*y*y);}先理解程序并寫出運行結(jié)果,然后上機驗證。#define X 3#define Y(a) ((X+1)*a)int main(){int x=4*(X+Y(5));cout<<"x="<<x<<endl; //C++//printf("x=%d\n",x); //C}先理解程序并寫出運行結(jié)果,然后上機驗證。#define OUTb(x)cout<<"b="<<x<<endl//C++#define OUT(x)cout<<f(x+1)<<endl//C++//#define OUT(x)printf("%d\n",f(x+1))//C//#define OUTb(x)printf("b=%d\n",x)//Cint main(){int b=5;#define b 2OUTb(b);#define f(x) b*(x)int y=2;OUT(y);#undef bOUTb(b);OUT(y);#define b -5OUT(y);}先理解程序并寫出運行結(jié)果,然后上機驗證。#define DEBUGint main(){int a=2,b=3,c=0;c+=10*a+20*b;#ifdef DEBUGcout<<"a="<<a<<",b="<<b<<endl; //C++//printf("a=%d,b=%d\n",a,b); //C#endifcout<<"c="<<c<<endl; //C++//printf("c=%d\n",c); //C}ISALPHAchch0。AREA(a,bc)a、b、c的三角形面積。計算公式為:s(s-a)(s-b)(s-s(s-a)(s-b)(s-c)ABS(a)a的絕對值。SUM(n)n項和。10章概念理解題面向過程程序設(shè)計的模塊指什么?面向?qū)ο蟪绦蛟O(shè)計的模塊指什么?面向過程程序設(shè)計的主要缺點是什么?面向?qū)ο蟪绦蛟O(shè)計的主要優(yōu)點是什么?怎么定義一個類?用什么關(guān)鍵字?什么是類體?類體后面有分號嗎?類必須有類名嗎?若不是,則無名類怎么使用?類中可以對成員變量賦值嗎?類與對象是什么關(guān)系?寫出三種訪問權(quán)限關(guān)鍵字,它們是什么含義?哪個關(guān)鍵字可省略?什么是類的外部訪問和內(nèi)部訪問?分別能訪問哪些成員?成員函數(shù)必須是公有的嗎?函數(shù)的聲明與定義(實現(xiàn))有什么區(qū)別?怎么聲明成員函數(shù)?inline聲明的就不是內(nèi)聯(lián)函數(shù)嗎?在類外定義成員函數(shù)與自由函數(shù)(非成員函數(shù))有什么區(qū)別?同類對象的數(shù)據(jù)成員是共享存儲還是獨立存儲?成員函數(shù)呢?thisthis指針?如何理解靜態(tài)成員變量的全局性(生命期)和局部性(作用域)?如何聲明、定義、初始化靜態(tài)成員變量?如何定義靜態(tài)成員函數(shù)?有何作用?能訪問非靜態(tài)成員變量嗎?this指針嗎?為什么?創(chuàng)建對象意味著對象在內(nèi)存中誕生,其所有數(shù)據(jù)成員都必須創(chuàng)建嗎?構(gòu)造函數(shù)是類的特殊成員函數(shù),如何識別構(gòu)造函數(shù)?構(gòu)造函數(shù)在什么時間、由誰調(diào)用?它的任務(wù)是什么?析構(gòu)函數(shù)是類的特殊成員函數(shù),如何識別析構(gòu)函數(shù)?析構(gòu)函數(shù)在什么時間、由誰調(diào)用?它的任務(wù)是什么?不編寫構(gòu)造或析構(gòu)函數(shù),系統(tǒng)會生成它們嗎?編寫了構(gòu)造或析構(gòu)函數(shù),系統(tǒng)會生成它們嗎?void嗎?構(gòu)造和析構(gòu)函數(shù)有形參嗎?允許有多個形參嗎?構(gòu)造和析構(gòu)函數(shù)允許重載嗎?若允許,則如何實現(xiàn)重載?public嗎?為什么?缺省構(gòu)造函數(shù)“缺省”了什么?它不能有形參嗎?類必須有缺省構(gòu)造函數(shù)嗎?類只能有一個缺省構(gòu)造函數(shù)嗎?缺省構(gòu)造函數(shù)只能由系統(tǒng)生成嗎?構(gòu)造函數(shù)參數(shù)初始化列表的作用是什么?非構(gòu)造函數(shù)有參數(shù)初始化列表嗎?對象的構(gòu)造與析構(gòu)的順序關(guān)系是什么?對象必須有名字嗎?若不是,怎么定義無名對象?用在什么場合?什么是對象數(shù)組?數(shù)組的每個元素都必須是同類對象嗎?定義(創(chuàng)建)對象數(shù)組時,調(diào)用多少次構(gòu)造函數(shù)?為什么?析構(gòu)(刪除)對象數(shù)組時,調(diào)用多少次析構(gòu)函數(shù)?為什么?舉例說明對象數(shù)組的初始化。什么是對象指針、對象指針數(shù)組、對象數(shù)組指針?成員變量可以是指針類型嗎?如何定義?如何定義成員函數(shù)指針?寫法上與非成員函數(shù)指針有何區(qū)別?舉例說明如何給成員函數(shù)指針賦值?如何用成員函數(shù)指針調(diào)用成員函數(shù)?對象、對象指針、引用對象、對象數(shù)組指針等可作為函數(shù)形參嗎?對象作形參時,實參對象是如何傳遞給形參對象的?有什么缺點?函數(shù)可以返回對象、對象指針、引用對象嗎?函數(shù)可以返回其局部對象嗎?函數(shù)可以返回其局部對象的引用嗎?為什么?對象可以動態(tài)創(chuàng)建嗎?用何種指針指向其申請的內(nèi)存區(qū)首地址?同類對象可以相互賦值嗎?若可以,則各個數(shù)據(jù)成員如何賦值?舉例說明為什么非同類對象不能相互賦值?對象淺拷貝是什么意思?淺拷貝在什么情況下會出錯?拷貝構(gòu)造函數(shù)也是構(gòu)造函數(shù),如何識別拷貝構(gòu)造函數(shù)?拷貝構(gòu)造函數(shù)的任務(wù)是什么?它在什么時間、由誰調(diào)用?(不編寫拷貝構(gòu)造函數(shù),系統(tǒng)會創(chuàng)建它并執(zhí)行淺拷貝嗎?在對象淺拷貝出錯時,應(yīng)該怎么做?什么是組合類?組合類有什么用途?組合類對象的構(gòu)造順序是什么?析構(gòu)順序呢?組合類對象初始化時,如何向內(nèi)嵌對象的構(gòu)造函數(shù)傳遞參數(shù)?什么是類的提前聲明?在什么情況下使用?類在提前聲明時知道該類的內(nèi)部結(jié)構(gòu)嗎?如何聲明常成員函數(shù)?有何作用?非成員函數(shù)也可如此聲明嗎?為什么說聲明常成員函數(shù)是一種好的編程風(fēng)格?什么是常對象?常對象的成員函數(shù)都是常成員函數(shù)?如何證明?常成員變量是否必須初始化?如何初始化?常對象是否必須初始化?const用于對象指針時,分為哪三種情況?各是什么含義?為什么拷貝構(gòu)造函數(shù)的形參應(yīng)該設(shè)計為常對象的引用?什么是友元函數(shù)?舉例說明如何聲明、定義和使用友元函數(shù)?是否可以把其他類的成員函數(shù)聲明為友元函數(shù)?友元函數(shù)有什么優(yōu)點和缺點?友元關(guān)系不具有對稱性和傳遞性是什么意思?什么是友元類?舉例說明如何聲明、定義和使用友元類?10章上機練習(xí)題理解本章所有例題并上機練習(xí),回答提出的問題并說明理由。閱讀理解下面的程序并回答提問,然后才上機驗證。1. classpixColor //rgb三個分量相加而成2. {private:int gb; //紅、綠、藍(lán)三個顏色分量public:staticintN;pixColor(intr=0,intg=0,intb=0):r(r),g(g),b(b){N++;}intGetR(void){returnr;}intGetG(void){returng;}intGetB(void){returnb;}friend class image;friend image picAdd(image&pic1,image&pic2);13.};14.class image //一幅圖像是一個矩形點陣15.{private:int h; //w(每行的點數(shù))h(每列的點數(shù))pixColor*data //RGB三個數(shù)值相加void initImage(void)20. {21. for(inti=0;i<w*h;i++)22. {23. data[i].r=i+10;24. data[i].g=i+20;25. data[i].b=i+30;26. }27.}public:image(intw=0,inth=0):w(w),h(h)30. {data=newpixColor[w*h];initImage();coutimage"<<endl;34. }35. image(constimage&obj):w(obj.w),h(obj.h)36. {data=newpixColor[w*h];coutimage"<<endl;for(inti=0;i<w*h;i++)40. {data->r=obj.data->r;data->g=obj.data->g;data->b=obj.data->b;44. }45. }46. ~image()47. {//delete[]data;coutimage"<<endl;50. }pixColor* GetData(void){returndata;}friend image picAdd(image&pic1,image&pic2);53.};54.image picAdd(image&pic1,image&pic2)55.{intw=pic1.w,h=pic1.h;imagepic(w,h);for(inti=0;i<w*h;i++)59. {pic.data[i].r=pic1.data[i].r+pic2.data[i].r;pic.data[i].g=pic1.data[i].g+pic2.data[i].g;pic.data[i].b=pic1.data[i].b+pic2.data[i].b;63. }64. return pic;65.}intpixColor::N=0;int main()68.{constintw=5,h=4;constintnum=3;image *arr[num];for(inti=0;i<num;i++)73. {//image pic(w,h); arr[i]=&pic;arr[i]=newimage(w,h);76. }77. cout<<arr[0]->GetData()->GetR()<<",";78. cout<<arr[0]->GetData()->GetG()<<",";cout<<arr[0]->GetData()->GetB()<<endl;cout<<pixColor::N<<endl;//imagepic;pic=picAdd(*(arr[0]),*(arr[1]));imagepic=picAdd(*(arr[0]),*(arr[1]));cout<<pixColor::N<<endl;cout<<pic.GetData()->GetR()<<",";cout<<pic.GetData()->GetG()<<",";cout<<pic.GetData()->GetB()<<endl;87.}在理解本程序的基礎(chǔ)上,回答下列提問:(1)本題輸出結(jié)果是什么?對每一行輸出,說明理由。(2)第7行:注釋本行有什么錯誤嗎?如果不給形參缺省值,有錯嗎?(3)第11行:注釋本行有什么錯誤嗎?說明理由。(4)第12行:注釋本行有什么錯誤嗎?說明理由。(5)第35~45行:注釋它們有什么錯誤嗎?說明理由。(6)第35行:注釋const有什么錯誤嗎?說明理由。(7)第39~44行:注釋它們有什么錯誤嗎?說明理由。(8)第48行:不注釋本行有什么錯誤嗎?說明理由。(9)第51、52行:注釋它們有什么錯誤嗎?說明理由。(10)第54行:去掉形參的“&”有什么錯誤嗎?結(jié)果有什么變化?說明理由。(11)第66行:解釋本行相關(guān)概念。(12)第74、75行:這兩行能實現(xiàn)同樣的功能嗎?輸出結(jié)果有什么區(qū)別?說明理由。(13)第81、82行:這兩行輸出結(jié)果有什么區(qū)別?說明理由。(14)new分配的內(nèi)存在程序運行期釋放了嗎?如何正確釋放?10-1Rectanglemain函數(shù)中編寫相應(yīng)測試代碼,輸出結(jié)果并檢查正確性。(1)增加2個私有成員變量,分別表示矩形左上角和右下角坐標(biāo)。(2)增加2個私有成員變量,分別表示矩形的對角線長度和周長。(3)增加一個靜態(tài)成員變量COUNTER,記錄創(chuàng)建的矩形對象的個數(shù)。(4)增加2個私有成員函數(shù),分別計算矩形的對角線長度和周長。(5)編寫Get系列函數(shù),使外界能獲得各私有數(shù)據(jù)成員值。(6)編寫Set系列函數(shù),使外界能設(shè)置各私有數(shù)據(jù)成員值。(7)lengthwidth1(0,(1,。(8)le
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年農(nóng)行個人貸款合同模板2篇
- 二零二五年度體育場館租賃與賽事場地標(biāo)識系統(tǒng)建設(shè)合同
- 2025年度綠色生態(tài)農(nóng)業(yè)園建設(shè)與管理合同4篇
- 二零二五年度個性化廚具安裝與整體廚房設(shè)計合同3篇
- 二零二五年度溫泉度假村大理石地暖鋪設(shè)合同4篇
- 二零二五年度存量房買賣合同合同糾紛處理流程與期限(2024版)4篇
- 2025年度農(nóng)業(yè)耕地租賃合同環(huán)境保護(hù)與修復(fù)規(guī)范4篇
- 2025年度臨時用工勞動關(guān)系解除合同3篇
- 2025年度個人旅游服務(wù)合同標(biāo)準(zhǔn)范本3篇
- 二零二五版木材廠土地租賃合同與林業(yè)科技創(chuàng)新合作4篇
- 2025年度部隊食堂食材采購與質(zhì)量追溯服務(wù)合同3篇
- 消防產(chǎn)品目錄(2025年修訂本)
- 地方性分異規(guī)律下的植被演替課件高三地理二輪專題復(fù)習(xí)
- 繪本 課件教學(xué)課件
- 光伏項目風(fēng)險控制與安全方案
- 9.2提高防護(hù)能力教學(xué)設(shè)計 2024-2025學(xué)年統(tǒng)編版道德與法治七年級上冊
- 催收培訓(xùn)制度
- 牧場物語-礦石鎮(zhèn)的伙伴們-完全攻略
- ISO 22003-1:2022《食品安全-第 1 部分:食品安全管理體系 審核與認(rèn)證機構(gòu)要求》中文版(機翻)
- 農(nóng)業(yè)生產(chǎn)質(zhì)量安全風(fēng)險評估與監(jiān)控方案
- 人教版六年級上冊解方程練習(xí)300道及答案
評論
0/150
提交評論