}
voidmain()
{
scorestu1;
stu1.inscore();
stu1.showscore();
score*stu2;
stu2=newscore;
stu2->inscore();
stu2->showscore();
}
10.设计一个学生成绩管理系统,能输入学生的学号、姓名和成绩等数据,能按成绩从高到低进行排序,并能将排序的结果输出。
提示:
(1)设计一个学生类student,包含三个私有数据成员,即学号sno、姓名sname和成员score
(2)在学生类student中再设计三个公有成员函数setdata、display和getscore,分别用于完成输入学生信息、输出学生信息、返回某个学生成绩的功能
(3)定义一个manage类,它有一个student类型的私有数据成员s[num],其中num表示学生人数
(4)在manage类中分别定义三个公有成员函数input、output、sort,分别用于完成输入、输出和排序功能。
.#include
usingnamespacestd;
classstudent
{
intsno;
charsname[20];
doublescore;
public:
student();
virtual~student();
voidsetdata();
voiddisplay();
doublegetscore();
};
voidstudent:
:
setdata()
{
cout<<"请输入:
"<cout<<"学号:
";
cin>>sno;
cout<<"姓名:
";
cin>>sname;
cout<<"成绩:
";
cin>>score;
}
voidstudent:
:
display()
{
cout<<"学号:
"<cout<<"姓名:
"<cout<<"成绩:
"<}
doublestudent:
:
getscore()
{
returnscore;
}
students[5];
voidinput(intx)
{
s[x].setdata();
}
voidsort()
{
inti,j,max;
studenttmp;
for(i=0;i<5-1;i++)
{
max=i;
for(j=i;j<5;j++)
{
if(s[j].getscore()>s[max].getscore())
max=j;
}
if(max!
=i)
{
tmp=s[i];
s[i]=s[max];
s[max]=tmp;
}
}
}
voidoutput()
{
inti;
for(i=0;i<5;i++)
{
s[i].display();
}
}
intmain()
{
inti;
for(i=0;i<5;i++)
{
input(i);
}
sort();
output();
return0;
}
11.设计一个图书借阅管理系统。
每本书有书号、书名和作者姓名属性,读者有借书证号、读者姓名和每位读者最多能够借阅的图书数量属性。
(要求使用类的继承和派生知识点实现)
提示:
由于图书和读者都具有编号和名称两个属性,所以可以定义一个能够对编号和名称进行管理的类object,然后在object类的基础上派生出图书类book和读者类reader。
#include
usingnamespacestd;
classobject
{
protected:
charnumber[20],name[20];
public:
object();
virtual~object();
};
classbook:
publicobject
{
charauthor[20];
public:
book();
virtual~book();
voidaddbook();
};
voidbook:
:
addbook()
{
cout<<"##########"<cout<<"请输入图书编号:
";
cin>>number;
cout<<"请输入图书名:
";
cin>>name;
cout<<"请输入图书作者:
";
cin>>author;
cout<<"##########"<}
classreader:
publicobject
{
intmaxbook;
public:
reader();
virtual~reader();
voidaddreader();
};
voidreader:
:
addreader()
{
cout<<"##########"<cout<<"请输入读者编号:
";
cin>>number;
cout<<"请输入读者姓名:
";
cin>>name;
cout<<"请输入读者最多能借阅图书数:
";
cin>>maxbook;
cout<<"##########"<}
intmain()
{
bookbk1;
readerrd1;
bk1.addbook();
rd1.addreader();
return0;
}
12.定义一个抽象类Shape,在其中说明一个纯虚函数area()作为一个接口,用来计算圆形、三角形、正方形和长方形的面积。
要求由抽象类派生出圆形、三角形、正方形和长方形4个派生类。
在各派生类中分别实现求各个图形的面积。
.#include
#include
usingnamespacestd;
classshape
{
protected:
doublea,b,c,r,s;
public:
virtualvoidset_ab()=0;
virtualvoidset_a()=0;
virtualvoidset_r()=0;
voiddisplay()
{
cout<<"面积为:
"<
}
};
classcircle:
publicshape
{
public:
voidset_ab(){};
voidset_a(){};
voidset_r()
{
cout<<"请输入圆的半径:
";
cin>>r;
s=3.14*r*r;
}
};
classbox:
publicshape
{
voidset_ab(){};
voidset_r(){};
voidset_a()
{
cout<<"请输入正方形边长:
";
cin>>a;
s=a*a;
}
};
classhbox:
publicshape
{
voidset_r(){};
voidset_a(){};
voidset_ab()
{
cout<<"请输入长方形边长:
";
cin>>a>>b;
s=a*b;
}
};
classtriangle:
publicshape
{
voidset_r(){};
voidset_a(){};
voidset_ab()
{
cout<<"请输入三角形底边和高:
";
cin>>a>>b;
s=a*b/2.0;
}
};
voiddoit(shape*p)
{
p->set_r();
p->set_a();
p->set_ab();
p->display();
}
intmain()
{
shape*p=newcircle;
doit(p);
delete[]p;
p=newbox;
doit(p);
delete[]p;
p=newhbox;
doit(p);
delete[]p;
p=newtriangle;
doit(p);
delete[]p;
return0;
}
13.用函数模板的方式设计可以对某种数据类型的数组中的数据用选择法进行从大到小排序,然后用整型数据和字符型数据进行验证。
#include
#include
usingnamespacestd;
ints[20]={3,6,1,3,8,0,2,5},i=8;
chart[20];
templatevoidsort(T*x,intn)
{
inti,j,max;
Ttmp;
for(i=0;i{
max=i;
for(j=i;j{
if(x[j]>x[max])
max=j;
}
if(max!
=i)
{
tmp=x[i];
x[i]=x[max];
x[max]=tmp;
}
}
}
intmain()
{
cout<<"请输入一个数字串:
";
for(intj=0;j<8;j++)
cout<
cout<cout<<"请输入一个字符串:
";
cin>>t;
sort(s,i);
for(j=0;j<8;j++)
cout<
cout<sort(t,strlen(t));
cout<return0;
}
14.编写一个程序,统计data.txt文件的行数,并将所有行前加上行号后写到data1.txt文件中。
算法提示:
行与行之间以回车符分隔,而getline()函数以回车符作为终止符。
因此,可以采用getline()函数读取每一行,再用一个变量i计算行数。
#include
#include
#include
usingnamespacestd;
intmain()
{
ifstreamfile1;
file1.open("data.txt");
ofstreamfile2;
file2.open("data1.txt");
intnum=0;
stringline;
while(getline(file1,line))
{
num++;
file2<}
cout<<