導航:首頁 > 文件教程 > c面向對象程序設計教程答案陳維興

c面向對象程序設計教程答案陳維興

發布時間:2023-05-14 11:29:53

❶ 請問哪裡有 c++面向對象程序設計教程 第2版 陳維興、林小茶 的課後答案 下載

網路搜下就有啦

❷ 面向對象程序設計第2章

《面向對象程序設計》第02章在線測試

第一題、單項選穗高擇題(每題1分,5道題共5分)
1、假定AB為一個類,則執行 「AB r1=r2;」語句時將自動調用該類的( D)。
A、無參構造函數 B、帶參構造函數
C、賦值重載函數 D、拷貝構造含族野函數
2、一段程序的定義如下,在函數f()中將動態對象的成員n的值改為34的語句應該為 (C ) class A { int n; public: setn(int nl) {n=nl;} A(int x) {n = x; } } int f() {A * ptr = new A(45);... }
A、A.n=34; B、ptr.setn(34);
C、ptr->setn(34); D、setn(34);
3、假定AB為一個類,則執行「AB p=new AB(1,2);」語句時共調用該類構造函數的次數為(B )。
A、0 B、1
C、2 D、3
4、假定AB為一個類,px為指向該類的一個含有n個對象的動態數組的指針,則執行「delete []px;」語句時共調用該類析構函數的次數為(C )。
A、0 B、1
C、n D、n+1
5、假定AA是一個類,abc是該類的一個成員函數,則參數表中隱含的第一個參數為( B)。
A、abc B、
this
C、this D、this&
第二題、多項選擇題(每題2分,5道題共10分)
1、定義析構函數時,錯誤的說法是 (BD) 。
A、其名與類名完全相同
B、返回類型是 void 類型
C、無形參,也不可重載
D、函數體中必須有 delete 語句
2、假定AA為一個類,a為該類私有的數據成員,GetValue()為該類公有函數成員,它返回a的值,x為該類的一個對象,則訪問x對象中數據成員a的語句錯誤的是(ABC)。
A、x.a
B、x.a()
C、x->GetValue()
D、x.GetValue()
3、下面關於構造函數的說法正確的是(AB)
A、構造函數的函數名與類名相同
B、構造函數可以重載
C、構造函數不可以設置默認參數
D、構造函數必須指定類型說明
4、下面關於成員函數的說法錯誤的是(ACD)
A、類定義中只能說明函數成員的函數頭,不能定義函數體
B、類中的函數成員可以在類體中定義,也可以在類體之外定義
C、類中的函數成員在類體之外定義時必須要與類聲明在同一文件
D、在類體之外定義的函數成員不能操作該類的私有數據成員
5、假定AB為一個類,則執行 「AB *s=new AB(a,5);」語句的結果是(BCD)
A、動態生成對象AB賦值給變數s
B、動態生成對象s
C、如果對象AB中有公有成員a,則s->a可以訪問該成員
D、動態生成對象AB,該對象的地址賦值給變數s
第三題、判斷題(每題1分,5道題共5分)
1、 若Sample類中的一個成員函數說明如下: Void set(Sample &a) 其中Sample &a表示的含義是.a是類Sample的對象引用,用來作函數談喊Set()的形參。 T
正確 錯誤
2、 假定AA為一個類,a為該類公有的數據成員,x為該類的一個對象,則訪問x對象中數據成員a的格式為x->a。 F
正確 錯誤
3、 靜態成員函數允許訪問類的數據成員。T
正確 錯誤
4、 建立類的對象時,先調用各個對象成員的構造函數,初始化相應的對象成員,然後才執行類的構造函數,初始化類中其他成員。T
正確 錯誤
5、 this是一個隱含於每一個類的成員函數的特殊指針,它是一個指向正在被某個成員函數操作的對象的指針。T
正確 錯誤

❸ 《面向對象程序設計》第10章在線測試

《面向對象程序設計》第10章在線測試
剩餘時間:

59:55
答題須知:1、本卷滿分20分。
2、答完題後,請一定要單擊下面的「交卷」按鈕交卷,否則無法記錄本試卷的成績。
3、在交卷之前,不要刷新本網頁,否則你的答題結果將會被清空。

第一題、單項選擇題(每題1分,5道題共5分)
1、throw後面的表梁世達式不可以是(D )
A、常量 B、變數
C、對象 D、數組
2、關於沒有被捕捉的異常正確的說法是(A/C )
A、在catch塊中沒有處理的異常 B、未被捕捉的異常必然導致系統崩潰
C、如果一個異常沒有被捕捉到,將調用terminate()函數終止程序運行 D、忽略它
3、關於異常對象的說法正確的是( A)
A、異常對象需要先建立,再拋出 B、以傳值方式傳遞異常對象時,拋出的是局部臨時對橡顫肢象
C、以引用方式傳遞異常對象時,拋出的是局部靜態對象 D、以指針方式傳遞異常對象時,拋出的是全局臨時對象
4、關於try, throw和catch使用的說明中,錯誤的是(D )
A、throw必須在try塊中 B、每一個try塊的後面一定要跟著catch塊
C、程序中catch塊可以有多個 D、throw拋出的異常與距它最近的cach匹配
5、為保證程序中的全局變數不與開發商提供的全局變數重名,可以採取的措施是(C )
A、查閱手冊,不起同樣的名字 B、引入命名空間
C、避開不用 D、讓開發商改名
第二題、多項選擇題(每題2分,5道題共10分)
1、下面與異常處理相關的關鍵字有(CD )
A、Try
B、Catch
C、try
D、catch
2、下面與異常處理相關的關鍵字有(BC )
A、Throw
B、throw
C、try
D、Try
3、throw 表達式中的表達式的含義(BD/ (不知道正確答案是什麼))
A、表達式表示異常的值
B、表達式與return語句的運算數相似
C、表達式表示異常的類型
D、表達式的值可以用來區別不同的異常
4、catch子句的說法正確的是( AB)
A、catch子句後的復合語句是異常處理程序
B、catch子句捕獲throw表達式拋出的異常
C、catch子句的異常類型說明只能是類型,不能是數值
D、catch子句的異常類型不能是自定義類
5、關於catch(…)語句的說法正確的是(AC )
A、catch(…)語句可以捕獲任何異常
B、catch(…)語句可以放在catch子句的任何位置
C、catch(…)語句必須放在catch子句的最後
D、catch(…)語句捕獲空的異常
第三題、判斷題(每題1分,5道題共5分)
1、異常如果沒有要求程序立即進行處理,將會引起程序錯誤甚至崩潰的現象。
正確 錯誤T
2、拋出異常的模塊並不負責異常的處理,該異常的處理可以程序中的任何位置。
正確 錯誤F
3、異常信號傳遞方式有三種:傳值方式、引用方式和指針方式。
正確 錯誤T
4、命名空間,就是在程序的不同的模塊中使用相同的名字表示不同的事物(實體)。目的是提供一種機制,使大洞姿程序的各個部分中因出現重名而導致沖突的可能性降到最低。
正確 錯誤T
5、catch處理程序的出現次序無關緊要。
正確 錯誤F

