c期末復習參考題_第1頁
c期末復習參考題_第2頁
c期末復習參考題_第3頁
c期末復習參考題_第4頁
c期末復習參考題_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

(-)讀程序題

1.類中包括其他類的對象成員,構(gòu)造函數(shù)中要列出成員對象名帶實參,生成該類對象時,

要先調(diào)用成員對象的構(gòu)造函數(shù)。如果是成員對象的缺省構(gòu)造函數(shù)可以不列,但生成該類對象

時,仍要先調(diào)用成員對象的缺省構(gòu)造函數(shù)。

1.如下程序運行時的輸出結(jié)果是。

#include<iostream.h>

classONE

(

intc;

public:

ONE():c(0){cout?l;}

ONE(intn):c(n){cout?3;}

);

classTWO:publicONE{

ONEonel;

ONEone2;

public:

TWO(intm):one2(m){cout?5;}

);

voidmain()

(

TWOt(2);

)

1135

二.派生類構(gòu)造函數(shù)中要列出基類名帶實參,生成派生類對象時,要先調(diào)用基類的構(gòu)造函數(shù),

再調(diào)用派生類的構(gòu)造函數(shù)。沖突規(guī)則與支配規(guī)則。

2.如下程序運行時的輸出結(jié)果是。

include<iostream.h>

