面向對象的程序設計語言——C++(第二版)-前五章習題參考答案(編程題也有啊)_第1頁
面向對象的程序設計語言——C++(第二版)-前五章習題參考答案(編程題也有啊)_第2頁
面向對象的程序設計語言——C++(第二版)-前五章習題參考答案(編程題也有啊)_第3頁
面向對象的程序設計語言——C++(第二版)-前五章習題參考答案(編程題也有啊)_第4頁
面向對象的程序設計語言——C++(第二版)-前五章習題參考答案(編程題也有啊)_第5頁
已閱讀5頁,還剩19頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、第1章 C+語言概述1填空題(1)函數說明,函數體(2)聲明區,主程序區,函數定義區(3)多態性(4)namespace,using(5)std(6)cin,(7)/(8)對數據的操作2判斷題(1)對(2)錯(3)錯(4)錯(5)錯3改錯題(1)沒有函數體,應改為void main() ;(2)語句沒有分號,應改為using namespace myspace;(3)cout和操作符共同完成輸出的功能,應改為cout Input your name:;(4)應改為#include 4簡答題(略)5編程題(略)第2章 基本數據類型、運算符與表達式1 選擇題(1)B(2)D(3)B(4)D(5)B

2、2簡答題(1)(a)、(c)(e)、(f)、(g)、(h)、(i)(2)(a)、(g)、(i)、(j)(3)(a)5.5(b)0(c)20(d)0,0(e)1(f)1,2(g)3(h)40(i)2(j)3(k)s1=0&s1=a&b=c(4) 364143(5)x=14 編程題/(1)編寫程序,提示用戶輸入三角形的三條邊長,判斷該三角形是否為直角三角形,若是輸出結果以及三角形面積。#include void main() float a,b,c,side1,side2,area; /side1和side2為兩條直角邊長度 coutabc;/ 輸入三角形三邊長度if (a*a=b*b+c*c)|

3、(c*c=a*a+b*b)|(b*b=a*a+c*c)/判斷是否為直角三角形if (a*a=b*b+c*c)/判斷三邊中哪兩條邊為直角邊,并存儲到side1和side2中side1=b;side2=c;elseif (c*c=a*a+b*b)side1=a;side2=b;elseside1=a;side2=c;area=side1*side2/2;/計算直角三角形的面積coutIt is a right-angled triangle and the area is area.n;/輸出判斷結果及直角三角形面積elsecoutIt is not a right-angled triangle

4、.n;/(2)編寫程序,求解各種數據類型的存儲長度并顯示出來,在其中找出存儲長度最大的和最小的兩種數據類型并輸出。#include void main() int length7; int max=0,min=0; coutdata typetmemory used(bytes); length0=sizeof(short int);/獲取短整型長度 coutnshort inttlength0t; length1=sizeof(int);/獲取整型長度 coutninteger tlength1; length2=sizeof(long);/獲取長整型長度 coutnlong integer

5、tlength2; length3=sizeof(char);/獲取字符型長度 coutnchar t length3; length4=sizeof(float);/獲取單浮點型長度 coutnfloat tlength4; length5=sizeof(double);/獲取雙浮點型長度 coutndouble tlength5; length6=sizeof(bool);/獲取布爾型長度 coutnbool tlength6endl; for(int i=0;ilengthmax)/求取長度最大的類型的存取位置max=i;if (lengthilengthmin)/求取長度最小的類型的存

6、取位置min=i; coutThe longest length is from ; switch (max) case 0:coutshort int.endl;break;case 1:coutint.endl;break;case 2:coutlong.endl;break;case 3:coutchar.endl;break;case 4:coutfloat.endl;break;case 5:coutdouble.endl;break;case 6:coutbool.endl;break; coutThe shortest length is from ; switch (min)

7、case 0:coutshort int.endl;break;case 1:coutint.endl;break;case 2:coutlong.endl;break;case 3:coutchar.endl;break;case 4:coutfloat.endl;break;case 5:coutdouble.endl;break;case 6:coutbool.endl;break; /(3)編寫程序輸入一個華氏溫度,將其轉換為攝氏溫度并輸出。#include void main() float C;/變量C為攝氏溫度float F; /變量F為華氏溫度 coutF;/輸入華氏溫度C=(

