c++程序設(shè)計課后練習答案.doc_第1頁
c++程序設(shè)計課后練習答案.doc_第2頁
c++程序設(shè)計課后練習答案.doc_第3頁
c++程序設(shè)計課后練習答案.doc_第4頁
c++程序設(shè)計課后練習答案.doc_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精品文檔第一章一、選擇題1.B; (typedef ,typeid ,typename,都為保留字 );2.C; (標識符,應(yīng)該以字母或,下劃線開頭);3.C; (標識符中有的特殊符號,只能有下劃線);二、填空題1. cin , cout2. new , delete3. int a(55);三、改錯題1. 沒有定義變量 num;2.const int *p=&x; 是聲明指向常量的指針, *p 不能當作 “左值 ”, *p=65 錯誤。3.p 為常量指針,不能吧p 作為 “ 左值 ” ,p=&y,錯誤。四、編程題1. 分別用字符和 ASCII 碼形式輸出整數(shù)值 65 和 66.#includ

2、e using namespace std;void main()char a=A,b=B;int ascii_1=53,ascii_2=54;/ASCII碼中的, 5 和 6cout 字符輸出: (int)a, (int)b endl;coutASCII 碼輸出: (char)ascii_2(char)ascii_1,;cout(char)ascii_1(char)ascii_1 endl;。1 歡迎下載精品文檔2. 編寫一個 int 型變量分配 100 個整形空間的程序。#include using namespace std;void main()int *p;p = new int10

3、0;for(int i = 0;i 100;i+)*(p+i)=i;for(i = 0;i 100;i+)cout*(p+i),;delete p;3. 編寫完整的程序,它讀入 15 個 float 值,用指針把它們存放在一個存儲快里,然后輸出這些值和以及最小值。#include #include /用于數(shù)組排列的頭文件using namespace std;void main()float *p;p = new float15;cout 輸入 15 個 float類型的值: endl;for(int i = 0;i *(p+i);for(i = 0;i 15;i+)cout*(p+i),;s

4、ort(p,p+15);coutn最小的是: *(p) endl;delete p;。2 歡迎下載精品文檔4. 聲明如下數(shù)組:int a = 1 ,2 ,3, 4, 5, 6, 7, 8;先查找 4 的位置,講數(shù)組 a 復(fù)制給數(shù)組 b,然后將數(shù)組 a 的內(nèi)容反轉(zhuǎn),再查找 4 的位置,最后分別輸出數(shù)組 a 和 b 的內(nèi)容。#include #include #include using namespace std;void main()int a=1,2,3,4,5,6,7,8,b8;cout 數(shù)組 a 中4的位置是: find(a,a+8,4)endl;/查找 4的位置copy(a,a+8,b

5、);/將數(shù)組 a 復(fù)制給數(shù)組 breverse_copy(b,b+8,a);/把數(shù)組 b,逆向復(fù)制給 a,完成 a 的逆轉(zhuǎn)cout 數(shù)組 a 反轉(zhuǎn)后, 4的位置是: find(a,a+8,4) endl;/ 在查找 4 的位置cout 數(shù)字 a 的內(nèi)容: endl;for(int i=0;i8;i+)cout ai ,;coutn數(shù)組 b 中的內(nèi)容: endl;for(i=0;i8;i+)cout bi ,;第二章一、單項選擇1.D; 2.D ;三、編程題1. 使用多種方法編寫將兩個字符串連接在一起的程序。3 歡迎下載精品文檔#include #include using namespace

6、std;void main()/ 使用 string 類定義字符串,完成字符串連接string str1(C+),str2(程序設(shè)計 );string str3;str3 = str1+str2;/連接方式 1cout str3 endl;/ 使用 char 數(shù)組定義字符串,完成連接char c1 = c+,c2 = program;char c320;int i=0,k=0;for(i=0;i20;i+)/初始化 c3c3i=0;i=0;while(c1i!=0)c3k=c1i;i+;k+;i=0;while(c2i!=0)c3k=c2i;i+;k+;cout c3 endl;2. 已知一個

7、 string 的對象 str 的內(nèi)容為 “ We are here !” ,使用多種方法輸出 “h”。#include #include #include #include using namespace std;。4 歡迎下載精品文檔void main()string str1(We are here!);cout str17 endl;/通過數(shù)組string str2=str1.substr(7,1);/通過得到子字符串cout str2 endl;char *p=find(str1.begin(),str1.end(),h);/通過 find函數(shù)if(p)cout*p endl;第三章