❹ C語言程序設計教程答案~有追加懸賞100分!

1 【C語言】《C語言程序設計教程(第二版)》習題答案

說 明
1. 本文所指的《C語言程序設計教程(第二版)》是李鳳霞主編、北京理
工大學出版社出版的,綠皮。

2 第1章 程序設計基礎知識
一、單項選擇題(第23頁)
1-4.CBBC 5-8.DACA

二、填空題(第24頁)
1.判斷條件 2.面向過程編程 3.結構化 4.程序 5.面向對象的程序設計語言 7.有窮性 8.直到型循環 9.演算法 10.可讀性 11.模塊化 12.對問題的分析和模塊的劃分

三、應用題(第24頁)
2.源程序:
main()
{int i,j,k; /* i:公雞數,j:母雞數,k:小雞數的1/3 */
printf("cock hen chick\n");
for(i=1;i<=20;i++)
for(j=1;j<=33;j++)
for(k=1;k<=33;k++)
if (i+j+k*3==100&&i*5+j*3+k==100)
printf(" %d %d %d\n",i,j,k*3);}
執行結果:
cock hen chick
4 18 78
8 11 81
12 4 84
3.現計算斐波那契數列的前20項。
遞推法 源程序:
main()
{long a,b;int i;
a=b=1;
for(i=1;i<=10;i++) /*要計算前30項,把10改為15。*/
{printf("%8ld%8ld",a,b);
a=a+b;b=b+a;}}
遞歸法 源程序:
main()
{int i;
for(i=0;i<=19;i++)
printf("%8d",fib(i));}
fib(int i)
{return(i<=1?1:fib(i-1)+fib(i-2));}
執行結果:
1 1 2 3 5 8 13 21 34 55
89 144 233 377 610 987 1597 2584 4181 6765
4.源程序:
#include "math.h";
main()
{double x,x0,deltax;
x=1.5;
do {x0=pow(x+1,1./3);
deltax=fabs(x0-x);
x=x0;
}while(deltax>1e-12);
printf("%.10f\n",x);}
執行結果:
1.3247179572
5.源程序略。(分子、分母均構成斐波那契數列)
結果是32.66026079864
6.源程序:
main()
{int a,b,c,m;
printf("Please input a,b and c:");
scanf("%d %d %d",&a,&b,&c);
if(a<b){m=a;a=b;b=m;}
if(a<c){m=a;a=c;c=m;}
if(b<c){m=b;b=c;c=m;}
printf("%d %d %d\n",a,b,c);}
執行結果:
Please input a,b and c:123 456 789
789 456 123
7.源程序:
main()
{int a;
scanf("%d",&a);
printf(a%21==0?"Yes":"No");}
執行結果:
42
Yes

3 第2章 C語言概述
一、單項選擇題(第34頁)
1-4.BDCB 5-8.AABC

二、填空題(第35頁)
1.主 2.C編譯系統 3.函數 函數 4.輸入輸出 5.頭 6. .OBJ 7.庫函數 8.文本

三、應用題(第36頁)
5.sizeof是關鍵字,stru、_aoto、file、m_i_n、hello、ABC、SIN90、x1234、until、cos2x、s_3是標識符。
8.源程序:
main()
{int a,b,c;
scanf("%d %d",&a,&b);
c=a;a=b;b=c;
printf("%d %d",a,b);}
執行結果:
12 34
34 12

4 第3章 數據類型與運算規則
一、單項選擇題(第75頁)
1-5.DBACC 6-10.DBDBC 11-15.ADCCC 16-20.CBCCD 21-25.ADDBC 26-27.AB

二、填空題(第77頁)
1.補碼 2.±(10^-308~10^308) 3.int(整數) 4.單目 自右相左 5.函數調用 6.a或b 7.1 8.65,89

三、應用題(第78頁)
1.10 9
2.執行結果:
11
0
0
12
1

5 第4章 順序結構程序設計
一、單項選擇題(第90頁)
1-5.DCDAD 6-10.BACBB

二、填空題(第91頁)
1.一 ;2. 5.169000 3.(1)-2002500 (2)I=-200,j=2500 (3)i=-200
j=2500 4.a=98,b=765.000000,c=4321.000000 5.略 6.0,0,3 7.3 8.scanf("%lf%lf%lf",&a,&b,&c); 9. 13 13.000000,13.000000 10.a=a^c;c=c^a;a=a^c;(這種演算法不破壞b的值,也不用定義中間變數。)

