C++五小题实训课题(后三题我不懂!!!)
课题一:程序控制语句
一、课题名称:编辑输出如下图形
A
AAA
AAAAA
AAA
A
二、课题目的:通过本程序课题,使同学们熟练运用if、 switch 、while、 do~while 及for等控制语句进行程序的开发,学会多个控制语句的组合嵌套使用。
三、课本要求:能输入任意字符构成任意大小的菱形图案
课题二:函数与数组
一、课题名称:通过函数调用的方式,实现对输入的任意的十进制数转换成二进制、十六进制、八进制输出。
1:八进制
2:二进制
3:十六进制
二、课题目的:通过本课题程序,使同学们能理解函数在程序开发中的重要作用,并熟练运用函数去进行程序模块化设计;重要理解形参、实参的相互传递原理
三、课题要求:程序算法精练,模块化、层次化强。
课题三:结构体、共用体
一、课题名称:编辑具有如下菜单选项和功能模块的程序
[1]输入学生信息[2]输出学生信息
[3]排序(a:升序/b:降序)[4]退出本系统
二、课题目的:通过本程序使同学们能够深刻理解结构体共用体的定义,熟练运用结构体与共用体进行程序的模块化设计。
三、课题要求:程序功能模块清析,代码精练,函数调用及嵌套明朗
课题四:指针与函数操作
一、课题名称:通过指针操作的方式,实现对输入的任意数组的操作。
12 4560-23
78 -232340
-7 5671256
1:矩阵转换2:平均值班3:最大值
4:最小值5:排序6:退出
二、课题目的:通过本课题程序使学生深刻理解类的定义,类的成员变量、成员函数的访问与调用,运算符的重载
三、课题要求:程序输入输出接口强,模块化好,通用可读性好,算法精练无冗长代码,可扩展性好。
课题五:继承和派生类
一、课题名称:定义一个基类BaseString,实现基本的输入字符串的功能;定义一个继承自BaseString,实现字符串的倒置功能;定义一个继承自BaseString,实现字符串的copy功能。
二、课题目的:通过本程序使同学们理解类的继承与派生,类的属性与应用。
三、课题要求:对类的操作能透彻深入,类的成员权限要求可控性好、灵活。
[解决办法]
五.#include<iostream.h>
#include<string.h>
class BaseString
{protected:
char ch[100];
public:
BaseString()
{
cin>>ch;
}
};
class daozhi:public BaseString
{
int a;
public:
void dao()
{
for(a=strlen(ch)-1;a>=0;a--)
cout<<ch[a];
}
};
class copy:public BaseString
{char s[100];
public:
copy ()
{
char s[100]="copy behind me:";
strcat(s,ch);
cout<<s<<endl;}
};
void main()
{
cout<<"输入一串字符:"<<endl;
BaseString b;
cout<<"字符串的倒置(输入字符串):"<<endl;
daozhi c;
c.dao();
cout<<endl;
cout<<"字符串的复制(输入被复制的字符串):"<<endl;
copy d;
}
[解决办法]
这是第5题的`但运行有1个错误`请高手找一下``我找不出`汗...
#include<iostream.h>
class BaseString
{
public:
char*GetData();
void Input();
void Disp();
BaseString();
virtual~BaseString();
unsigned int GetLength()
{return Length;}
protected:
char Data[1024];
unsigned int Length;
};
BaseString::BaseString()
{
Length=0;
cout<<"这个是basestring创造."<<endl;
}
BaseString::~BaseString()
{
cout<<"这个是basestring舍去."<<endl;
}
void BaseString::Disp()
{
if(Length<1)
{
cout<<"这个是空句子."<<endl;
return;
}
else
{
cout<<"展示句子:"<<Data;
cout<<endl;
cout<<"这个句子的长度是:"<<Length<<endl;
return;
}
}
void BaseString::Input()
{
cout<<"请输入一串字串:";
char temp;
cin.unsetf(ios::skipws);
for(int i=0;i<1024;i++)
{
cin>>temp;
Data[i]=temp;
if(temp=='\n')
{
Data[i]=0;
Length=i+1;
break;
}
}
cout<<"\n 输入句子长度是:"<<length<<endl;
return;
}
char*BaseString::GetData()
{
return Data;
}
class CmpString:virtual public BaseString
{
public:
bool Compare(char*psz);
Cmpstring();
virtual~Cmpstring();
};
CmpString::CmpString()
{
cout<<"这个是比较语句的创造."<<endl;
}
CmpString::~CmpString()
{
cout<<"这个是比较语句的舍去."<<endl;
}
bool CmpString::compare(char*psz)
{
int newlength=0;
char*p=psz;
do
{
p++;
newlength++;
}while(*p!='\0');
newlength++;
if(newlength!=(int)Length)
return false;
p=psz;
for(int i=0;i<(int)Length;i++)
{
if(Data[i]==*p)
{
p++;
}
else
{
return false;
}
}
return true;
}
class Copystring:virual public BaseString
{
public:
void Copy(char*psz);
CopyString();
};
CopyString::CopyString()
{
cout<<"这个是copystring创造."<<endl;
}
CopyString::~CopyString()
{
cout<<"这个是copystring舍去."<<endl;
}
void CopyString::Copy(char*psz)
{
char*p=psz;
int NewStringLength=0;
while(*p!='\0')
{
p++;
NewStringLength++;
}
if(NewStringLength<1024)
{
p=psz;
for(int i=0;i<NewStringLength;i++)
{
Data[i]=*p;
p++;
}
Data[i]='\0';
Length=NewStringLength+1;
}
else
{
return;
}
}
class ReString:virtual public BaseString
{
public:
void Reverse();
ReString();
virtual~ReString();
};
ReString::ReString()
{
cout<<"这个是ReString创造."<<endl;
}
ReString::ReString()
{
cout<<"这个是ReString舍去."<<endl;
}
void ReString::Reverse()
{
if(length==0)
{
cout<<"这是空白点语句,请重新输入."<<endl;
return;
}
char temp;
for(int i=0;i<(int)Length/2;i++;)
{
temp=Data[i];
Data[i]=Data[length-2-i];
Data[Length-2-i]=temp;
}
}
class NewString:public CmpString,public CopyString,public ReString
{
public:
NewString();
virtual~NewString();
};
NewString::NewString()
{
}
NewString::~ewString()
{
}
void main()
{
NewString s;
s.Input();
s.Disp();
s.Reverse();
s.Disp();
s.Copy("hehe");
s.Disp();
if(s.Compare("hehe"))
cout<<"对等"<<endl;
else
cout<<"不对等"<<endl;
return;
}