8、一、填空題1. 函數(shù)原型聲明;2.inline3. 對象、對象指針、引用4. 函數(shù) func 返回引用5.int *fun(char,int&);二、單項選擇題1.A ; 2.C ; 3.C ;三、改錯題1.y = x * x - T;錯誤, T 是類型,不是變量,不能參加運算;2.y 沒有類型 , 并且 x 的類型和 template 中的不一樣。#include template Type max(Type x, Type y)return (xy) ? (x) : (y) ;。5 歡迎下載精品文檔3. 函數(shù) change 的參數(shù)定義成了常量,只能使用參數(shù),而無權(quán)修改他。void chan

9、ge (string & s)s = s + pig!;四、編程題1. 編寫一個求方程 ax2 + bx + c = 0 的根 的程序,用 3 個函數(shù)分別求當 b2-4ac大于零、等于零、和小于零時的方程的根。要求從主函數(shù)輸入 a,b,c 的值并輸出結(jié)果。#include #include void equation_1 (int a, int b, int c)double x1, x2, temp;temp = b*b - 4 * a * c;x1 = (-b + sqrt(temp) ) / (2 * a * 1.0);x2 = (-b - sqrt(temp) ) / (2 * a *

10、 1.0);cout 兩個不相等的實根 endl;coutx1 = x1, x2 = x2 endl;void equation_2 (int a, int b, int c)double x1, x2, temp;temp = b*b - 4 * a * c;x1 = (-b + sqrt(temp) ) / (2 * a * 1.0);x2 = x1;cout 兩個相等的實根 endl;coutx1 = x1, x2 = x2 endl;void equation_3 (int a, int b, int c)double temp, real1, real2, image1, image

11、2;temp = - (b*b - 4 * a * c);real1 = -b / (2 * a *1.0);。6 歡迎下載精品文檔real2 = real1;image1 = sqrt(temp);image2 = - image1;cout 兩個虛根 endl;coutx1 = real1 + image1j endl; coutx2 = real2 + image2j endl;void main()int a, b, c;double temp;cout 輸入 a,b,c 的值 abc;cout 方程為: ax*x+ bx+ c = 0 0)equation_1 (a, b, c);i

12、f(temp = 0)equation_2 (a, b, c);if(temp 0)equation_3 (a, b, c);2. 定義函數(shù) up(ch) ,如字符變量 ch 是小寫字母就轉(zhuǎn)換成大寫字母并通過 up 返回,否則字符 ch 不改變。要求在短小而完全的程序中顯示這個程序是怎樣被調(diào)用的。#include using namespace std;char up (char c)if(c = 97 & c = 122)return (c - 32) ;elsereturn c;void main()int i;。7 歡迎下載精品文檔char c15 =A,v,e,t,E,T,%,&,4,

13、Y,e,i,9,;for(i = 0 ; i 15 ; i+)cout up(ci), ;cout endl;3. 編寫主程序條用帶實數(shù) r 和整數(shù) n 兩個參數(shù)的函數(shù)并輸出 r 的 n 次冪。#include #include double power(double a, int b)int i;double result = 1.0;for(i=0;i b;i+)result = result * a;return result;void main()double r;int n;coutr;coutn;cout r 的 n 次冪是: power(r,n) endl;4. 編寫有字符型參數(shù)

14、 C和整形參數(shù) N的函數(shù),讓他們顯示出由字符 C 組成的三角形。其方式為第 1 行有 1 個字符 C,第 2 行有 2 個字符 C ,等等。#include using namespace std;void print_triangle(char c, int n)int i, j;for(i=0; i n; i+)for(j=0; j=i; j+)。8 歡迎下載精品文檔cout c;cout endl;void main()print_triangle(a,10);5. 編寫一個 ieqiu 字符串長度的函數(shù), strlen (),再用 strlen ()函數(shù)編寫一個函數(shù) revers (s