三、編程題(第92頁)
1.仿照教材第27頁例2-1。
2.源程序:
main()
{int h,m;
scanf("%d:%d",&h,&m);
printf("%d\n",h*60+m);}
執行結果:
9:23
563
3.源程序:
main()
{int a[]={-10,0,15,34},i;
for(i=0;i<=3;i++)
printf("%d\370C=%g\370F\t",a[i],a[i]*1.8+32);}
執行結果:
-10℃=14°F 0℃=32°F 15℃=59°F 34℃=93.2°F
4.源程序:
main()
{double pi=3.14159265358979,r=5;
printf("r=%lg A=%.10lf S=%.10lf\n",r,2*pi*r,pi*pi*r);}
執行結果:
r=5 A=31.4159265359 S=49.3480220054
5.源程序:
#include "math.h";
main()
{double a,b,c;
scanf("%lf%lf%lf",&a,&b,&c);
if (a+b>c&&a+c>b&&b+c>a)
{double s=(a+b+c)/2;
printf("SS=%.10lf\n",sqrt(s*(s-a)*(s-b)*(s-c)));}
else printf("Data error!");}
執行結果:
4 5 6
SS=9.9215674165
6.源程序:
main()
{int a=3,b=4,c=5;float d=1.2,e=2.23,f=-43.56;
printf("a=%3d,b=%-4d,c=**%d\nd=%g\ne=%6.2f\nf=%-10.4f**\n",a,b,c,d,e,f);}
7.源程序:
main()
{int a,b,c,m;
scanf("%d %d %d",&a,&b,&c);
m=a;a=b;b=c;c=m;
printf("%d %d %d\n",a,b,c);}
執行結果:
5 6 7
6 7 5
8.源程序:
main()
{int a,b,c;
scanf("%d %d %d",&a,&b,&c);
printf("average of %d,%d and %d is %.2f\n",a,b,c,(a+b+c)/3.);
執行結果:
6 7 9
average of 6,7 and 9 is 7.33
9.不能。修改後的源程序如下:
main()
{int a,b,c,x,y;
scanf("%d %d %d",&a,&b,&c);
x=a*b;y=x*c;
printf("a=%d,b=%d,c=%d\n",a,b,c);
printf("x=%d,y=%d\n",x,y);}

6 第5章 選擇結構程序設計
一、單項選擇題(第113頁)
1-4.DCBB 5-8.DABD

二、填空題(第115頁)
1.非0 0 2.k==0
3.if (abs(x)>4) printf("%d",x);else printf("error!");
4.if((x>=1&&x<=10||x>=200&&x<=210)&&x&1)printf("%d",x);
5.k=1 (原題最後一行漏了個d,如果認為原題正確,則輸出k=%。)
6. 8! Right!11 7.$$$a=0 8.a=2,b=1

三、編程題(第116頁)
1.有錯。正確的程序如下:
main()
{int a,b,c;
scanf("%d,%d,%d",&a,&b,&c);
printf("min=%d\n",a>b?b>c?c:b:a>c?c:a);}
2.源程序:
main()
{unsigned long a;
scanf("%ld",&a);
for(;a;printf("%d",a%10),a/=10);}
執行結果:
12345
54321
3.(1)源程序:
main()
{int x,y;
scanf("%d",&x);
if (x>-5&&x<0)y=x;
if (x>=0&&x<5)y=x-1;
if (x>=5&&x<10)y=x+1;
printf("%d\n",y);}
(2)源程序:
main()
{int x,y;
scanf("%d",&x);
if(x<10) if(x>-5) if(x>=0) if(x>=5)y=x+1;
else y=x-1; else y=x;
printf("%d\n",y);}
(3)源程序:
main()
{int x,y;
scanf("%d",&x);
if(x<10) if(x>=5)y=x+1;
else if(x>=0)y=x-1;
else if(x>-5)y=x;
printf("%d\n",y);}
(4)源程序:
main()
{int x,y;
scanf("%d",&x);
switch(x/5)
{case -1:if(x!=-5)y=x;break;
case 0:y=x-1;break;
case 1:y=x+1;}
printf("%d\n",y);}
4.本題為了避免考慮每月的天數及閏年等問題,故採用面向對象的程序設計。
現給出Delphi源程序和C++ Builder源程序。
Delphi源程序:
procere TForm1.Button1Click(Sender: TObject);
begin
edit3.Text:=format('%.0f天',[strtodate(edit2.text) -strtodate(edit1.text)]);
end;
procere TForm1.FormCreate(Sender: TObject);
begin
Edit2.Text:=datetostr(now);
button1click(form1)
end;
C++ Builder源程序:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Edit3->Text=IntToStr(StrToDate(Edit2->Text)-StrToDate(Edit1->Text))+"天";
}
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Edit2->Text=DateToStr(Now());
Button1Click(Form1);
}
執行結果:(運行於Windows下) http://img378.photo.163.com/nxgt/41463572/1219713927.jpg

