设计一个字符串类(class String;),要求尽量模仿C++的class string;而不是封装C-字符串类。

如题,请用C++编写。。。谢谢了... 如题,请用C++编写。。。谢谢了 展开
 我来答
420blorts
2011-07-01 · TA获得超过3223个赞
知道大有可为答主
回答量:7025
采纳率:0%
帮助的人:3906万
展开全部
//
//说明:以下代码在VC++ 6.0下编译通过
//

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;

/********************************************
下面是person,student,teacher三个类的申明
********************************************/

//定义一个表示人的类Person
class person
{
public:
//person类的构造函数
person();

//下面的display为虚函数,用于多态
virtual void display(void);//此函数用于显示类中的成员

void setage(int);//用于设置人的年龄
void setname(char *);//用于设置人的姓名
void setsex(bool);//用于设置人的性别

protected:
int m_age;//此成员变量用于保存人的年龄
char m_name[32];//保存人的姓名
bool m_sex;//保存人的性别,true为男,false为女
};

//定义一个student类,该类是从person类继承过来的
class student:public person
{
public:
//student 的构造函数
student();

virtual void display(void);//用于显示类中的成员

void SetStdNO(char *);//设置学号

void SetMath(float);//设置数学成绩
void SetEnglish(float);//设置英语成绩
void SetPhysics(float);//设置物理成绩
void SetChem(float);//设置化学成绩

float GetAvg(void);//获取平均成绩
float GetSum(void);//获取总成绩

private:
char m_stdNO[32];//保存学号

float m_math;//数学成绩
float m_english;//英语成绩
float m_physics;//物理成绩
float m_chem;//化学成绩
};

//定义一个teacher类,该类也是从person类继承过来的
class teacher:public person
{
public:
//teacher 的构造函数
teacher();

virtual void display(void);//用于显示类中的成员

void SetTTP(char *);//设置职称

private:
char m_TTP[32];//保存职称
};

/********************************************
下面是person,student,teacher三个类的定义
********************************************/

/*************person类的定义开始***************/

//定义person类的构造函数,在这里对成员变量进行初始化
person::person()
{
*m_name = 0;
m_sex = true;
m_age = 0;
};

//定义person类的打印函数,用于打印person类的的成员信息
void person::display()
{
cout<<"从类person中打印出来的......"<<endl<<endl;

cout<<"姓名\t"<<"性别\t"<<"年龄"<<endl;
cout<<"------------------------"<<endl;
cout<<m_name<<"\t"<<(m_sex?"男\t":"女\t")<<m_age<<endl;
cout<<"************************************END*********************************"<<endl<<endl;
};

//定义person类的设置年龄的接口函数
void person::setage(int iAge)
{
m_age = iAge;
};

//定义person类的设置姓名的接口函数
void person::setname(char * pName)
{
strcpy(m_name,pName);
};

//定义person类的设置姓名的接口函数
void person::setsex(bool blSex)
{
m_sex = blSex;
};
/*************person类的定义结束***************/

/*************student类的定义开始***************/

//定义student类的构造函数,用于初始化student的成员变量
student::student()
:person()
{
m_stdNO[0]= 0;
m_math = m_english = m_physics = m_chem = 0;
};

//定义student类的设置学号接口函数
void student::SetStdNO(char * strStdNo)
{
strcpy(m_stdNO,strStdNo);
};

//定义student类的设置数学成绩的接口函数
void student::SetMath(float fMathValue)
{
m_math = fMathValue;
};

//定义student类的设置英语成绩的接口函数
void student::SetEnglish(float fEnglistValue)
{
m_english = fEnglistValue;
};

//定义student类的设置物理成绩的接口函数
void student::SetPhysics(float fPhysicsValue)
{
m_physics = fPhysicsValue;
};

//定义student类的设置化学成绩的接口函数
void student::SetChem(float fChemValue)
{
m_chem = fChemValue;
};

//定义student类得到平均成绩的接口函数
float student::GetAvg(void)
{
return ((m_chem + m_english + m_math + m_physics) /4);
};

//定义student类得到总成绩的接口函数
float student::GetSum(void)
{
return (m_chem + m_english + m_math + m_physics);
};

//定义student类的打印函数,用于打印student类的成员信息
void student::display()
{
cout<<"从类student中打印出来的......"<<endl<<endl;

cout<<"姓名\t"<<"数学\t"<<"英语\t"<<"物理\t"<<"化学\t"<<"平均成绩\t"<<"总成绩"<<endl;
cout<<"----------------------------------------------------------------------"<<endl;
cout<<m_name<<"\t"<<m_math<<"\t"<<m_english<<"\t"<<m_physics<<"\t"<<m_chem<<"\t"<<GetAvg()<<"\t\t"<<GetSum()<<endl;
cout<<"************************************END*********************************"<<endl<<endl;

};