8、F-32)*5/9;/華氏溫度轉換為攝氏度cout轉換為攝氏溫度為 Cendl;/(4)編寫程序輸入一個十進制表示的正整數,將其轉化為二進制表示并輸出結果。#include void main() int a;/變量C為攝氏溫度int b20; /數組存儲轉換后的二進制數int i;i=0;couta;/輸入十進制數while (a0)/轉換過程bi=a%2;i+;a=(int)(a/2);i-;cout=0)/輸出二進制結果coutbi;i-;coutendl;第3章 C+的控制語句1選擇題(1)B(2)A(3)A(4)C(5)A2判斷題(1)錯(2)對(3)對(4)錯(5)錯3讀程序寫結果

9、(1) 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5(2) 1 1 2 1 1 2 3 2 1 1 2 3 4 3 2 1 1 2 3 4 5 4 3 2 1 (3)j的值為0;i的值為2;4 編程題/編寫程序,計算1到100中所有3的倍數的數的和。#include void main() int sum=0;/sum變量為3的倍數的和for(int i=1;i=100;i+)if (i%3=0)/判斷i是否是3的倍數sum+=i;cout1到100中所有3的倍數的數的和為:sumendl;/編寫程序,用戶輸入一些整數,該程序分別計算出所有奇數和所有偶數之和,并輸出它們。#inc

10、lude void main() int sum_odd=0;/變量為所有奇數的和int sum_even=0;/變量為所有偶數的和int b;/變量為輸入的數字int N;/變量為數字個數coutN;cout請輸入數字(數字以空格隔開)endl;for (int i=0;ib;if (b%2=0)/判斷數字是否為偶數sum_even+=b;elsesum_odd+=b;cout所有奇數的和為sum_oddendl;cout所有偶數的和為sum_evenendl;/求解輸入兩個正整數的最大公約數和最小公倍數。#include void main() int a,b;/輸入的兩個正整數int m

11、in,max;/最小值和最大值cout請輸入兩個正整數(數字以空格隔開)ab;if (a=b)/找出兩個數中的最大值和最小值min=b;max=a;elsemin=a;max=b;/最大公約數一定不大于兩個數中的最小值while (min0)if (a%min=0)&(b%min=0) break;elsemin-;couta和b的最大公約數為minendl;/最小公倍數一定不小于兩個數中的最大值while (max%a!=0)|(max%b!=0)max+;couta和b的最小公倍數為maxendl;/求解輸入兩個正整數的最大公約數和最小公倍數。#include void main() in

12、t a,b;/輸入的兩個正整數int min,max;/最小值和最大值cout請輸入兩個正整數(數字以空格隔開)ab;if (a=b)/找出兩個數中的最大值和最小值min=b;max=a;elsemin=a;max=b;/最大公約數一定不大于兩個數中的最小值while (min0)if (a%min=0)&(b%min=0) break;elsemin-;couta和b的最大公約數為minendl;/最小公倍數一定不小于兩個數中的最大值while (max%a!=0)|(max%b!=0)max+;couta和b的最小公倍數為maxendl;/輸入4個字母,并反向顯示這些字母。#include

13、 void main() char a4;/輸入4個字符cout請輸入4個字符:endl;for (int i=0;iai;cout反向輸出4個字符為:=0;i-)coutai;coutendl;/輸出所有的水仙花數。/水仙花數是指一個3位數,其各位數字的立方和等于該數本身。#include void main() int N,M;int a3;/存儲三位數的個十百位cout水仙花數為:endl;for (N=100;N=999;N+)M=N;for (int j=0;j3;j+)/提取數字的個十百位aj=M%10;M/=10;if (a0*a0*a0+a1*a1*a1+a2*a2*a2=N)

14、coutN ;/求 1!+2!+50!。#include void main() int sum1=1;/記錄i!的結果int sum2=0;/記錄i!累加的結果for (int i=1;i=50;i+)for (int j=1;j=i;j+)/計算i!sum1*=j;sum2+=sum1;cout1!+2!+50!=sum2endl; /編寫程序求一元二次方程ax*x+bx+c=0的解。#include #include void main() float a,b,c;/方程的系數float s1,s2;/解float temp;coutInput a,b,c:abc;if (a=0)cou

15、t不是一元二次方程!endl;elsetemp=b*b-4*a*c;if (temp0)/無根的情況cout無實根!endl;else if (temp=0)/只有一個實根的情況s1=-b/(2*a);cout方程有一個實根,為s1endl;else/兩個實根的情況s1=(-b+sqrt(temp)/(2*a);s2=(-b-sqrt(temp)/(2*a);cout方程有兩個實根,為s1和s2endl;/編寫程序,用循環語句打印如下圖案。#include #include #include void main() for (int i=1;i=7;i+)coutsetw(abs(4-i)+1

16、);/顯示第一個if (i=1)|(i=7)/第一行和最后一行僅顯示一個coutendl;continue;for (int m=abs(4-i)+2;m=6-abs(4-i);m+)/顯示中間的*cout*;coutendl;/中間幾行顯示第二個/編寫程序,輸入年月日信息,并輸出這一天為這一年的第幾天,注意閏年問題。#include void main() int year,month,day;int num=0;int length;coutyear;coutmonth;coutday;for (int i=1;imonth;i+)if (i=1)|(i=3)|(i=5)|(i=7)|(i

17、=8)|(i=10)|(i=12)/大月31天length=31;else if (i=4)|(i=6)|(i=9)|(i=11)/小月30天length=30;else if (year%100=0)&(year%4=0)|(year%100!=0)&(year%4=0)/閏年判斷條件length=29;/閏年的二月29天elselength=28;/非閏年的二月28天num+=length;num+=day;coutyear年month月day日為這一年的第:num天.endl;/編寫程序,由用戶輸入x值,計算函數值并輸出y。函數如下所示:#include void main() int

18、x,y;coutx;if (x0)/x10)/x10的情況y=4*x*x*x-x*x;else/其余的情況y=x*x;cout函數結果y為:yendl;/雞兔同籠問題。若雞兔共有100只腳,利用循環計算雞兔各幾只。#include void main() int rabbit,chicken;for (rabbit=100/4;rabbit=0;rabbit-)/兔子最多有25只,最少沒有chicken=(100-rabbit*4)/2;cout兔子有rabbit只,雞有chicken只endl;第4章 函數1 填空題(1)void(2)靜態全局變量,static(3)函數重載(4)inlin