5.源程序:
main()
{unsigned a,b,c;
printf("請輸入三個整數:");
scanf("%d %d %d",&a,&b,&c);
if(a&&b&&c&&a==b&&a==c)printf("構成等邊三角形\n");
else if(a+b>c&&a+c>b&&b+c>a)
if(a==b||a==c||b==c)printf("構成等腰三角形\n");
else printf("構成一般三角形\n");
else printf("不能構成三角形\n");}
執行結果:
請輸入三個整數:5 6 5
構成等腰三角形
6.源程序:
main()
{int x,y;
scanf("%d",&x);
if(x<20)y=1;
else switch(x/60)
{case 0:y=x/10;break;
default:y=6;}
printf("x=%d,y=%d\n",x,y);}
7.源程序:
main()
{unsigned m;float n;
scanf("%d",&m);
if(m<100)n=0;
else if(m>600)n=0.06;
else n=(m/100+0.5)/100;
printf("%d %.2f %.2f\n",m,m*(1-n),m*n);}
執行結果:
450
450 429.75 20.25
8. 2171天(起始日期和終止日期均算在內)
本題可利用第4小題編好的程序進行計算。把起始日期和終止日期分別打入「生日」和「今日」欄內,單擊「實足年齡」按鈕,將所得到的天數再加上1天即可。
9.源程序:
#include "math.h";
main()
{unsigned long i;
scanf("%ld",&i);
printf("%ld %d\n",i%10,(int)log10(i)+1);}
執行結果:
99887
7 5
10.源程序:
main()
{unsigned long i;unsigned j[10],m=0;
scanf("%ld",&i);
for(;i;){j[m++]=(i+2)%10;i/=10;}
for(;m;m--)i=i*10+j[m-1];
printf("%ld\n",i);}
執行結果:
6987
8109
(註:要加密的數值不能是0或以0開頭。如果要以0開頭需用字元串而不能是整數。)

7 第6章 循環結構程序設計
一、單項選擇題(第142頁)
1-4.BCCB 5-8.CBCA

二、填空題(第143頁)
1.原題可能有誤。如無誤,是死循環 2.原題有誤。如果把b=1後面的逗號改為分號,則結果是8。 3.20 4.11 5. 2.400000 6.*#*#*#$ 7.8 5 2 8.①d=1.0 ②++k ③k<=n 9.①x>=0 ②x<amin

三、編程題(第145頁)
1. 源程序:
main()
{int i=1,sum=i;
while(i<101){sum+=i=-i-2;sum+=i=-i+2;}
printf("%d\n",sum);}
執行結果:
51
2.源程序:
main()
{double p=0,n=0,f;int i;
for(i=1;i<=10;i++)
{scanf("%lf",&f);
if (f>0)p+=f; else n+=f;}
printf("%lf %lf %lf\n",p,n,p+n);}
3.源程序:
main()
{unsigned a;
scanf("%ld",&a);
for (;a;printf("%d,",a%10),a/=10);
printf("\b \n");}
執行結果:
23456
6,5,4,3,2
4.源程序:
main()
{unsigned long a,b,c,i;
scanf("%ld%ld",&a,&b);
c=a%1000;
for(i=1;i<b;i++)c=c*a%1000;
if(c<100)printf("0");
if(c<10)printf("0");
printf("%ld\n",c);}
執行結果:
129 57
009
5.略
6.原題提供的計算e的公式有誤(前面漏了一項1)。正確的公式是e= 1 + 1 + 1/2! + 1/3! + … + 1/n! + …
(1)源程序:
main()
{double e=1,f=1;int n;
for(n=1;n<=20;n++){f/=n;e+=f;}
printf("e=%.14lf\n",e);}
執行結果:
e=2.71828182845905
(2)源程序:
main()
{double e=1,f=1;int n;
for(n=1;f>1e-4;n++){f/=n;e+=f;}
printf("e=%.4f\n",e);}
執行結果:
e=2.7183
7.源程序:
main()
{unsigned long a=0,b=1,c=0;int i,d;
scanf("%d",&d);
for (i=1;i<=(d+2)/3;i++)
printf("%10ld%10ld%10ld",a,b,(a+=b+c,b+=c+a,c+=a+b));}
本題還可以用遞歸演算法(效率很低),源程序如下:
unsigned long fun(int i)
{return i<=3?i:fun(i-1)+fun(i-2)+fun(i-3);}
main()
{int i,d; scanf("%d",&d);
for(i=1;i<=d;i++)
printf("%10ld",fun(i));}
執行結果:
15
1 2 3 6 11 20 37 68
125 230 423 778 1431 2632 4841
8.源程序:
main()
{int i;
for(i=1010;i<=9876;i+=2)
if(i/100%11&&i%100%11&&i/10%100%11&&i/1000!=i%10&&i/1000!=i/10%10&&i/100%10!=i%10)printf(" %d",i);}
執行結果:
1024 1026 1028 1032 1034 1036 …… …… 9874 9876
9.源程序:
main()
{int i,j,k;
printf("apple watermelon pear\n");
for(i=1;i<=100;i++)
for(j=1;j<=10;j++)
if((k=100-i-j)*2==400-i*4-j*40)
printf("%4d%7d%9d\n",i,j,k);}
執行結果:
apple watermelon pear
5 5 90
24 4 72
43 3 54
62 2 36
81 1 18
10.源程序:
#include "stdio.h";
#define N 4 /* N為階數,可以改為其他正整數 */
main()
{int m=N*2,i,j;
for(i=1;i<m;printf("\n"),i++)
for(j=1;j<m;
putchar(N-abs(i-N)<=abs(j++-N)?' ':'*'));}
如果把N值改為5,則執行結果如下:
*
***
*****
*******
*********
*******
*****
***
*

作者:寧西貫通 2006-5-7 23:41 回復此發言

--------------------------------------------------------------------------------

8 說明
注意:上面最後一題的輸出結果應該是由星號組成的一個菱形,

9 第7章 數 組
一、單項選擇題(第192頁)
1-4.BBCC 5-8.AABA

二、填空題(第194頁)
1.1
2
4
8
16
32
64
128
256
512
2. ①a[age]++ ②i=18;i<26
3. ①break ②i==8
4. ①a[i]>b[j] ②i<3 ③j<5
5. ①b[j]=a[j][0] ②b[j]<a[j][k] 6.a[k++]=a[j]