/*************student类的定义结束***************/

/*************teacher类的定义开始***************/
//定义teacher类的构造函数,在这里对成员变量进行初始化
teacher::teacher()
:person()
{
*m_TTP = 0;
};

//定义teacher类的设置职称的接口函数
void teacher::SetTTP(char * ttp)
{
strcpy(m_TTP,ttp);
};

//定义teacher类的打印函数,用于打印teacher类的成员信息
void teacher::display()
{
cout<<"从类teacher中打印出来的......"<<endl<<endl;

cout<<"姓名\t"<<"性别\t"<<"年龄\t"<<"职称"<<endl;
cout<<"----------------------------------"<<endl;
cout<<m_name<<"\t"<<(m_sex?"男\t":"女\t")<<m_age<<"\t"<<m_TTP<<endl;
cout<<"************************************END*********************************"<<endl<<endl;
};
/*************teacher类的定义结束***************/

/***********************************
下面的代码是对上面定义的类的一个测试举例
***********************************/
int main(int argc, char* argv[])
{
person a;//申明一个person对象a
student b;//申明一个student对象b
teacher c;//申明一个teacher对象c

//申明一个person指针
person * p;

//设置person对象的相关信息
a.setname("张三");
a.setage(16);
a.setsex(true);

//设置student对象的相关信息
b.setname("李四");
b.setage(17);
b.setsex(false);
b.SetMath(85);
b.SetEnglish(95);
b.SetPhysics(80);
b.SetChem(90);
b.SetStdNO("S168");

//设置teacher对象的相关信息
c.setname("王五");
c.setage(35);
c.setsex(false);
c.SetTTP("讲师");

//下面演示函数的多态调用
//当指针p指向不同的对象,总能正确调用相应的对象中的display函数,打印出相应的对象信息.

//指针p指向对象a,因为对象a是person对象,person类中的成员函数display将被调用
p = &a;
p->display();

//指针p指向对象b,将打印出studen对象中的信息
p = &b;
p->display();

//指针p指向对象c,将打印出teacher对象中的信息
p = &c;
p->display();
return 0;
};
匿名用户
2011-07-06
展开全部
你好,看过了你的需求。以下是一个示例代码,请参考:

// copyright @ quark
// date: 2010-10-19

#include <iostream>
#include <time.h>

using namespace std;

class GuessManager
{
public:
GuessManager() : m_time(0)
{
// 利用随机数生成目标数字
srand(time(0));
m_targetNumber = rand() % 100 + 1;
}
void Guess()
{
while (true)
{
int guessNumber = 0;
m_time++;

cout<<"输入您要猜的数(1-100):";
cin>>guessNumber;

if (guessNumber<0 || guessNumber >100)
{
cout<<"输入不合法,请重新输入!"<<endl<<endl;
cout<<"输入您要猜的数(1-100):";
cin>>guessNumber;
}

if (guessNumber > m_targetNumber)
{
cout<<guessNumber<<"太大啦!"<<endl<<endl;
}
else if (guessNumber < m_targetNumber)
{
cout<<guessNumber<<"太小啦!"<<endl<<endl;
}
else
{
cout<<"猜对了"<<endl;
cout<<"您总共猜了"<<m_time<<"次"<<endl;
break;
}
}
}
private:
int m_time; // 记录猜数字的次数
int m_targetNumber; // 目标数字
};

int main()
{
GuessManager myGuess;
myGuess.Guess();

system("pause");
}
另外,团IDC网上有许多产品团购,便宜有口碑
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Looky云
2011-07-07
知道答主
回答量:8
采纳率:0%
帮助的人:1.3万
展开全部
您是三班还是四班的?要是朱颖老师的学生,她以前要求做过这个作业的。P311的(5)跟这个差不多
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
韦正海NO1
2011-07-01
知道答主
回答量:36
采纳率:0%
帮助的人:16.6万
展开全部
什么意思?
你是要实现string类?
这个..满大街都是
太简单了吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
郑庆佳zqj
2011-07-01 · TA获得超过219个赞
知道答主
回答量:219
采纳率:0%
帮助的人:165万
展开全部
随便找一下C++STL里面string类的实现代码就copy一下就OK啦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式