已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
C+典型概念與習(xí)題一、基本概念1. 在類體內(nèi)定義的成員函數(shù)默認(rèn)為內(nèi)聯(lián)函數(shù),在類體外定義的成員函數(shù)只有用inline修飾的才可能成為內(nèi)聯(lián)函數(shù)。類體外定義類的成員函數(shù)的形式。2. 當(dāng)同名的全局變量和局部變量相沖突時,可以用作用域運(yùn)算符來訪問全局變量3. 類的靜態(tài)成員是該類的所有對象所共享的成員,類可以沒有靜態(tài)成員。4. 如果沒有顯式定義構(gòu)造函數(shù),系統(tǒng)將隱式定義缺省的構(gòu)造函數(shù)及拷貝構(gòu)造函數(shù);5. 如果只顯式定義了拷貝構(gòu)造函數(shù),系統(tǒng)仍然不隱式定義缺省的構(gòu)造函數(shù);6. 如果顯式定義了構(gòu)造函數(shù)但沒有顯式定義拷貝構(gòu)造函數(shù),系統(tǒng)將隱式定義拷貝構(gòu)造函數(shù)。7. 通過指針訪問對象成員的形式8. 逗號運(yùn)算符的使用(優(yōu)先級)9. 正確理解while、dowhile循環(huán)10. 正確理解break,continue語句的功能11. 正確理解類成員的訪問特性12. 理解運(yùn)算符重載的概念及特點(diǎn)(哪些特性能改變與不能改變)13. 復(fù)雜邏輯表達(dá)式的取值(結(jié)果是什么?與關(guān)系運(yùn)算、賦值運(yùn)算一起的混合運(yùn)算、邏輯表達(dá)式優(yōu)化)14. 正確理解數(shù)組名作為函數(shù)的參數(shù)的意義與形式15. 正確理解友元函數(shù)與類的成員函數(shù)的區(qū)別16. 類和對象的概念與關(guān)系17. 理解類的構(gòu)造函數(shù)和析構(gòu)函數(shù)是否能重載二、閱讀理解(分析程序輸出)1.程序 #includeusing namespace std;void fun(int a4, int n) for(int i=0; in; i+) for(int j=0; j4; j+) if(aij0) aij=-1; else if (aij5) aij*=2; else if(aij10) aij-=5; else aij=10;int main()int d34=-5,-4,-3,-2,-1,0,1,2,3,4,5,6, s1=0, s2=0; fun(d,3);for(int i=0; i3; i+) for(int j=0; j4; j+) s1+=dij; s2*=dij; couts1=s1endl; couts2=s2endl; return 0;2.程序 #includeusing namespace std;class Aint a,b;public:A() a=0; b=0; void set(int t) a=t; b=2*t; friend void show(A *);void show(A *t) couta+t-b)endl; int main() int t=1;A a15, *pa=a1;for(int i=1;iset(t+=1); pa=a1; while(pa=&a14) show(pa); pa+; return 0;3.程序 #includeusing namespace std;void fun(int *p,int n) if(n=0) *p=0; else if(n=1) *p=1; else *p=*(p-1)+*(p-2);int main()int i=0,a10;while(i10)fun(a+i,i);i+;i=0; while(i10) coutai+endl; return 0;4.程序 #includeusing namespace std;class Aprotected: int a;public:A(int t=5) a=t; couta=aendl; int geta() return a; ;class B: public AA t; int b;public:B(int m):t(m) b=2*m; coutB()endl; void print () cout(a+b+t.geta()endl; ;int main()B b1(2);b1.print();return 0;5程序#include#include using namespace std;void str(char *st1, char *st2, int n=-1) char *p1=st1, *p2=st2;while(*p1+); p1-=2;if(n=st2) *p1+=*p2-; *p2=0;int main()char s140=abcde, s2=12345, s3=ABCDE;str(s1,s2);couts1endl;str(s1,s3,3);couts1endl; return 0; 6. 程序 #includeusing namespace std;class A public:int a;A(int t=5) a=t; void print() coutaendl; ;class B:virtual public A public: int b;B(int c):A(c) b= 2*c; void print( ) cout b+2*aendl; ;class C:virtual public A public: int c;C(int d):A(d) c= 3*d; void print( ) cout 2*a+cendl; ;class D:public B,public Cpublic:D(int d):B(d+2),C(d+1) void print( ) cout(a+b+c)endl; ;int main()D d1(2);d1.print(); d1.A:print(); d1.B:print(); d1.C:print(); return 0; 7.程序 #includeusing namespace std;void f(int *t1,int &t2,int t3) (*t1)+; t2+=2; t3+=3; int main(void) int a23=0, *p, i=0, s1=0, s2=0; p=&a00; for(i=0; i&a00) *p+=*(p-1); p+; f(p-2, *(p-3), *(p-4); for(p=a0,i=0; i3; i+) s1+=*p+; for(p=a1,i=0; i3; i+) s2+=*p+; couts1=s1endl; couts2=s2endl; return 0; 8. 程序 #includeusing namespace std;void f (int n,int &k, int *m) static int a=0;int b=0; if (n=1|n=2) k=1; *m=1; else f(n-1, a, &b);k+; (*m)+=2;couta+bn; int main(void) int x=0,y=0;f(4,x, &y);coutx=xty=yn; return 0; 9. 程序 #includeusing namespace std;class Base protected:int a;public:Base(int t=0) a=t; virtual int fun1()= 0; int fun2( ) return 0; ;class Add:public Base int d;public: Add(int t1, int t2):Base(t1),d(t2) int fun1( ) return a+d; int fun2( ) return 2*(a+d); ;class Multi:public Base int d;public:Multi(int t1, int t2):Base(t1),d(t2) int fun1( ) return a*d; int fun2( ) return (2*a*d); ;void fun(Base *p) coutR1 = fun1()endl;coutR2 = fun2()999)的個位上的數(shù)字自增(自增后大于9則取值為9),十位上的數(shù)字自減(自減后小于0則取值為0),百位上的數(shù)字取值個位和十位原有數(shù)字中較大值,其余各位上數(shù)字不變?!境绦颉?#include using namespace std;int fun(int n)int i1, i2, i3;i1=n%10;/個位數(shù)字i2=(n%100)/10 ; /十位數(shù)字i3=(n%1000)/100; /百位數(shù)字i3=i1i2?i1:i2;i1=(i1+1)=9?9:(i1+1);i2=(i2-1)=0?0:(i2-1);return i3*100+i2*10+i1;int main( )int a;cout999):; cina; coutfun(a)endl; return 0;2.【題目】以下程序的功能是輸出對象的成員字符串,請完善填空?!境绦颉?include#includeusing namespace std;class STR char *s;public:STR(char *p) int n=strlen(p);s=new charn; strcpy(s,p); char getchar(int i) return si; / 取第字符串s中第i個字符(i=0,1,2,) STR()delete s; ;int main( )char st40, c; cout請輸入一個字符串:; cin.getline(st,40);STR test(st) ; / 生成對象testint i=0;do c=test.getchar(i+); /取test成員字符串中第i個字符(i=0,1,2,)coutc; while(istrlen(st); coutendl; return 0;四、面向?qū)ο缶幊?. 【題目】定義一個類Array,求一維數(shù)組(數(shù)組大小為N,1N100)中值為奇數(shù)的元素之和。具體要求如下:(1)私有數(shù)據(jù)成員l int aN;/ 存放一維數(shù)組l int len;/ 一維數(shù)組中實(shí)際元素的個數(shù)l int s;/ 一維數(shù)組中值為奇數(shù)的元素之和(2)公有成員函數(shù)l Array(int *p,int n);/ 構(gòu)造函數(shù),用p所指數(shù)組初始化數(shù)據(jù)成員a和lenl void f();/ 根據(jù)題意求數(shù)據(jù)成員s的值l void print();/ 輸出數(shù)據(jù)成員a和s(3)在主函數(shù)中用數(shù)據(jù)1,2,3,4,5,6,7,8測試所定義的類Array。輸出:1 2 3 4 5 6 7 8sum=16【參考程序】#include#define N 100using namespace std;class Arrayint aN;int len;int s;public:Array(int *p,int n)s=0;len=n;for(int i=0;ilen;i+)ai=pi;void f()for(int i=0;ilen;i+)if(ai%2)s+=ai;void print()for(int i=0;ilen;i+)coutait;coutn;coutsum=sendl;int main()int t8=1,2,3,4,5,6,7,8;Array test(t,8);test.f();test.print();return 0;2. 【題目】定義一個類array,求一維數(shù)組中偶數(shù)位置的元素(第2個元素,第4個元素,)之和。具體要求如下:(1)私有數(shù)據(jù)成員l int *a;/ 存放一維數(shù)組l int len;/ 一維數(shù)組中元素的個數(shù)l int s;/ 一維數(shù)組中偶數(shù)位置的元素之和(2)公有成員函數(shù)l array(int *p,int n);/ 構(gòu)造函數(shù),用p所指數(shù)組初始化數(shù)據(jù)成員a和lenl void f();/ 根據(jù)題意求數(shù)據(jù)成員s的值l void print();/ 輸出數(shù)據(jù)成員a和sl array();/ 析構(gòu)函數(shù),釋放構(gòu)造函數(shù)中分配的動態(tài)空間(3)在主函數(shù)中用數(shù)據(jù)1,2,3,4,5,6,7,8測試所定義的類array。輸出:1 2 3 4 5 6 7 8sum=20【參考程序】#includeusing namespace std;class arrayint *a;int len;int s;public:array(int *p,int n)s=0;len=n;a=new intlen;for(int i=0;ilen;i+)ai=pi;void f()for(int i=0;ilen;i+)if(i+1)%2=0)s+=ai;void print()for(int i=0;ilen;i+)coutait;coutn;coutsum=sendl;array()delete a;int main()int t8=1,2,3,4,5,6,7,8;array test(t,8);test.f();test.print();return 0;3. 【題目】定義一個類ARRAY,求二維數(shù)組中外圍元素(第1行、最后1行,第1列、最后一列)之和。具體要求如下:(1)私有數(shù)據(jù)成員l int b45;/ 存放二維數(shù)組l int s;/ 二維數(shù)組中外圍元素之和(2)公有成員函數(shù)l ARRAY (int p5,int n);/ 構(gòu)造函數(shù),用p所指數(shù)組初始化數(shù)據(jù)成員bl void f();/ 根據(jù)題意求數(shù)據(jù)成員s的值l void print();/ 輸出數(shù)據(jù)成員b和s(3)在主函數(shù)中用數(shù)據(jù)1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20測試所定義的類ARRAY。輸出:1 2 3 4 56 7 8 9 1011 12 13 14 1516 17 18 19 20sum=147【參考程序】#includeusing namespace std;class ARRAYint b45;int s;public:ARRAY(int p5,int n)s=0;for(int i=0;in;i+)for(int j=0;j5;j+)bij=pij;void f()for(int i=0;i4;i+)for(int j=0;j5;j+)if(i=0|i=3|j=0|j=4)s+=bij;void print()for(int i=0;i4;i+)for(int j=0;j5;j+)coutbijt;coutn;coutsum=sendl;int main()int t45=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20;ARRAY test(t,4);test.f();test.print();return 0;4. 【題目】定義一個類Sring,將字符串中的字符按ASCII值從小到大排序。具體要求如下:(1)私有數(shù)據(jù)成員l char str100;/ 存放字符串(2)公有成員函數(shù)l Sring (char *p);/ 構(gòu)造函數(shù),用p所指字符數(shù)組初始化數(shù)據(jù)成員strl void fun();/ 根據(jù)題意將str中的字符升序排列l(wèi) void show();/ 輸出數(shù)據(jù)成員str(3)在主函數(shù)中輸入一個字符串對所定義的類Sring進(jìn)行測試,要求輸出排序前后的字符串?!緟⒖汲绦颉?include#includeusing namespace std;class Sringchar str100;public:Sring(char *p)strcpy(str,p);void fun()char *p1=str,*p2,*pmin,t;while(*(p1+1)pmin=p1;p2=p1+1;while(*p2)if(*p2*pmin)pmin=p2;p2+;if(pmin!=p1)t=*pmin,*pmin=*p1,*p1=t;p1+;void show()coutstr=strendl;int main()char t100;cin.getline(t,100);Sring test(t);cout原字符串為:t;test.show();test.fun();cout排序后的字符串為:t;test.show();return 0;5. 【題目】定義一個類STRING,求字符串中數(shù)字元素之和。如“as12QW24#$7gh”中數(shù)字元素之和為1+2+2+4+7=16,具體要求如下:(1)私有數(shù)據(jù)成員l char *str;/ 存放字符串l int sum;/ 數(shù)字元素之和(2)公有成員函數(shù)l STRING (char *p);/ 構(gòu)造函數(shù),用p所指字符數(shù)組初始化數(shù)據(jù)成員strl void fun();/ 根據(jù)題意求字符串中數(shù)字元素之和l void show();/ 輸出數(shù)據(jù)成員str和suml STRING ();/ 析構(gòu)函數(shù),釋放構(gòu)造函數(shù)中分配的動態(tài)空間(3)在主函數(shù)中輸入一個字符串對所定義的類STRING進(jìn)行測試,要求輸出字符串和字符串中數(shù)字元素之和?!緟⒖汲绦颉?include#includeusing namespace std;class STRINGchar *str;int sum;public:STRING(char *p)sum=0;str=new char
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 服裝行業(yè)工程師工作感想
- 小班幼兒進(jìn)餐情況觀察記錄
- 物流快遞行業(yè)物流管理培訓(xùn)反思
- 中考總結(jié)結(jié)尾(范本1040段)
- 2024年物流運(yùn)輸學(xué)徒工勞動協(xié)議書3篇
- 2024年度校企人才培養(yǎng)與科研支撐協(xié)議3篇
- 康復(fù)外科護(hù)士工作總結(jié)
- 盡情奔跑在幸福的旋律中幼兒園工作總結(jié)
- 2024年智能商務(wù)大廈辦公場地租賃合同模板3篇
- 2024年度打印機(jī)銷售與市場調(diào)研合同3篇
- 安全生產(chǎn)治本攻堅(jiān)三年行動實(shí)施方案(2024-2026年) - 副本
- 雷軍2024演講破釜沉舟
- 工業(yè)管道安裝工藝標(biāo)準(zhǔn)
- 桂林市龍勝各族自治縣2022-2023學(xué)年七年級上學(xué)期期末地理試題【帶答案】
- QBT 2667.1-2004 埋地通信用多孔一體塑料管材 第1部分硬聚氯乙烯(PVC-U)多 孔 一 體 管 材
- 廣東省中山市2023-2024學(xué)年八年級上學(xué)期期末考試歷史試卷(含答案)
- 通信原理智慧樹知到期末考試答案章節(jié)答案2024年濰坊學(xué)院
- 承包商安全資質(zhì)審核管理規(guī)定模板
- 工程項(xiàng)目部安全生產(chǎn)治本攻堅(jiān)三年行動實(shí)施方案
- 中藥材種植中藥材運(yùn)輸配送方案
- 高寶故障代碼-中文
評論
0/150
提交評論