15、)的倒序遞歸程序,使字符串 s 逆序。#include #include using namespace std;int strlen(char *str)int len = 0;while(strlen != 0)len+;return len;void revers(char *b)char c;int j, len;len=strlen(b);j=len/2-1;while(j=0)c=*(b+j);*(b+j)=*(b+len-j-1);*(b+len-j-1)=c;j-;blen=0;void main()char str=1234567890;。9 歡迎下載精品文檔cout str

16、-的長度: strlen(str) endl;cout str endl;/倒序前revers(str);/cout str endl;/倒序后6. 用函數(shù)模板實現(xiàn) 3 個數(shù)值中按最小值到最大值排序的程序。#include using namespace std;templatevoid sort(T a, T b, T c)T array3,temp; int i,j;array0 = a;array1 = b;array2 = c;for(i=0;i3;i+)for(j=0;jarrayj+1)temp = arrayj;arrayj = arrayj+1;arrayj+1 = temp;

17、cout array0 array1 array2 endl;void main()sort(5,1,9);7. 利用函數(shù)模板設(shè)計一個求數(shù)組元素中和的函數(shù),并檢驗之。#include using namespace std;template T sum (T a,int n)。10 歡迎下載精品文檔int i;T s=0; for(i=0;i n;i+)s = s + ai;return s;void main ()int a5=1,2,3,4,5;int s = sum(a,5);cout s endl;8. 重載上題中的函數(shù)模板,使他能夠進行兩個數(shù)組的求和。#include using n

18、amespace std;templateT sum (T a, int n)int i;T s=0; for(i=0;i n;i+)s = s + ai;return s;template /重載上面的模板T sum (T a, int n, T b, int m)return sum(a,n)+sum(b,m);void main ()int a5=1,2,3,4,5;int b10=1,2,3,4,5,6,7,8,9,10;int s1 = sum(a, 5);int s2 = sum(b, 10);int s3= sum(a, 5, b, 10);cout s1 endl;cout s

19、2 endl;cout s3 endl;。11 歡迎下載精品文檔第四章一、填空題1. 數(shù)據(jù)成員、成員函數(shù);2. 類、析構(gòu)函數(shù)不允許有參數(shù)和返回類型(可是顯示地說明參數(shù)為void )、一個類有 1 個析構(gòu)函數(shù);3.fun:fun(fun &)、 fun:fun(const fun &);二、單項選擇題1.C。 2.C。3. 沒又答案,應(yīng)該是A:A(void)、或 A:A() 。4.B 。 5.C 。 6.C 。7.D三、改錯題1.return m;-錯誤,沒又定義變量m;2.A.init(24,56);-錯誤,沒有聲明對象A,init函數(shù)參數(shù)不對應(yīng);Setx 函數(shù)是 int型但是沒有返回值四、完

20、成程序題1.#include using namespace std;class baseprivate :/ 私有數(shù)據(jù)成員int a, b;public :void init(int x, int y)/公有函數(shù)a = x;b = y;。12 歡迎下載精品文檔void print()cout2 * a - b =(2*a-b) endl;void main()base a;a.init(68,55);a.print();2.#includeusing namespace std;class Pointprivate :int m, n;public :Point(int, int);/ 整型

21、變量,為參數(shù)的構(gòu)造函數(shù) Point(Point&);/ 復(fù)制構(gòu)造函數(shù)的原型print()coutm = m, n = n endl;Point:Point(int a, int b)m = a;n = b;Point:Point(Point & t)/復(fù)制構(gòu)造函數(shù)的定義m = t.m;n = t.n;void main()。13 歡迎下載精品文檔Point a(10,89);Point b(a);a.print();b.print();五、程序分析題1. 沒有結(jié)果,因為沒有 main 函數(shù)如果加 main 函數(shù)void main()base b(10, 20);輸出:初始化 .10,20 De

22、story.10,202.輸出:55六、編程題1. 設(shè)計一個點類 Point ,再設(shè)計一個矩形類, 矩形類使用 Point 類的兩個坐標點作為矩形的對角頂點。 并可以輸出 4 個坐標值和面積。 使用測試程序驗證程序。#includeusing namespace std;class Point/ 點類private:int x, y;/私有成員變量,坐標public :Point()/無參數(shù)的構(gòu)造方法,對xy 初始化。14 歡迎下載精品文檔x = 0;y = 0;Point(int a, int b)/又參數(shù)的構(gòu)造方法,對xy 賦值x = a;y = b;void setXY(int a, i

