国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

C++習題與解析(類和對象-02)

2019-11-17 05:44:19
字體:
來源:轉載
供稿:網友

題 1.5 分析以下程序的執(zhí)行結果
#include<iostream.h>
class Sample
{
public:
int x;
int y;
void disp()
{
cout<<"x="<<x<<",y="<<y<<endl;
}
};

void main()
{
int Sample::*pc;
Sample s;
pc=&Sample::x;
s.*pc=10;
pc=&Sample::y;
s.*pc=20;
s.disp();
}

解:本題說明了類數(shù)據(jù)成員指針的使用方法。在main()中定義的pc是一個指向Sample類數(shù)據(jù)成員的指針。執(zhí)行pc=&Sample::x時,pc指向數(shù)據(jù)成員x,語句s.*pc=10等價于s.x=10(為了保證該語句正確執(zhí)行,Sample類中的x必須是公共成員);執(zhí)行pc=&Sample::y時,pc指向數(shù)據(jù)成員y,語句s.*pc=20等價于s.y=20(同樣,Sample類中的y必須是公共成員)。所以輸出為: x=10,y=20。----------------------------------------------------- 題 1.6 下面是一個類的測試程序,設計出能使用如下測試程序的類。
void main()
{
Test a;
a.init(68,55);
a.PRint();
}

其執(zhí)行結果為:
測試結果:68-55=13

解:本題是要設計Test類,其設計方法很多,這里給出一種解法。Test類包含兩個私有數(shù)據(jù)成員x、y,以及兩個公共成員函數(shù)init()和print(),前者用于給數(shù)據(jù)成員賦值,后者用于x,y的減法運算和輸出相應的結果。
#include<iostream.h>
class Test
{
int x,y;
public:
void init(int,int);
void print();
};

void Test::init(int i,int j)
{
x=i;y=j;
}

void Test::print()
{
cout<<"測試結果:"<<x<<"-"<<y<<"="<<x-y<<endl;
}

注重:類是一個外殼,它包含了類實例化時數(shù)據(jù)和代碼的使用方法,它是一種模板,只有在定義類的對象時,才為對象分配空間,而不會為類分配空間。 ------------------------------------------------------ 題 1.7 設計一個Bank類,實現(xiàn)銀行某賬號的資金往來賬目治理,包括建賬號、存入、取出等。
解:Bank類包括私有數(shù)據(jù)成員top(當前賬指針),date(日期),money(金額),rest(余額)和sum(累計余額)。另有一個構造函數(shù)和三個成員函數(shù)bankin()(處理存入賬),bankout()處理取出賬)和disp() (輸出明細賬)。
本題程序如下:
#include<stdio.h>
#include<string.h>
#define Max 100
class Bank
{
int top;
char date[Max][10]; // 日期
int money[Max]; // 金額
int rest[Max]; // 余額
static int sum; // 累計余額
public:
Bank(){top=0;}
void bankin(char d[],int m)
{
strcpy(date[top],d);
money[top]=m;
sum=sum+m;
rest[top]=sum;
top++;
}
void bankout(char d[],int m)
{
strcpy(date[top],d);
money[top]=-m;
sum=sum-m;
rest[top]=sum;
top++;
}
void disp();
};

int Bank::sum=0;
void Bank::disp()
{
int i;
printf(" 日期存入 取出余額/n");
for(i=0;i<top;i++)
{
printf("%8s",date[i]);

if(money[i]<0)
printf(" %6d",-money[i]);
else
printf("%6d ",money[i]);
printf("%6d/n",rest[i]);
}
}


void main()
{
Bank obj;
obj.bankin("2001.2.5",1000);
obj.bankin("2001.3.2",2000);
obj.bankout("2001.4.1",500);
obj.bankout("2001.4.5",800);
obj.disp();
}

本程序的執(zhí)行結果如下:
日期 存入 取出 余額
2001.2.5 1000 1000
2001.3.2 2000 3000
2001.4.1 500 2500
2001.4.5 800 1700



發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 浙江省| 麻江县| 津市市| 湘西| 北票市| 香河县| 平顶山市| 伊川县| 台前县| 辽阳县| 盐池县| 石景山区| 北票市| 明水县| 余庆县| 梁河县| 阿尔山市| 阿拉尔市| 郧西县| 洪江市| 灵寿县| 嘉禾县| 东兰县| 乐山市| 舟曲县| 泰安市| 尤溪县| 碌曲县| 乐都县| 鄂温| 商水县| 苏州市| 郑州市| 安岳县| 金平| 波密县| 筠连县| 泸州市| 香河县| 色达县| 措美县|