classA{

public:

intx;

A(){x=10;}

A(inti){x=i;}

voidShow(){cout?"x="?x?'\t,?"A\n";}

);

classB{

public:

inty;

B(){y=30;}

B(inti){y=i;}

voidShow(){cout?"y="?y?,\t'?"B\n";}

);

classC:publicA,publicB{

public:

inty;

C(intajntb,intc):A(a),B(b+30){y=c;}

voidShow(){cout?"y="?y?,\t'?"C\n";}

);

voidmain(void){

Ccl(20,30z40);

cl.y=10;

cl.Show();cl.A::Show();cl.B::Show();

)

三.派生類中包含對象成員,構(gòu)造函數(shù)中要列出基類名帶實參,再列出成員對象名帶實參,

生成派生類對象時,要先調(diào)用基類的構(gòu)造函數(shù),再調(diào)用成員對象的構(gòu)造函數(shù),最后調(diào)用派生

類的構(gòu)造函數(shù)。如果是調(diào)用基類或成員對象的缺省構(gòu)造函數(shù)可以不列,但生成派生類對象時,

仍要先調(diào)用基類的缺省構(gòu)造函數(shù),再調(diào)用成員對象的缺省構(gòu)造函數(shù)。構(gòu)造函數(shù)與析構(gòu)函數(shù)調(diào)

用順序相反。

3.如下程序運行時的輸出結(jié)果是。

include<iostream.h>

classA{

public:

A(){cout?"A()\n";

)

~A(){cout<<”~A()\n”;

)

);

classB{

public:

B(){cout?"B()\n";}

~B(){cout?"^B()\n";}

);

classC:publicB,publicA{

Aa;

public:

C(){cout?"C()\n";}

~C(){cout?"-C()\n";}

};

voidmain(){

Cel;

}

4.如下程序運行時的輸出結(jié)果是。

#include<iostream.h>

classA{

public:

A()(

cout<<,A*?endl;

}

};

classT{

Aa;

public:

TO(

cout?,T*?endl;

)

);

classX:publicA(

Tt;

public:

X()(

cout<<,X*?endl;

}

};

voidmain()

(

Xob;

)

*I、r,.

二.虛基類

5.下列程序運行后的輸出結(jié)果是。

#include<iostream.h>

classA{

public:

A(){cout?"A\n";}

~A(){cout?"~A\n";}

);

classB:virtualpublicA{

public:

B():A(){cout?"B\n";}

~B(){cout?H~B\n";}

);

classC:publicvirtualA{

public:

C():A(){cout?"C\n";}

~C(){cout?"~C\n";}

);

classD:publicC,publicB{

public:

D():B(),C(),A(){cout?"D\n";}

~D(){cout?"~D\n";}

);

voidmain()

{Ddl;}

6.下列程序的輸出結(jié)果是。

#include<iostream.h>

classA{

public:

A(){cout?"A\n";}

~A(){cout?"~A\nH;}

};

classB:publicA{

public:

B():A(){cout?"B\n";}

~B(){cout?n~B\n";}

};

classC:publicA{

public:

C():A(){cout?"C\n";}

~C(){cout?"-C\n";}

);

classD:publicC,publicB{

public:

D():B(),C(){cout?"D\n";}

~D(){cout?"~D\n";}

);

voidmain()

{Ddl;}

7.下列程序的輸出結(jié)果是。

#include<iostream.h>

#include<string.h>

classB{

charstr[20];

public:

B(char*s="defaultn){strcpy(str,s);cout?str?endl;}

);

classIhkpublicvirtualB{

charstr1(20];

public:

Ihl(char*sl,char*s2):B(si){strcpy(str1,s2);cout?strl?endl;}

};

classIh2:publicvirtualB{

charstr2[20];

public:

lh2(char*sl,char*s2):B(sl){strcpy(str2,s2);cout?s2?endl;

};

classIh3:publicIhl,publicIh2{

charstr3[20];

public:

Ih3(char*sl,char*s2,char*s3,char*s4):Ihl(sl,s2),Ih2(sl,s3)

{strcpy(str3,s4);cout?str3?endl;}

);

voidmain()

(

Ih3h3(“abc“Jdef',“ghi",“jkl”);

)

四.運行時多態(tài)

8.下列程序的輸出結(jié)果是。

#include<iostream.h>

classA{

public:

virtualvoidfl(){couivv”類A中的fl\nu;}

virtualvoidf2(){coutvv”類A中的f2\nn;}

voidf3(){coutvv”類A中的f3\nM;)

);

classB:publicA{

public:

voidfl(){coutcv”類B中的fl\nu;}

voidf2(int){coutw”類B中的f2\n";}

voidf3(){coutvv”類B中的f3\n";)

);

voidmain(){

Aal,*p;

Bbl;

p=&bl;

p->fl();p->f2();p->f3();

}

9.如下程序運行時的輸出結(jié)果是。

#include<iostream.h>

classA{

public:

virtualvoidf(){cout?l;}

voidg(){cout?2;}

};

classB:publicA{

public:

virtualvoidf(){cout?3;}

voidg(){cout?4;}

);

voidshow(A&a){a.f();a.g();}

voidprint(A*p){p->f();p->g();}

voidmain(){

Bb;

show(b);

print(&b);)

10.如下程序運行時的輸出結(jié)果是。

#include<iostream.h>

#include<string.h>

classP{

public:

P(char*s){

name二newchar[strlen(s)+l];

strcpy(name,s);

)

virtualvoidprint(){

cout?"Iam,,?name?"\n,';

)

?P(){

delete[]name;

)

protected:

char*name;

);

classS:publicP{

public:

S(char*s,doubleg):P(s){

gj=g;

)

voidprint(intk){

cout?name?"isu?gj*k?endl;

)

private:

doublegj;

);

classF:publicP{

public:

F(char*s,intn):P(s){

pub=n;

voidprint(){

cout?name?npublished,'?pub?Mbooks.\nu;

private:

intpub;

);

voidmain()

(

inta=25;

P*p;

Ppers(”Zhang");

Sstud(MWang",3.6);

Fprof(”Li”,4);

p=&pers;

p->print();

p=&stud;

p->print();

p=&prof;

p->print();

stud.print(a);

)

11.如下程序運行時的輸出結(jié)果是。

#include<iostream.h>

classA{

intx,n;

intmul;

public:

A(inta,intb){

x=a;

n=b;

mul=10;

)

virtualintpower(void){

mul=l;

for(inti=l;i<=n;i++)

mul*=x;

returnmul;

)

voidshow(void){

cout?x?'\t'?n?'\t'?mul?endl;

)

);

classB:publicA{

inty,m;

intp;

public:

B(inti,intj,intk,inth):A(i,j){

y=k;

m=h;

P=10;

)

intpower(void){

p=l;

for(inti=l;i<=m;i++)

P*=y;

returnp;

)

voidshow(void){

A::show();

cout?y?'\t"?m?'\t,?p?endl;

)

);

voidfun(A*f){

cout?f->power()?,\n,;

)

voidmain()

(

Aa(4,3),*p;

Bb(2,4,3,3);

p=&a;

fun(p);

p=&b;

fun(p);

b.show();

)

12.如下程序運行時的輸出結(jié)果是。

#include<iostream.h>

classAnimal{

public:

virtualchar*getType(){return“Animal”;}

virtualchar*getVoice(){return"Voice";}

);

classDog:publicAnimal{

public:

char*getType(){return"Dog";}

char*getVoice(){return"Woof";}

);

voidtype(Animal&a){cout?a.getType();}

voidspeak(Animala){cout?a.getVoice();}

voidmain(){

Dogd;type(d);

cout?〃speak";

speak(d);cout?endl;

)

五.友元函數(shù)

13.#include<iostream.h>

classSample)

friendlongfun(Samples);

public:

Sample(longa)

{x=a;}

private:

longx;

);

longfun(Samples){

if(s.x<2)return1;

returns.x*fun(Sample(s.x-1));

)

voidmain()

(

intsum=0;

for(inti=0;i<5;i++)sum+=fun(Sample(i));

cout?sum;

)

六.運算符重載

14.寫出運算符重載函數(shù)調(diào)用形式。

classA{intm,n;

public:

A(intx=0,inty=0){m=x;n=y;}

Aoperator++(){++m;++n;return*this;}

Aoperator++(int){At=*this;++(*this);returnt;}

friendAoperator--(A&t){-t.m;-t.n;returnt;}

friendAoperator--(A&tzint){Atemp=t;

-t.m;-t.n;returntemp;}

voidmain(){A31(1,2),a2(3,4),a3,a4;

a3=++al;//

a4=a2++;//

a3=-al;//

a4=a2-;//

15.寫出運算符重載函數(shù)調(diào)用形式。

classComplex{

intyuan,jiao,fen;

public:

Complex(inty=O,intj=O,intf=0){

yuan=y;jiao=j;fen=f;}

operatorfloat();

);

Complex::operatorfloat(){

floatamount;

amount=(yuan*100.0+jiao*10.0+fen)/100;

returnamount;}

voidmain(){

Complexdl(10,20,30);floatsi;

sl=dl;//)

16.如下程序運行時的輸出結(jié)果是。

定義一個數(shù)組類Array,通過成員函數(shù)重載“+二”運算符,通過友元函數(shù)重載“一二”運算符,

實現(xiàn)數(shù)組的加等、減等運算。具體要求如下:

(1)私有數(shù)據(jù)成員

float*pa;〃表示一維數(shù)組

intn;〃數(shù)組的大小

(2)公有成員函數(shù)

Array(float*p,intx):構(gòu)造函數(shù),以形參初始化數(shù)據(jù)成員;

voidoperator+=(Array&t):實現(xiàn)數(shù)組對象的加等運算;

friendvoidoperator-=(Array&tl,Array&t2):實現(xiàn)數(shù)組對象的減等運算;

voidprint():以每行5個元素的格式輸出數(shù)組;

~Array。:析構(gòu)函數(shù),釋放動態(tài)內(nèi)存。

(3)對所定義的類進行測試。

#include<iostream.h>

classArray{

float*pa;

intn;

public:

Array(float*p,intx){

n=x;

pa=newfloat[n];

for(inti=0;i<n;i++)pa[i]=p[i];//A

}

voidoperator+=(Array&t){for(inti=0;i<n;i++)pa[i]+=t.pa[i];}//B

friendvoidoperator-=(Array&tl,Array&t2){

for(inti=0;i<tl.n;i++)tl.pa[i]-=t2.pa[i];//C

)

voidprint(){

for(inti=0;i<n;i++){

cout?pa[i]?'\t';//D

if((i+l)%5==0)cout?'\n';

)

}

~Array(){delete[]pa;}

);

voidmain(){

floata[10]={l,2,3,4,5,6,7,8,9,10},b[10]={0,l,2/3,4,5,6,7,8,9};

Arrayal(a,10),a2(b,10);

al+=a2;

al.print();

al-=a2;

al.print();

一、函數(shù)編程

1.求素數(shù)問題:定義函數(shù)判斷一個整數(shù)是否為素數(shù),求300以內(nèi)的素數(shù),每行3個數(shù)形式輸

出。

2.最大公約數(shù)和最小公倍數(shù)問題:求兩分數(shù)之和并輸出結(jié)果,要求:將求最小公倍數(shù)和最大

公約數(shù)設(shè)計成獨立的函數(shù)。(提醒:分子、分母可分別用兩個整型變量表示。之和的分母就

是兩分數(shù)分母的最小公倍數(shù);輸出示例:cout<<3<<7”<<7;就完成了分數(shù)切的輸出顯示。)

3.-?維數(shù)組排序與元素移動綜合題:(1)定義整型數(shù)組a[10],從鍵盤輸入10個數(shù)為數(shù)組賦

值,并分別定義兩個獨立函數(shù),voidprint(intb[])實現(xiàn)將一維數(shù)組元素輸出,voidsort(intb[],int

n)實現(xiàn)將一維數(shù)組的元素按從小到大排序(用兩種方法實現(xiàn))。最后在主函數(shù)中分別調(diào)用兩

個函數(shù)。

4.二維數(shù)組與元素移動:

(1)定義一個二維數(shù)組intb[2][3],從鍵盤輸入為二維數(shù)組賦值,將二維數(shù)組中按列循環(huán)前

移或后移一位,并以矩陣形式輸出二維數(shù)組元素。

(2)定義一個二維數(shù)組,inta⑷⑷,求其外圍元素之和與對角線之和,并以矩陣形式輸出二

維數(shù)組元素。(求和用兩種方法實現(xiàn))

5.字符串處理:設(shè)計一個通用函數(shù)實現(xiàn)在字符串si中從第m個字符開始插入字符串S2,在

主程序中對該函數(shù)進行測試。

初始狀態(tài):si:abcdefg

s2:1234

輸入插入字符串的位置:3

目標狀態(tài):si:abl234cdefg

$2:1234

#include<iostream.h>

#include<string.h>

voidfun(char*sl,char*s2,intm)

(

chart[100];

strcpy(t,sl+m-l);

strcat(s2,t);

sl[m-l]=0;

strcat(sl,s2);

voidmain()

charsni00]=,bcdefg,s2[100]="1234“;

fun(sl,s2,3);

cout?sl?endl;

)

6.拼數(shù)與合數(shù)問題:

⑴在主函數(shù)中定義一個一維數(shù)組a[4]用來存放4個整型數(shù)3,12,0,1,并依次輸出一維數(shù)

組中的元素。

(2)依次取出數(shù)組中的元素,利用合數(shù)算法將這些元素合成一個數(shù),要求合數(shù)的過程寫成獨

立函數(shù)的形式,編寫intfun(intb[],intn)函數(shù),其中b為一維數(shù)組,n為b數(shù)組中包含的元素

個數(shù)。該函數(shù)用來實現(xiàn)合數(shù)過程,并在主函數(shù)中調(diào)用該函數(shù),并在主函數(shù)中輸出合成之后的

數(shù)。

#include<iostream.h>

#include<string.h>

intfun(intb[],intn)

(

ints=0;

for(inti=0;i<n;i++)

(

intt=b[i];

while(t)

(

s=s*10;

t=t/10;

)

if(b[i]==0)

s=s*10;

s=s+b[i];

)

returns;

)

voidmain()

(

inta[]={ll,12,l,l};

cout?fun(a,4)?endl;

}

7.數(shù)字字符與整數(shù)轉(zhuǎn)換算法:將字符串#ab78cl5fk23d*中整型數(shù)據(jù)提取出來,合成一個整型數(shù)

781523并輸出來。再將781523整數(shù)的各個數(shù)位數(shù)字拆開存放到一維數(shù)組intb[10]中,并將

一維數(shù)組中的元素轉(zhuǎn)換為數(shù)字字符存放到字符數(shù)組s[100]中,并輸出該數(shù)字字符串"325187".

#include<iostream.h>

#include<string.h>

intget(char*s)

intt=0;

while(*s)

(

if(*s>='0'&&*s<=,9,)

t=t*10+*s-'0,;

s++;

)

returnt;

)

voidfun(intmjntb[])

(

inti=0;

while(m)

(

b[i++]=m%10;

m=m/10;

)

)

voidfunl(intb[],chars[])

(

for(inti=0;i<sizeof(b)/sizeof(int);i++)

(

s[i]=b[i]+'O';

}

s[i]=0;

cout?s?endl;

)

voidmain()

(

chars[]="#ab78cl5fk23d*H;

cout?get(s)?endl;

intb[10]={0};

fun(get(s),b);

for(inti=0;i<10;i++)

if(b[i])

cout?b[i]?'\t';

funl(b,s);

cout?s?endl;

)

8.字符數(shù)組:

⑴定義一個字符數(shù)組chars[100]={"abcl23"};定義兩個函數(shù)分別實現(xiàn)將字符串逆序排序和按

照字符的ASCII碼從小到大排序,輸出并操作后的字符串。

⑵定義兩個字符數(shù)組:charsl[100]="apple",s2[100]={"tree"};將兩個字符數(shù)組拼接成一個字符

串(不用拼接函數(shù)),并輸出拼接前和拼接后的兩個字符串。

10、循環(huán)結(jié)構(gòu):請從鍵盤輸入一個正整數(shù),求這個數(shù)是幾位數(shù),并求出該正整數(shù)的各個位上

的數(shù)字之和。如輸入1234,該正整數(shù)是4位數(shù),各個數(shù)位上的數(shù)字之和為10.

#include<iostream.h>

#include<string.h>

voidmain()

(

intm;

intc=0,s=0;

cin?m;

while(m)

(

s=s+m%10;

C++;

m=m/10;

}

cout?c?endl;

cout?s?endl;

)

11、從鍵盤上輸入一個整數(shù)n的值,按下式求出v的值,并輸出n和y的值。y=l!+2!+3!+—

+n!

12、求1-V2+1^-1A+.......+通9-1/100的和。

13、求1+求1!+1/2!+......+310!的和

14、從鍵盤輸入一個整數(shù)n,將該整數(shù)的每一位上的數(shù)字拆開,存放到一維數(shù)組inta[10]中,

該過程用獨立函數(shù)形式實現(xiàn)。并將一維數(shù)組中的元素取出合成一個數(shù),并輸出合成的數(shù)和一

維數(shù)組元素。如n:1234,存放到一維數(shù)組中的順序為4321,合成一個數(shù)為4321。

二、類的編程:

用類解決實際問題的方法分三個步驟,如下:

1、定義類的框架

2、公有成員函數(shù)的實現(xiàn)

3、在主函數(shù)中測試類(用類定義對象,并用對象調(diào)用成員函數(shù))

(-)數(shù)據(jù)成員為一維數(shù)組時

問題描述如下:

(1)定義一個類Array,它的數(shù)據(jù)成員和成員函數(shù)如下:

私有數(shù)據(jù):intb[10],intm;

公有成員函數(shù):Array(intt口);〃功能為一維數(shù)組b初始化

Voidfun();//求一維數(shù)組b的最大值為m

voidsort();〃功能為實現(xiàn)對--維數(shù)組從大到小排序

voidmove();//功能為將一維數(shù)組元素循環(huán)后移一位

voidprint();〃功能為輸出一維數(shù)組元素

(2)用類定義對象arr,并用對象arr調(diào)用成員函數(shù),實現(xiàn)對一維數(shù)組元素排序和數(shù)組元素

循環(huán)后移一位,并輸出每次操作的結(jié)果。

#include<string.h>

#include<iostream.h>

classArray{

intb[10],intm;

public:

Array(intt口)〃功能為一維數(shù)組b初始化

(

for(inti=0;i<10;i++)

b[i]=t[i];

)

voidfun()//求一維數(shù)組b的最大值為m

(

m=b[0];

for(inti=0;i<10;i++)

(

if(m<b[i])

m=b[i];

)

)

voidsort()〃功能為實現(xiàn)對一維數(shù)組從大到小排序

(

for(inti=0;i<9;i++)

for(intj=i+l;j<10;j++)

if(b[i]>bQ])

(

intt=b[i];

b[i]=b[j];

b[jj=t;

}

)

voidmove()//功能為將一維數(shù)組元素循環(huán)后移一位

(

intt=b[9];

for(inti=9;i>0;i-)

b[i]=b[i-l];

b[O]=t;

}

voidprint()〃功能為輸出一維數(shù)組元素

(

cout?m?endl;

for(inti=0;i<10;i++)

cout?b[i]?'\t';

cout?endl;

)

);

voidmain()

(

inta[10]={5,6,2,4,8,23,87,4,55};

Arrayarr(a);

arr.fun();

arr.print();

arr.sort();

arr.print();

arr.move();

arr.print();

)

(二)數(shù)據(jù)成員為二維數(shù)組時

1、問題描述如下:

(1)定義一個類Array,它的數(shù)據(jù)成員和成員函數(shù)如下:

私有數(shù)據(jù):inta[4][5];ints;

公有成員函數(shù):Array(intt[][5]);〃功能為二維數(shù)組b初始化

voidsum();//功能為求二維數(shù)組b外圍元素之和為s

voidfun();〃對二維數(shù)組b按列前移

voidprint();〃功能為以矩陣形式輸出二維數(shù)組元素

(2)用類定義對象array,并用對象array調(diào)用成員函數(shù)求出二維數(shù)組外圍元素之和,按列

前移,再求二維數(shù)組外圍元素之和,輸出二維數(shù)組元素。

#include<iostream.h>

#include<string.h>

classArray{

inta[4][5];ints;

public:

Array(intt[]⑸)〃功能為二維數(shù)組b初始化

(

for(inti=0;i<4;i++)

for(intj=0;j<5;j++)

a[i]0]=t[i]0];

s=0;

}

voidsum()//功能為求二維數(shù)組b外圍元素之和為s

(

for(inti=0;i<4;i++)

for(intj=0;j<5;j++)

if(i==0||i==3||j==0||j==4)

s=s+a[i][j];

)

voidfun()〃對二維數(shù)組b按列前移

for(inti=0;i<4;i++)

intt=a[i][O];

for(intj=0;j<4;j++)

a[i]U]=a[i][j+l];

a[i][4]=t;

)

voidprint?!üδ転橐跃仃囆问捷敵龆S數(shù)組元素

(

cout?s?endl;

for(inti=0;i<4;i++)

(

for(intj=0;j<5;j++)

cout?a[i][j]?'\t';

cout?endl;

);

voidmain()

inta[4][5]={{l,2,3,4,5)42,2,2,2,2},{5,8,6,2,45)41,1,1,14}};

Arrayarray(a);

array.print();

array.sum();

array.fun();

array.print();

2、問題描述如下:

(1)定義一個類Array,它的數(shù)據(jù)成員和成員函數(shù)如下:

私有數(shù)據(jù):intb[4][4];ints;

公有成員函數(shù):Array(int功能為二維數(shù)組b初始化

voidsum();//功能為求二維數(shù)組b對角線元素之和為s

voidfun();〃將二維數(shù)組b最小元素所在的列與第0列對調(diào)

voidprint();〃功能為以矩陣形式輸出二維數(shù)組元素

(2)用類定義對象array,并用對象array調(diào)用成員函數(shù)求出二維數(shù)組對角線元素之和,對

調(diào)最小元素所在的列與第0歹U,輸出二維數(shù)組元素。

#include<string.h>

#include<iostream.h>

classArray〃它的數(shù)據(jù)成員和成員函數(shù)如下:

(

intb[4][4];ints;

public:

Array(intt口⑷)〃功能為二維數(shù)組b初始化

for(inti=0;i<4;i++)

for(intj=0;j<4;j++)

b[i]Ul=t[i][j];

)

voidsum()//功能為求二維數(shù)組b對角線元素之和為s

(

s=b[0][0]+b[l][l]+b[2][2]+b[3][3];

)

voidfun()

〃將二維數(shù)組b最小元素所在的列與第0列對調(diào)

(

intmin=b[0][0];

intt=0;

for(inti=0;i<4;i++)

for(intj=0;j<4;j++)

(

if(min>b[i][j])

(

min=b[i][j];

t=j;

)

)

for(i=0;i<4;i++)

(

intm=b[i][0];

b[i][O]=b[i][t];

b[i][t]=m;

)

)

voidprint()〃功能為以矩陣形式輸出二維數(shù)組元素

{

cout?s?endl;

for(inti=0;i<4;i++)

(

for(intj=0;j<4;j++)

cout?b[i][j]?'\t';

cout?endl;

)

}

};

voidmain()

intb[4][4]={{3/3,33L(5/5,5,0}z{6,6,6,6}z{8,8,8,8}};

Arrayarray(b);

array.print();

array.fun();

array.sum();

array.print();

)

(三)數(shù)據(jù)成員為字符數(shù)組時

問題描述如下:

定義一個字符串類String,將字符串b拼接到字符串a(chǎn)中,(不能用拼接函數(shù))。具體要求如下:

(1)私有數(shù)據(jù)成員

chara[100],b[100];

⑵公有成員函數(shù)

Stringfcharc[],chard[]):構(gòu)造函數(shù),用參數(shù)初始化數(shù)據(jù)成員

voidfun():功能函數(shù),實現(xiàn)將b拼接到a的后面

voidinsert(intm);實現(xiàn)將字符數(shù)組b中的字符串插入到字符數(shù)組a中的第m個字符的位置。

voidshow。:功能函數(shù),輸出數(shù)據(jù)成員

(3)用數(shù)據(jù)"123456789","abc"在主函數(shù)中對類測試。

#include<string.h>

#include<iostream.h>

classString〃將字符串b拼接到字符串a(chǎn)中,(不能用拼接函數(shù))。具體要求如下:

(

chara[100]zb[100];

public:

String(charc口,chard。)〃構(gòu)造函數(shù),用參數(shù)初始化數(shù)據(jù)成員

(

strcpy(a,c);

strcpy(b,d);

)

voidfun()〃功能函數(shù),實現(xiàn)將b拼接到a的后面

(

char*t=a,*s=b;

while(*t)

t++;

while(*s)

(

*t=*s;

t++;

S++;

}

*t=0;

voidinsert(intm)〃;實現(xiàn)將字符數(shù)組b中的字符串插入到字符數(shù)組a中的第m個字符的位置。

char*t=a+m;

char*s=b;

charc[100];

strcpy(c,t);

while(*s)

(

*t=*s;

t++;

S++;

)

char*n=c;

while(*n)

(

*t++=*n++;

)

*t=0;

)

voidshow()〃:功能函數(shù),輸出數(shù)據(jù)成員

{

cout?a?endl;

cout?b?endl;

)

};

voidmain()

{

Stringtest("123456789","abc");

test.insert(3);

test.show();

)

(四)數(shù)據(jù)成員為指針變量時

1、定義一個字符串類String,為指針變量p動態(tài)申請空間,并初始化。對p所指向的字符串

進行逆序操作。具體要求如下:

(1)私有數(shù)據(jù)成員

char*p;

(2)公有成員函數(shù)

String(char*t):構(gòu)造函數(shù),用參數(shù)初始化數(shù)據(jù)成員

voidfun。:功能函數(shù),實現(xiàn)對字符串進行逆序。

voidshow。:功能函數(shù),輸出數(shù)據(jù)成員

~String();析構(gòu)函數(shù),撤銷對象。

(3)用數(shù)據(jù)“123456789”在主函數(shù)中對類測試。

#include<string.h>

#include<iostream.h>

classString〃為指針變量p動態(tài)申請空間,并初始化。對p所指向的字符串進行逆序操作。

具體要求如下:

{

char*p;

public:

String(char*t)〃構(gòu)造函數(shù),用參數(shù)初始化數(shù)據(jù)成員

(

p=newchar[strlen(t)+l];

strcpy(p,t);

}

voidfun()〃:功能函數(shù),實現(xiàn)對字符串進行逆序。

(

char*sl=p,*s2=p;

while(*s2)

s2++;

s2-;

while(sl<s2)

(

chart=*sl;

*sl=*s2;

*s2=t;

sl++;

s2-;

)

)

voidshow()〃:功能函數(shù),輸出數(shù)據(jù)成員

(

cout?p?endl;

)

~String()〃;析構(gòu)函數(shù),撤銷對象。

(

delete[]p;

)

);

〃用數(shù)據(jù)"123456789"在主函數(shù)中對類測試。

voidmain()

{

Stringtest("123456789");

test.fun();

test.show();

)

2、定義一個類名為Array,為指針變量p動態(tài)申請空間,并初始化。對p所指向的一維數(shù)組

逆序排序。具體要求如下:

(1)私有數(shù)據(jù)成員

int*p;

(2)公有成員函數(shù)

Array(int*

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論