19、e(5)遞歸函數(6)宏定義命令,文件包含命令,條件編譯命令2判斷題(1)錯(2)錯(3)錯(4)錯(5)錯(6)對(7)錯(8)錯(9)對(10)對3讀程序寫結果(1)x=7,y=4x=9,y=5(2)34.56b101(3)162228(4)12 15 18 21 24(5)2,1,4,1,3,2,1,4簡答題(略)5編程題/編寫一個函數,計算直角坐標系中點a(x0,y0)到點b(x1,y1)的距離。#include #include float length(float x0,float y0,float x1,float y1)/求兩點距離的子函數return sqrt(x0-x1)*

20、(x0-x1)+(y0-y1)*(y0-y1);void main() float x0,x1,y0,y1;coutx0y0;coutx1y1;coutThe length from a to b is length(x0,y0,x1,y1)endl;/求a!+b!+c!的值,其中求n!要用一個函數實現,通過主函數輸入a、b和c的值,并在主函數中輸出計算的結果。#include int factorial(int n)/求兩點距離的子函數int sum=1;for (int i=1;i=n;i+)sum*=i;return sum;void main() int a,b,c;coutabc;c

21、outa!+b!+c!=factorial(a)+factorial(b)+factorial(c)endl;/編寫一個函數。該函數讀入一個整數,并判斷這個整數是否為一個回文數字。例如4,44,434,4334,43534都是回文數字。#include bool palindrome(int n)/判斷n是否為回文的子函數int a20;int m=n;int i=0;int temp,num;while (m0)/將數字的各位反向放置在數組a中ai=m%10;m=m/10;i+;temp=i/2;/需要比較的次數num=-i;/數字的最高位存儲在anum中for (int j=0;jtemp