23、nt b)/設(shè)置坐標的函數(shù)x = a;y = b;int getX()/得到 x 的方法return x;int getY()/得到有的函數(shù)return y;class Rectangle/ 矩形類private:Point point1, point2, point3, point4;/私有成員變量, 4 個點的對象public :Rectangle();/ 類 Point 的無參構(gòu)造函數(shù)已經(jīng)對每個對象做初始化啦,這里不用對每個點多初始化了Rectangle(Point one, Point two)/用點對象做初始化的,構(gòu)造函數(shù), 1 和 4 為對角頂點point1 = one;point

24、4 = two;init();Rectangle(int x1, int y1, int x2, int y2)/ 用兩對坐標做初始化,構(gòu)造函數(shù), 1 和 4 為對角頂點point1.setXY(x1, y1);point4.setXY(x2, y2);。15 歡迎下載精品文檔init();void init()/給另外兩個點做初始化的函數(shù)point2.setXY(point4.getX(),point1.getY() );point3.setXY(point1.getX(),point4.getY() );void printPoint()/打印四個點的函數(shù)coutA :( point1.g

25、etX() , point1.getY() ) endl;coutB :( point2.getX() , point2.getY() ) endl;coutC :( point3.getX() , point3.getY() ) endl;coutD :( point4.getX() , point4.getY() ) 0)return area;elsereturn -area;void main()Point p1(-15, 56), p2(89, -10);/定義兩個點Rectangle r1(p1, p2);/用兩個點做參數(shù),聲明一個矩形對象r1Rectangle r2(1, 5,

26、5, 1);/用兩隊左邊,聲明一個矩形對象r2cout 矩形 r1的 4 個定點坐標: endl;r1.printPoint();cout 矩形 r1的面積: r1.getArea() endl;。16 歡迎下載精品文檔coutn矩形 r2 的 4 個定點坐標: endl;r2.printPoint();cout 矩形 r2 的面積: r2.getArea() endl;2. 使用內(nèi)聯(lián)函數(shù)設(shè)計一個類,用來表示直角坐標系中的任意一條直線并輸出它的屬性。#include #include class Lineprivate:int x1, y1, x2, y2;public :Line();Lin

27、e(int =0, int =0, int =0, int=0 );void printPoint();double getLength();inline Line:Line(int a, int b, int c, int d)x1 = a;y1 = b;x2 = c;y2 = d;inline void Line:printPoint()coutA : x1 , y1 endl;coutB : x2 , y2 endl;inline double Line:getLength()double length;length = sqrt(x2-x1)*(x2-x1) + (y2-y1)*(y2

28、-y1) );return length;void main()Line line(10,80,-10,12);line.printPoint();。17 歡迎下載精品文檔cout line.getLength() endl;第五章一、填空題1. 常成員函數(shù);2. 常量成員函數(shù);3.const二、單項選擇題1.B; 2.A; 3.C; 4.A;三、改錯題1.static int getn()return number;錯誤靜態(tài)成員函數(shù),只允許訪問靜態(tài)成員變量,number不是靜態(tài)成員變量2.void main()test *two2 = new test(4, 5), new test(6 ,

29、8);for( i=0; i2; i+)delete twoi;四、完成程序題#include using namespace std;class test。18 歡迎下載精品文檔int x;public :test(int a)x = a;int GetX()return x;void main()int i;/填空一,聲明變量 itest *p, a23 = 1, 2, 3, 4, 5, 6;for( p=&a00, i=0; i=6; i+, p+)/填空 2,初始化 p,iif(p-a0)%3 = 0)cout endl;coutGetX() ;五、編程題1. 聲明復(fù)數(shù)的類, comp

30、lex,使用友元函數(shù) add 實現(xiàn)復(fù)數(shù)加法。#include #include using namespace std;class Complexprivate:double real, image;public :Complex()Complex(double a,double b)real = a;image = b;。19 歡迎下載精品文檔void setRI(double a, double b)real = a;image = b;double getReal()return real;double getImage()return image;void print()if(imag

31、e0)cout 復(fù)數(shù): real + image i endl;if(image0)cout 復(fù)數(shù): real - image i endl;friend Complex add(Complex ,Complex);/聲明友元函數(shù);Complex add(Complex c1, Complex c2)/定義友元函數(shù)Complex c3;c3.real = c1.real + c2.real;/訪問 Complex類中的私有成員c3.image = c1.image + c2.image;return c3;void main()Complex c1(19, 0.864), c2, c3;c2.