三、編程題(第196頁)
1.源程序:
main()
{int a[4][4],i,j,s=0;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
for(i=0;i<4;i++)
for(j=0;j<4;j++)
if(i==j||i+j==3)s+=a[i][j];
printf("%d\n",s);} /* 注:5×5矩陣不能照此計算! */
執行結果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
68
2. 源程序:
main()
{int i,a[36];
a[0]=2;
for(i=1;i<=29;i++)a[i]=a[i-1]+2;
for(;i<=35;i++)a[i]=a[(i-30)*5+2];
for(i=0;i<=35;i++)printf("%d\t",a[i]);}
執行結果:
2 4 6 8 10 12 14 16 18 20
22 24 26 28 30 32 34 36 38 40
42 44 46 48 50 52 54 56 58 60
6 16 26 36 46 56
3. 源程序:
#include "stdlib.h"
#include "time.h"
main()
{int a[30],i,m=0;
randomize();
for(i=0;i<=29;i++)
{a[i]=rand();
if(m<a[i])m=a[i];
printf("%d\t",a[i]);}
for(i=0;i<=29;i++)if(a[i]==m)a[i]=-1;
printf("\n-----------------\n");
for(i=0;i<=29;i++)
if(~a[i])printf("%d\t",a[i]);
printf("\n");}
執行結果:
20679 29377 18589 9034 27083 4959 3438 5241 32278 23344
32499 29305 22340 5927 13031 2161 2583 31855 22977 14283
4851 22038 6992 11394 20887 27381 6293 18347 16414 10210
-----------------
20679 29377 18589 9034 27083 4959 3438 5241 32278 23344
29305 22340 5927 13031 2161 2583 31855 22977 14283 4851
22038 6992 11394 20887 27381 6293 18347 16414 10210
4.源程序:
main()
{int i,n=0,b[16];
scanf("%d",&i);
for(;i;i>>=1)b[n++]=i&1;
for(;n;)printf("%d",b[--n]);}
執行結果:
9876
10011010010100
本題也可以不用數組。源程序如下:
#include "stdio.h"
main()
{int i,n;
scanf("%d",&i);
for(n=16;n;n--)
{asm ROL i,1
putchar(i&1|48);}
} /* ROL是循環左移的匯編指令 */
5. 源程序:
#include "stdlib.h"
#include "time.h"
#define M 5
#define N 6
main()
{int a[M][N],i,j,t[M];
randomize();
/*生成M行N列隨機數*/
for(i=0;i<M;printf("\n"),t[i++]=0)
for(j=0;j<N;j++)
printf("%4d",a[i][j]=random(50));
/*找出每行的最小數,t[M]是第M行的最小數所在的列數*/
for(i=0;i<M;i++)
for(j=0;j<N;j++)
if(a[i][t[i]]>a[i][j])t[i]=j;
/*比較每個最小數在其所在的列上是否也是最小*/
for(j=0;j<M;j++)
for(i=0;i<M;i++)
{if(i==j)continue;
if(a[j][t[j]]>a[i][t[j]])
{t[j]=-1;break;}
}
printf("-------------------\n");
/*輸出在行和列上均為最小的數*/
for(i=0;i<M;i++)
if(t[i]!=-1)
printf("a[%d,%d]=%d\n",i,t[i],a[i][t[i]]);
}
執行結果:
13 19 13 20 0 1
20 41 6 16 35 30
3 5 37 8 23 15
6 36 24 29 18 1
1 5 28 21 46 34
-------------------
a[0,4]=0
a[1,2]=6
a[3,5]=1
a[4,0]=1
6. 源程序:
#include "stdlib.h"
#include "time.h"
#define M 5
#define N 7
main()
{int a[M][N],i,j,t=0;
randomize();
for(i=0;i<M;i++)
{a[i][N-1]=0;
for(j=0;j<N-1;j++)
{printf("%4d",a[i][j]=random(91)+10);
a[i][N-1]+=a[i][j];}
printf("%4d\n",a[i][N-1]);}
for(i=1;i<M;i++)
if(a[i][N-1]>a[t][N-1])t=i;
if(t)for(j=0;j<N;j++)
{i=a[0][j];a[0][j]=a[t][j];a[t][j]=i;}
printf("-----------------\n");
for(i=0;i<M;printf("\n"),i++)

10 第7章 數 組
for(j=0;j<N;j++)
printf("%4d",a[i][j]);
}
執行結果:
89 17 32 95 35 20 288
39 48 22 27 73 22 231
51 87 39 71 84 46 378
84 94 97 77 27 26 405
69 50 56 89 37 46 347
-----------------
84 94 97 77 27 26 405
39 48 22 27 73 22 231
51 87 39 71 84 46 378
89 17 32 95 35 20 288
69 50 56 89 37 46 347
7. 源程序:
#include "stdlib.h"
#include "time.h"
#define M 5
#define N 6
main()
{int a[M][N],i,j;
struct data{int value,x,y;}max,min;
max.value=0;min.value=100;
randomize();
for(i=0;i<M;printf("\n"),i++)
for(j=0;j<N;j++)
{printf("%4d",a[i][j]=random(100)+1);
if(max.value<a[i][j])
{max.value=a[i][j];max.x=i;max.y=j;}
if(min.value>a[i][j])
{min.value=a[i][j];min.x=i;min.y=j;}
}
printf("-----------------\n");
i=a[0][N-1];a[0][N-1]=max.value;a[max.x][max.y]=i;
i=a[M-1][0];a[M-1][0]=min.value;a[min.x][min.y]=i;
for(i=0;i<M;printf("\n"),i++)
for(j=0;j<N;j++)
printf("%4d",a[i][j]);
}
執行結果:
51 53 74 65 30 40
30 26 50 6 61 27
47 16 54 58 76 19
57 74 44 92 71 48
73 57 60 32 73 67
-----------------
51 53 74 65 30 92
30 26 50 73 61 27
47 16 54 58 76 19
57 74 44 40 71 48
6 57 60 32 73 67
9. 源程序:
main()
{char s[255];int i,j,b=1;
printf("Input a string:");
scanf("%s",s);
i=strlen(s);
for(j=1;j<=i/2;j++)
b=b&&(s[j-1]==s[i-j]);
printf(b?"Yes\n":"No\n");}
執行結果:
Input a string:level
Yes
10. 源程序:
main()
{char s[255],t,max=0,min=0,l,i;
printf("Input a string(length>4):");
gets(s);
l=strlen(s);
for(i=0;i<l;i++)
{if(s[max]<s[i])max=i;if(s[min]>s[i])min=i;}
t=s[1];s[1]=s[max];s[max]=t;if(min==1)min=max;
t=s[l-2];s[l-2]=s[min];s[min]=t;
printf("%s\n",s);}
執行結果:
Input a string(length>4):C++Builder
Cu+Beild+r
11. 源程序:
main()
{char m[13][10]={"****","January","February","March",
"April","May","June","July","August","September",
"October","November","December"};
int i,j,k,a,s,n;
printf("Please input an integer(100..999):");
scanf("%d",&n);
printf("%d:%d+%d+%d=%d, %d%%13=%d, %s\n", n,i,j,k,s,s,a,m[a=((s=(i=n/100)+(j=n/10%10)+(k=n%10))%13)]);}
執行結果:
Please input an integer(100..999):539
539:5+3+9=17, 17%13=4, April

