关于C++的一个简单的题目,急求
二、面向对象编程(50分)【题目要求】1.按以下描述和要求建立一个类Course,完善类中所有成员函数的代码。执行主函数对其测试。按每个函数的完成情况得分。Course私...
二、面向对象编程 (50分)
【题目要求】1. 按以下描述和要求建立一个类Course,完善类中所有成员函数的代码。执行主函数对其测试。按每个函数的完成情况得分。
Course
私有成员
char Num[10]; //课程代码
char *Name; //课程名称
int Hour; //课时数
int Credit; //学分数
公有成员
Course(char *nu=0, char *na=0,int h=0, int c=0);
//带缺省值的构造函数。
Course (Course &c); //拷贝构造函数
~ Course (); //析构函数,释放分配的内存
void set (char *na,int h,int c); //修改课程名称、课时、学分
void display(); //输出课程信息(各数据成员的值)
Course operator ++(int); //后置自增的运算符重载,要求课时数加16,学分加1。
2. 头文件包含语句为:
#include <iostream.h>
#include <string.h>
3. 测试数据:
对象A:"990001", "C++程序设计(上)", 64, 4
对象B:"990002", "C++程序设计(下)", 64, 4
对象C:由对象A拷贝生成。
4. 测试程序的主函数为:
void main()
{
Course A("990001", "C++程序设计(上)", 64, 4), B("990002", "C++程序设计(下)", 64, 4),C(A);
A.display();
B.display();
C.display();
A++;
A.display();
B.set("C++程序设计(下)(非电)", 80, 5);
B.display();
}
【相关提示】包含<string.h>头文件可使用串复制函数strcpy(),求串长度函数strlen()。指针成员需要动态分配内存。
【注意事项】 将源程序以文件名“学号_2.cpp”存入Z盘自己的文件夹中。 展开
【题目要求】1. 按以下描述和要求建立一个类Course,完善类中所有成员函数的代码。执行主函数对其测试。按每个函数的完成情况得分。
Course
私有成员
char Num[10]; //课程代码
char *Name; //课程名称
int Hour; //课时数
int Credit; //学分数
公有成员
Course(char *nu=0, char *na=0,int h=0, int c=0);
//带缺省值的构造函数。
Course (Course &c); //拷贝构造函数
~ Course (); //析构函数,释放分配的内存
void set (char *na,int h,int c); //修改课程名称、课时、学分
void display(); //输出课程信息(各数据成员的值)
Course operator ++(int); //后置自增的运算符重载,要求课时数加16,学分加1。
2. 头文件包含语句为:
#include <iostream.h>
#include <string.h>
3. 测试数据:
对象A:"990001", "C++程序设计(上)", 64, 4
对象B:"990002", "C++程序设计(下)", 64, 4
对象C:由对象A拷贝生成。
4. 测试程序的主函数为:
void main()
{
Course A("990001", "C++程序设计(上)", 64, 4), B("990002", "C++程序设计(下)", 64, 4),C(A);
A.display();
B.display();
C.display();
A++;
A.display();
B.set("C++程序设计(下)(非电)", 80, 5);
B.display();
}
【相关提示】包含<string.h>头文件可使用串复制函数strcpy(),求串长度函数strlen()。指针成员需要动态分配内存。
【注意事项】 将源程序以文件名“学号_2.cpp”存入Z盘自己的文件夹中。 展开
3个回答
展开全部
#include <iostream.h>
#include <string.h>
using namespace std ;
class Course
{
private:
char Num[10];//课程代码
char *Name;//课程名称
int Hour;//课时数
int Credit;//学分数
public:
Course (char *nu, char *na,int h, int c);//带缺省值的构造函数。
Course (Course &c);//拷贝构造函数
~ Course ();//析构函数,释放分配的内存
void set (char *na,int h,int c);//修改课程名称、课时、学分
void display();//输出课程信息(各数据成员的值)
Course operator ++(int);//后置自增的运算符重载,要求课时数加16,学分加1。
} ;
Course :: Course(char *nu=NULL, char *na=NULL,int h=0, int c=0)//带缺省值的构造函数。
{
strcpy(Num,nu) ;
int len=strlen(na) ;
Name=new char[len] ;
strcpy(Name,na) ;
Hour=h ;
Credit=c ;
}
Course :: Course(Course &c)//拷贝构造函数
{
strcpy(Num,c.Num) ;
int len=strlen(c.Name) ;
Name=new char[len] ;
strcpy(Name,c.Name) ;
Hour=c.Hour ;
Credit=c.Credit ;
}
Course :: ~ Course ()//析构函数,释放分配的内存
{
delete []Name ;
}
void Course :: set (char *na,int h,int c)//修改课程名称、课时、学分
{
int len=strlen(na) ;
Name=new char[len] ;
strcpy(Name,na) ;
Hour=h ;
Credit=c ;
}
void Course :: display()//输出课程信息(各数据成员的值)
{
cout<<Num<<endl ;
cout<<Name<<endl ;
cout<<Hour<<endl ;
cout<<Credit<<endl ;
}
Course Course :: operator ++(int)//后置自增的运算符重载,要求课时数加16,学分加1。
{
Hour+=16 ;
Credit+=1 ;
return *this ;
}
-------------------------------------------------------------
一点点小问题:
1.我编译的时候Course A("990001", "C++程序设计(上)", 64, 4)不合法,编译器认为不能将"990001"等字符串转化为char *。这是编译器的问题,应该没问题吧。
2.我的头文件里没有<iostream.h>只有<iostream>。这是C++版本的问题,请放心使用
#include <string.h>
using namespace std ;
class Course
{
private:
char Num[10];//课程代码
char *Name;//课程名称
int Hour;//课时数
int Credit;//学分数
public:
Course (char *nu, char *na,int h, int c);//带缺省值的构造函数。
Course (Course &c);//拷贝构造函数
~ Course ();//析构函数,释放分配的内存
void set (char *na,int h,int c);//修改课程名称、课时、学分
void display();//输出课程信息(各数据成员的值)
Course operator ++(int);//后置自增的运算符重载,要求课时数加16,学分加1。
} ;
Course :: Course(char *nu=NULL, char *na=NULL,int h=0, int c=0)//带缺省值的构造函数。
{
strcpy(Num,nu) ;
int len=strlen(na) ;
Name=new char[len] ;
strcpy(Name,na) ;
Hour=h ;
Credit=c ;
}
Course :: Course(Course &c)//拷贝构造函数
{
strcpy(Num,c.Num) ;
int len=strlen(c.Name) ;
Name=new char[len] ;
strcpy(Name,c.Name) ;
Hour=c.Hour ;
Credit=c.Credit ;
}
Course :: ~ Course ()//析构函数,释放分配的内存
{
delete []Name ;
}
void Course :: set (char *na,int h,int c)//修改课程名称、课时、学分
{
int len=strlen(na) ;
Name=new char[len] ;
strcpy(Name,na) ;
Hour=h ;
Credit=c ;
}
void Course :: display()//输出课程信息(各数据成员的值)
{
cout<<Num<<endl ;
cout<<Name<<endl ;
cout<<Hour<<endl ;
cout<<Credit<<endl ;
}
Course Course :: operator ++(int)//后置自增的运算符重载,要求课时数加16,学分加1。
{
Hour+=16 ;
Credit+=1 ;
return *this ;
}
-------------------------------------------------------------
一点点小问题:
1.我编译的时候Course A("990001", "C++程序设计(上)", 64, 4)不合法,编译器认为不能将"990001"等字符串转化为char *。这是编译器的问题,应该没问题吧。
2.我的头文件里没有<iostream.h>只有<iostream>。这是C++版本的问题,请放心使用
--
2022-12-05 广告
2022-12-05 广告
图形化编程简单理解为用积木块形式编程,scratch和python也是其中的一种,属于入门级编程,以其简单生动的画面获得无数学生的喜爱,深圳市创客火科技有限公司是一家做教育无人机的公司,旗下有编程无人机,积木无人机及室内外编队,每款飞机含有...
点击进入详情页
本回答由--提供
展开全部
少年,别急, 你再看看我这个?
#include <iostream>
#include <string.h>
using namespace std;
class Course
{
static const int StepHour = 0x10;
static const int StepCred = 0x01;
static const int NumLen = 0x0a;
private:
char Num[NumLen];
char* Name;
int Hour;
int Credit;
public:
Course(const Course& c);
Course(char* nu = NULL, char* na = NULL, int h = 0, int c = 0);
~Course();
void set(char* na, int h, int c);
void display();
Course operator ++ (int);
};
Course::Course( const Course& c )
{
strcpy(Num, c.Num);
int len = strlen(c.Name);
Name = new char[len + 1];
strcpy(Name, c.Name);
Hour = c.Hour;
Credit = c.Credit;
}
Course::Course( char* nu /*= NULL*/, char* na /*= NULL*/, int h /*= 0*/, int c /*= 0*/ )
: Hour(h)
, Credit(c)
{
for (int i=0; i<NumLen; ++i)
Num[i] = '\0';
if ( nu )
{
strncpy(Num, nu, NumLen);
}
if ( na )
{
int len = strlen(na);
Name = new char[len + 1];
strcpy(Name, na);
}
else
{
Name = new char[1];
Name[0] = '\0';
}
}
Course::~Course()
{
if ( Name )
{
delete [] Name;
}
}
void Course::set( char* na, int h, int c )
{
delete [] Name;
if ( na )
{
int len = strlen(na);
Name = new char[len + 1];
strcpy(Name, na);
}
else
{
Name = new char[1];
Name[0] = '\0';
}
Hour = h;
Credit = c;
}
void Course::display()
{
cout<<"课程编号:\t"<<Num<<endl;
cout<<"课程名称:\t"<<Name<<endl;
cout<<"课时:\t\t"<<Hour<<endl;
cout<<"学分:\t\t"<<Credit<<endl<<endl;
}
Course Course::operator++( int )
{
Course temp(*this);
Hour += StepHour;
Credit += StepCred;
return temp;
}
int main()
{
Course A("990001", "C++程序设计(上)", 64, 4), B("990002", "C++程序设计(下)", 64, 4), C(A);
A.display();
B.display();
C.display();
A++;
A.display();
B.set("C++程序设计(下)(非电)", 80, 5);
B.display();
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
完整程序
#include <iostream.h>
#include <string.h>
using namespace std;
class Course
{
private:
char Num[10]; //课程代码
char *Name; //课程名称
int Hour; //课时数
int Credit; //学分数
public:
Course(char *nu=0, char *na=0,int h=0, int c=0); //带缺省值的构造函数。
Course (Course &c); //拷贝构造函数
~ Course (); //析构函数,释放分配的内存
void set (char *na,int h,int c); //修改课程名称、课时、学分
void display(); //输出课程信息(各数据成员的值)
Course operator ++(int); //后置自增的运算符重载,要求课时数加16,学分加1。
};
Course::Course(char *nu, char *na,int h, int c)
{
if(nu) strcpy(Num, nu);
else Num[0] = 0;
if(na)
{
Name = new char[strlen(na) + 1];
strcpy(Name, na);
}
else Name = NULL;
Hour = h;
Credit = c;
}
Course::Course (Course &c)
{
if(c.Num) strcpy(Num, c.Num);
else Num[0] = 0;
if(c.Name)
{
Name = new char[strlen(c.Name) + 1];
strcpy(Name, c.Name);
}
else Name = NULL;
Hour = c.Hour;
Credit = c.Credit;
}
Course::~ Course ()
{
if(Name) delete [] Name;
}
void Course::set (char *na,int h,int c)
{
if(na)
{
if(Name)delete[]Name;
Name = new char[strlen(na) + 1];
strcpy(Name, na);
}
else Name = NULL;
Hour = h;
Credit = c;
}
void Course::display()
{
cout << "课程代码:" << Num << endl;
cout << "课程名称:" << Name << endl;
cout << "课时数:" << Hour << endl;
cout << "学分数:" << Credit << endl;
}
Course Course::operator ++(int)
{
Hour += 16;
Credit ++;
return *this;
}
void main()
{
Course A("990001", "C++程序设计(上)", 64, 4), B("990002", "C++程序设计(下)", 64, 4),C(A);
A.display();
B.display();
C.display();
A++;
A.display();
B.set("C++程序设计(下)(非电)", 80, 5);
B.display();
}
测试输出
课程代码:990001
课程名称:C++程序设计(上)
课时数:64
学分数:4
课程代码:990002
课程名称:C++程序设计(下)
课时数:64
学分数:4
课程代码:990001
课程名称:C++程序设计(上)
课时数:64
学分数:4
课程代码:990001
课程名称:C++程序设计(上)
课时数:80
学分数:5
课程代码:990002
课程名称:C++程序设计(下)(非电)
课时数:80
学分数:5
#include <iostream.h>
#include <string.h>
using namespace std;
class Course
{
private:
char Num[10]; //课程代码
char *Name; //课程名称
int Hour; //课时数
int Credit; //学分数
public:
Course(char *nu=0, char *na=0,int h=0, int c=0); //带缺省值的构造函数。
Course (Course &c); //拷贝构造函数
~ Course (); //析构函数,释放分配的内存
void set (char *na,int h,int c); //修改课程名称、课时、学分
void display(); //输出课程信息(各数据成员的值)
Course operator ++(int); //后置自增的运算符重载,要求课时数加16,学分加1。
};
Course::Course(char *nu, char *na,int h, int c)
{
if(nu) strcpy(Num, nu);
else Num[0] = 0;
if(na)
{
Name = new char[strlen(na) + 1];
strcpy(Name, na);
}
else Name = NULL;
Hour = h;
Credit = c;
}
Course::Course (Course &c)
{
if(c.Num) strcpy(Num, c.Num);
else Num[0] = 0;
if(c.Name)
{
Name = new char[strlen(c.Name) + 1];
strcpy(Name, c.Name);
}
else Name = NULL;
Hour = c.Hour;
Credit = c.Credit;
}
Course::~ Course ()
{
if(Name) delete [] Name;
}
void Course::set (char *na,int h,int c)
{
if(na)
{
if(Name)delete[]Name;
Name = new char[strlen(na) + 1];
strcpy(Name, na);
}
else Name = NULL;
Hour = h;
Credit = c;
}
void Course::display()
{
cout << "课程代码:" << Num << endl;
cout << "课程名称:" << Name << endl;
cout << "课时数:" << Hour << endl;
cout << "学分数:" << Credit << endl;
}
Course Course::operator ++(int)
{
Hour += 16;
Credit ++;
return *this;
}
void main()
{
Course A("990001", "C++程序设计(上)", 64, 4), B("990002", "C++程序设计(下)", 64, 4),C(A);
A.display();
B.display();
C.display();
A++;
A.display();
B.set("C++程序设计(下)(非电)", 80, 5);
B.display();
}
测试输出
课程代码:990001
课程名称:C++程序设计(上)
课时数:64
学分数:4
课程代码:990002
课程名称:C++程序设计(下)
课时数:64
学分数:4
课程代码:990001
课程名称:C++程序设计(上)
课时数:64
学分数:4
课程代码:990001
课程名称:C++程序设计(上)
课时数:80
学分数:5
课程代码:990002
课程名称:C++程序设计(下)(非电)
课时数:80
学分数:5
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询