22、;j+)if (aj!=anum-j) return false;/如果出現不相等的情況立即退出return true;/若比較的各個位置都相等,則為回文void main() int number;coutnumber;if (palindrome(number)coutnumber is a palindrome.endl;elsecoutnumber is not a palindrome.endl;/編寫一個程序,為選修3、4和5門課程的學生計算平均分,其中求平均分要用重載函數實現#include float average(float a,float b,float c)/求三門課程

23、平均分子函數return (a+b+c)/3;float average(float a,float b,float c,float d)/求四門課程平均分子函數return (a+b+c+d)/4;float average(float a,float b,float c,float d,float e)/求五門課程平均分子函數return (a+b+c+d+e)/5;void main() int number;float s1,s2,s3,s4,s5;coutnumber;if (number=3)couts1s2s3;coutThe average is average(s1,s2,s

24、3)endl;else if (number=4)couts1s2s3s4;coutThe average is average(s1,s2,s3,s4)endl;elsecouts1s2s3s4s5;coutThe average is average(s1,s2,s3,s4,s5)endl;/用遞歸方法將一個整數n轉換成字符串。#include #include using namespace std;string convert(int n);string numstring();void main() int number;coutnumber;coutconverted string

25、 is ;coutconvert(number)endl;string convert(int n)/遞歸函數if (n/10=0)&(n=0) return ;elsenumstring=convert(n/10).append(string(1,(n%10+48);/將各位數轉換為字符后創建字符串,加到最后return numstring;/編寫一個函數。該函數讀入一個整數,然后將這個整數上每個位的數字按照相反的順序輸出。/例如輸入的整數為12345,輸出結果為54321。#include void reverse(int n)/反向顯示整數nint a20;/存儲n的各位,最多20位in

26、t m=n;int i=0;while (m0)/提取n的各位ai=m%10;m=m/10;i+;coutreversed number is ;for (int j=0;j=i-1;j+)/反向輸出各位coutaj;coutendl;void main() int number;coutnumber;reverse(number);/輸入三個數字,數字可以為整形或浮點型,分別編寫函數來求解三個數字的最大值、最小值和平均值,要求在主函數中完成數字的輸入和計算結果的輸出。#include #include float fmax,fmin,faverage;int max,min,average;

27、void calculate(float fa,float fb,float fc)/浮點型處理函數fmax=fa=fb?fa:fb;fmax=fmax=fc?fmax:fc;fmin=fa=fb?fa:fb;fmin=fmin=b?a:b;max=max=c?max:c;min=a=b?a:b;min=min=c?min:c;average=(a+b+c)/3;void main() int s1,s2,s3;float f1,f2,f3;int type;couttype;while (type!=0)&(type!=1)/輸入類型錯誤時再次輸入couttype;coutf1f2f3;ca

28、lculate(f1,f2,f3);coutsetw(8)maxsetw(8)minsetw(12)averageendl;coutsetw(8)fmaxsetw(8)fminsetw(12)faverages1s2s3;calculate(s1,s2,s3);coutsetw(5)maxsetw(8)minsetw(8)averageendl;coutsetw(5)maxsetw(8)minsetw(8)averageendl;第5章 構造數據類型1選擇題(1)C(2)D(3)A(4)B(5)C2判斷題(1)錯(2)對(3)對(4)錯(5)錯3讀程序寫結果(1)153(2)422 5 6 8

29、 10(3)65535,21(4)419(5)6904(6)432104 編程題/編寫函數,完成指定二維數組(3*3)的轉置,即行列對換。#include #include void main()int i,j,temp,row=0,colum=0;int a33;cout輸入一個33的整型矩陣:endl;for (i=0;i=2;i+)/從第0行第2行for (j=0;jaij;/輸入矩陣元素for (i=0;i=2;i+)for (j=0;j=i;j+)/將aij與aji的值互換temp=aij;aij=aji;aji=temp;for (i=0;i=2;i+)for (j=0;j=2;j

30、+)coutsetw(8)aij;/輸入矩陣元素coutendl;/編寫一個程序,要求當輸入一個數字月份時,程序輸出該月的英文名稱。例如輸入5時,程序輸出May,要求用指針數組實現。#include #include void main()/定義指針數組char *month12=January,February,March,April,May,June,July,August,September,October,November,December;int n;coutn;while (n12)|(n1)coutn;coutThe month is *(month+n-1)endl;/編寫一個

31、程序,要求分別輸入5個學生的3科成績,并輸出平均成績最高的學生的姓名及各科成績。要求用結構體數組實現。#include #include struct studentchar name20;/姓名 float course1;/第一科成績float course2;/第二科成績float course3;/第三科成績float average;/平均成績;struct student stu5;void main()float temp=-100.0;int j,k=0;char c;for (int i=0;i5;i+)coutInput NO.i+1;coutInput

32、NO.i+1stui.course1stui.course2stui.course3;/輸入三科成績stui.average=(stui.course1+stui.course2+stui.course3)/3;/求平均成績if (tempstui.average)temp=stui.average;/temp存放最高平均分k=i;/k存放該同學的序號coutThe student is , three scores are stuk.course1, stuk.course2 and stuk.course3endl;/編寫一個程序,實現方程式的相加。#include #include struct coefficientbool pn;int num;a3,b3,c3,d3;void main()char equation250,ch,z8;int m,j; coutInput NO. 1 Equation:equation0;coutInput NO. 2 Equation:equation1;for (int i=0; i=0

溫馨提示

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

評論

0/150

提交評論