11 第8章 函 數
一、單項選擇題(第241頁)
1-5.BCCAA 6-10.CCDDD 11-15.ACACB

二、填空題(第243頁)
1.看不出原題的意圖。因為要計算1~n的累加和,n應是一個≥1的正整數。可是題目中卻出現了n=0的情況。除非另加規定當n=0時1~n的累加和為0,或者把原題中的計算式改為計算0~n的累加和。據此猜測,原題應填為:①return(0) ②return(n+sum(n-1))
根據題意,如下程序較為合理:
int sum(int n)
{if(n<=0)return(-1); /* -1是出錯標志 */
else if(n==1)return(1);
else return(n+sum(n-1));}
2. ①return(1) ②return(n*facto(n-1))

三、編程題(第244頁)
3.源程序:
main()
{int i,a,b,c;
for(i=100;i<999;i++)
if((a=i/100)*a*a+(b=i/10%10)*b*b+(c=i%10)*c*c==i)
printf("%d\t",i);}
執行結果:
153 370 371 407
8.源程序(非遞歸演算法):
#define P 13 /* P可以改為其他正整數 */
main()
{int a[P],r,c;
for(r=0;r<=P;r++)
{a[r]=1;
for(c=r-1;c>=1;a[c--]+=a[c-1]);
printf("%*d",(P-r)*3+1,a[0]);
for(c=1;c<=r;printf("%6d",a[c++]));
printf("\n");}
}
執行結果:
(應該排列成一個三角形,是貼吧造成現在這個樣子的,不是程序有問題)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
1 10 45 120 210 252 210 120 45 10 1
1 11 55 165 330 462 462 330 165 55 11 1
1 12 66 220 495 792 924 792 495 220 66 12 1
1 13 78 286 715 1287 1716 1716 1287 715 286 78 13 1
9.源程序(遞歸演算法):
#include "stdio.h"
void printOCT(unsigned long n)
{unsigned long i;
if(i=n>>3)printOCT(i);
putchar((n&7)+48);}
main()
{unsigned long i;
scanf("%ld",&i);
printOCT(i);}
執行結果:
1234567890
11145401322
本題也可以不用遞歸演算法,源程序請參考第7章第三題4。

12 回復:【C語言】《C語言程序設計教程(第二版)》習題答案
但是不同時間印刷的版本課後題不太一樣呢,象我們的是1999年12月第2版,2005年12月第69次印刷的。沒有選擇填空,應用題和樓主不知道有多少相同的,因為看不到原題。這個比較麻煩呢。

作者:210.77.204.* 2006-5-9 18:38 回復此發言

--------------------------------------------------------------------------------

13 回復:【C語言】《C語言程序設計教程(第二版)》習題答案
你對照一下主編和出版社,看看對嗎?(見說明的第一條。)
我不是說叫你有問題另發帖子嗎?

14 第9章 指 針
一、單項選擇題(第276頁)
1-5.DCDAC 6-10.CCABC 11-16.AABBB 16-20.DCDBD

二、填空題(第278頁)
1.①int * ②*z
2.*p++
3.①'\0' ②++
4.①q=p+1 ②q<p+10 ③*q>max ④*q<min

三、編程題(第280頁)
7.源程序:
main()
{int i=0;char c[20];
do{scanf("%s",&c);i++;}
while(strcmp(c,"stop"));
printf("%d\n",i);}
執行結果:
This car ran form Nanyang
to Luoyang without a stop
10
9.源程序:
main()
{char s[255],c[255]={0};int i;
gets(s);
for(i=0;s[i];c[s[i++]]++);
for(i=0;i<255;i++)
if(c[i])printf("%c=%d\t",i,c[i]);}
執行結果:
abcedabcdcd
a=2 b=2 c=3 d=3 e=1

❺ 跪求 面向對象程序設計 題目答案