32、setRI(90,125.012);c3 = add(c1, c2);cout 復(fù)數(shù)一: ;c1.print();cout 復(fù)數(shù)二: ;c2.print();cout 相加后: ;c3.print();。20 歡迎下載精品文檔2. 例子 5.8 ,114 頁例子不錯;3. 編寫一個程序,該程序建立一個動態(tài)數(shù)組,為動態(tài)數(shù)組的元素賦值,顯示動態(tài)數(shù)組的值并刪除動態(tài)數(shù)組。#include using namespace std;void main()int i, n, temp=0;coutn;double *array = new doublen; /用指針,動態(tài)申請數(shù)組大小cout 給每個數(shù)組元素

33、賦值: endl;for(i=0; i n; i+)coutarray i temp;*(array+i) = temp;/給數(shù)組元素賦值cout 動態(tài)數(shù)組個元素的值如下: endl;for(i=0; i n; i+)coutarray i = arrayi endl;/打印數(shù)組元素delete array;/釋放內(nèi)存4. 定義一個 Dog類,它用靜態(tài)數(shù)據(jù)成員 Dogs 記錄 Dog的個體數(shù)目,靜態(tài)成員函數(shù) GetDogs 用來存取 Dogs。設(shè)計并測試這個類。#include using namespace std;class Dogprivate:static int dogs;/靜態(tài)數(shù)據(jù)

34、成員,記錄Dog 的個體數(shù)目public :Dog()void setDogs(int a)。21 歡迎下載精品文檔dogs = a;static int getDogs()return dogs;int Dog : dogs = 25;/初始化靜態(tài)數(shù)據(jù)成員void main()cout 未定義 Dog類對象之前: x = Dog:getDogs() endl;/x在產(chǎn)生對象之前即存在,輸出25Dog a, b;couta 中 x: a.getDogs() endl;coutb 中 x: b.getDogs() endl;a.setDogs(360);cout 給對象 a 中的 x 設(shè)置值后:

35、 endl;couta 中 x: a.getDogs() endl;coutb 中 x: b.getDogs() endl;第六章一、填空題1. 單一繼承; 2.private protected public二、單項選擇1.C; 2.A; 3.C; 4.無答案 ;BCD中,構(gòu)造函數(shù)和析構(gòu)函數(shù)是都不會被繼承的三、改錯題1. 類 derived 和 base 中均沒變量 b, derived 的構(gòu)造函數(shù)中的 m(b) 錯誤; derived 的構(gòu)造函數(shù)應(yīng)為: derived(int b) : base(b);2.Derived 類中重載 show() 方法void Show()Base1:Sho

36、w();Base2:Show();。22 歡迎下載精品文檔四、編程題1. 設(shè)計一個基類,從基類派生圓柱,設(shè)計成員函數(shù)輸出它們的面積和體積;#include using namespace std; class Basic/ 基類protected:public:double r;Basic() r = 0; Basic(double a):r(a);class Circular : public Basic/從基類派生圓類protected:double area;public:Circular(double a)r = a;area = area = 3.1415926 * r * r;do

37、uble getArea()/返回圓面積return area;class Column : public Circular/從圓類派生圓柱類protected:double h;double cubage;public:Column(double a, double b) : Circular(a)h = b;cubage = getArea() * h;double getCubage()/返回圓柱體積函數(shù)return cubage;。23 歡迎下載精品文檔;void main()Circular circular(45);Column column(12, 10);cout 圓的面積:

38、circular.getArea() endl;cout 圓柱的體積: column.getCubage() endl;3. 定義一個線段類作為矩形的基類,基類有起點和終點坐標,有輸出左邊和長度以及線段和 x 軸的夾角的成員函數(shù)。矩線段對象的兩個坐標作為自己一條邊的位置,它具有另外一條邊,能輸出矩形的 4 個頂點坐標。給出類的定義并用程序驗證它們的功能。#include #include using namespace std;class Point/點類protected:double x, y;public :Point()Point(double a, double b)x = a; y = b;double getX()return x;double getY()return y;class Linepr

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論