只翻譯出下面幾個,其他的不知道
計算機程序設計基礎 : An Axiomatic Basis for Computer Programming
毛澤東思想概論 :Introction of Mao Zedong Thought
建築畫表現技法
專業實習 Specialized Practice
法律基礎 Fundamentals of Law
法律基礎社會實踐
建築空間解析
建築模型製作 The construction model manufacture
注冊建築師基礎 the basic of registered architect
房地產開發和經營 real estate development and deal in
生態和可持續發展 the Center for Environment and Sustainable Development

❻ 《面向對象程序設計》第05章在線測試

《面向對象程序設計》第05章在線測試
剩餘時間:

59:16
答題須知:1、本卷滿分20分。
2、答完題後,請檔飢一定要單擊下面的「交卷」按鈕交卷,否則無法記錄本試卷的成績。
3、在交卷之前,不要刷新本網頁,否則你的答題結果將會被清空。

第腔蠢告一題、單項選擇題(每題1分,5道題共5分)
1、為了實現兩個復數類對象c1,c2相加c1+c2,下面的語句正確的是(B)
A、class Complex { Complex operator+();} B、class Complex { Complex operator+(Complex &);}
C、class Complex { Complex operator+(Complex, Complex);} D、Complex operator+(Complex &);
2、如果表達式a==b中的「==」是作為普通函數重載的運算符,若採用運算符函數調用格式,則可表示為( C)。
A、a.operator==(b) B、b.operator==(a)
C、operator==(a,b) D、operator==(b,a)
3、如果表達式a++中的「++」是作為普通函數重載的運算符,若採用運算符函數調用格式,則可表示為( D)。
A、a.operator++() B、operator++(a)
C、operator++(a,1) D、operator++(1,a)
4、下面語句聲明類A對象的前綴運算符++的是(D)
A、class A { ++operator();}; B、class A { operator++();};
C、class A { friend operator++();}; D、class A { operator++ (int);};
5、一個程序中數組a和變數k定義為「int a[5][10],k;」,且程序中包含有語句「a(2,5)=++k 3;」,則此語句中肯定屬於重載操作符的是(A )。
A、( ) B、=
C、++ D、

第二題、多項選擇題(每題2分,5道題共10分)
1、在重載一運算符時,若運算符函數的形參表中沒有參數,則可能的情況是( AC)。
A、該運算符是一個單目運算符。
B、該運算符函數有一個隱含的參數this。
C、該運算符函數是類的成員函數。
D、該運算符函數是類的友元函數。
2、關於運算符重載,下列說法錯誤的是(ACD )。
A、所有的運算符都可以重載。
B、通過重載,可以使運算符應用於自定義的數據類型。
C、通過重載,可以創造原來沒有的運算符。
D、通過重載,可以改變運算符的優先順序。
3、在重載一個運算符時,其參數表中沒有任何參數,這表明該運算符不可能是(ACD )。
A、作為友元函數重載的1元運算伍明符
B、作為成員函數重載的1元運算符
C、作為友元函數重載的2元運算符
D、作為成員函數重載的2元運算符
4、下面說法正確的是(AB (這題全靠蒙對的,是很多次。。。))
A、new和del_ete是運算符
B、new和del_ete只能被重載為成員函數,不能重載為友元
C、new和del_ete重載函數不能用static修飾
D、new和del_ete重載函數一定不是靜態成員函數
5、重載del_ete運算符的格式錯誤的是(CD )
A、void * operator del_ete(void );
B、void * operator del_ete(void
,參數表);
C、void * operator del_ete(參數表);
D、void * operator del_ete();
第三題、判斷題(每題1分,5道題共5分)
1、多數運算符可以重載,個別運算符不能重載,運算符重載是通過函數定義實現的。
正確 錯誤T
2、重載雙目運算符+作用於兩個類A對象,重載函數的返回值一定是類A對象。
正確 錯誤F
3、雙目運算符重載為成員函數的時候,一個運算對象由this指針給出,另一個運算對象通過重載運算符的形參傳遞。
正確 錯誤T
4、雙目運算符op重載為A類的成員函數後,表達式「 obj1 op obj2」可以解釋為:operator op(obj1,obj2)。
正確 錯誤F
5、重載比較運算符函數的返回值必須是bool類型。
正確 錯誤T

❼ c++面向對象程序設計第三版清華出版社陳維興版課後習題答案

建立函數模板建立函數模板求數組中
建立函數模板求數組中
最大元素,並調用此模板的完整程序,使得調用時,數組類型可以是整型也可以是雙精度類型

❽ 面向對象程序設計第3章

《面向對象程序設計》第03章在線測試
剩餘時間:

57:18
答題須知:1、本卷滿分20分。
2、答完題後,請一定要單擊下面的「交卷」按鈕交卷,否則無法記錄本野攔念試卷的成績。
3、在交卷之前,不要刷新本網頁,否則你的答題結果將會被清空。

第一題、單項選擇題(每題1分,5道題共5分)
1、假定AA為一個類,a為該類公有的數據成員,若要在該類的一個成員函數中訪問它,則書寫格式為(A )。
A、a B、AA::a
C、a() D、AA::a()
2、在關鍵字public後面定義的成員為類的(B )成員頌困。
A、私有 B、公用
C、保護 D、任何
3、假定 ab 為一個類,則執行 ab x ;語句時將自動調用該類的 ( B) 。
A、有參構造函數 B、無參構造函數
C、拷貝構造函數 D、賦值構造函數
4、一段程序的定義如下,在函數f()中將動態對象的成員n的值改為34的語句應該為 ( C) class A { int n; public: setn(int nl) {n=nl;} A(int x) {n = x; } } int f() {A * ptr = new A(45);... }
A、A.n=34; B、ptr.setn(34);
C、ptr->setn(34); D、setn(34);
5、假定AB為一個類,則執行「AB *p=new AB(1,2);」語句時共調用該類構造函數的次數為(B )。
A、0 B、1
C、2 D、3
第二題、多項選擇題(每題2分,5道題共10分)
1、下列可以作為類的成員的是( ACD)
A、自身類對象的指針
B、自身類對象
C、自身類對象的引用
D、另一個類的對象
2、關於封裝,下列說法中正確的是(ABC )。
A、通過封裝,對象的全部屬性和操作結合在一起,形成一個整體
B、通過封裝,一個對象的實現細節被盡可能地隱藏起來(不可見)
C、通過封裝,每個對象都成為相對獨立的實體
D、通過封裝,對象的屬性都是不可見的
3、定義析構函數時,錯誤的說法是 ( ABD) 。
A、其名與類名完全相同
B、返回類型是 void 類型
C、無形參,也不可重載
D、函數體中必須有 del_ete 語句
4、下面關於靜態數據成員的說法錯誤的是(BCD )
A、靜態數據成員是類的所有對象所共有的
B、靜態數據成員要在構造函數內初始化
C、類的每個對象有自己的靜態數據成員
D、靜態數據成員不能通過類的對象調用
5、下列描述屬於類的成員函數的是(ABD )
A、構造函數
B、析構函數
C、友元函數
D、拷貝構造函數
第三題、判斷題(每題1分,5道題共5分)
1、假定AA為一個類,a為該類公有的數據成員,x為該類的一個對象,則訪問x對象中數據成員a的格式為x->a。 F
正確 錯誤
2、對類中引用成員的初始化是通過構造函數中給出的初始化表實現的。T
正確 錯誤
3、析構函數的作用是在對象被撤銷時收回先前分配的內存空間。T
正確 錯誤
4、使用關衡卜鍵字class 定義的類中預設的訪問許可權是私有private的。T
正確 錯誤
5、當兩個對象之間進行復制時,復制完成後這兩個對象的內容將完全獨立,沒有關聯。 F
正確 錯誤

❾ 《面向對象程序設計》高手進~~~~~~~~~~~~!!

1.三種派生方式:private public protected
private:只允許在派生類的成員函數中訪問基類原有的非私有成員
public:基類中的所有公有成員和保護成員在派生類中認為公有成員和保護 成員,可以通過派生類的成員函數訪問基類中所有非私有成員。還可通過派生類的對象直接訪問基類中的公有成員。
protected:基類中的所有公有成員和保護成員都成了保護成員,只允許派生類的成員函數及派生類的派生類中的成員函數訪問基類的非私有成員,不能通過派生類的對象直接訪問基類的任何成員。
2.派生類不能訪問基類的私有成員。無論那種派生方式都繼承了基類的所有成員,當然也包括私有成員,可以通過調用公有成員函數來訪問和設置私有成員。
3.保護成員的特性:能被該類和繼承類的成員函數訪問。
(基類中的保護成員被公有私有方式繼承後的特性看第一題)
4.派生類的構造函數執行之前必先調用基類的構造函數,建立基類的一個對象,當對象生命周期完結之時,先調用派生類的析構函數釋放其資源,而後調用基類的析構函數。
5.基類中的構造函數和析構函數都不能被繼承。
派生類的構造函數:派生類中的新的或者改造來的成員則需要自己的構造函數,從基類中繼承來的則調用基類的構造函數。其中分隱式調用和顯式調用。析構函數需派生類中重新構造。
6.多重繼承:一個派生類由多個基類派生而來叫做多重繼承。多重繼承時,首先調用所有基類的構造函數,多個基類的構造函數的調用順序按照定義派生類時各基類的排序確定,而後調用派生類的構造函數,析構函數為此逆序。

1.調用函數模板時產生一個實例——模板函數;類模板聲明時所給出的已經確定了數據類型的類成為模板類,也就是說模板類是類模板的實例。
2.先調用模板函數,將具體的參數數據類型替換生成一個具體的函數使用。

❿ c++面向對象程序設計課後第五章第7題

int main()
{
B b1; //先調用基類構造函數A(),使a=0, b=0,再調用子類構造函數b(),使c=0
B b2(1); //先調用基類構造函數A(int i),使a=1, b=0,再調用子類構造函數b(int i),使c=0
B b3(1,3); //先調用基類構造函數A(int i,int j),使a=1, b=3,再調用b(int i,int j),使c=0
B b4(1,3,5); //同理先調用A(int i,int j),使a=1, b=3,再調用b(int i,int j,int k),使c=5
b1.display1(); //先調用基類display()列印a,b的值,然後調用子類函數列印c的值
b2.display1();
b3.display1();
b4.display1();
return 0;
}

閱讀全文

與c面向對象程序設計教程答案陳維興相關的資料

熱點內容
js關閉頁面前提示 瀏覽:147
彩視製作教程 瀏覽:766
聖墟在哪個App看免費 瀏覽:395
網路哪些不能玩 瀏覽:868
probe315使用教程 瀏覽:646
數字電位器程序 瀏覽:198
c代碼整理 瀏覽:104
網路營銷具有什麼優勢 瀏覽:378
右下角網路連接不顯示寬頻連接 瀏覽:940
ps修改tif文件 瀏覽:580
預防醫學如何轉行做大數據 瀏覽:234
pdf文件變藍 瀏覽:309
怎麼在pdf文件上面用k寶簽名 瀏覽:213
如何知道表格里數據後面有空格 瀏覽:720
gee引擎更新系統找不到指定文件 瀏覽:802
貝殼網的數據刪除了如何找回 瀏覽:509
華為榮耀6x怎麼切換網路 瀏覽:418
手機里的pdf文件在哪放 瀏覽:889
java版貪吃蛇畢業論文 瀏覽:989
微信公共號郵箱 瀏覽:415

友情鏈接