6-3 输出最大值
根据给定的程序,写成相关的成员函数,完成指定功能。
函数接口定义:
定义max函数,实现输出最高成绩对应的学号以及最高成绩值。
裁判测试程序样例:
#include <iostream> using namespace std; class Student {public: Student(int n,float s):num(n),score(s){} int num; float score; }; int main() {Student stud[5]={ Student(101,78.5),Student(102,85.5),Student(103,98.5), Student(104,100.0),Student(105,95.5)}; void max(Student* ); Student *p=&stud[0]; max(p); return 0; } /* 请在这里填写答案 */
输入样例:
无
输出样例:
104 100
void max(Student *p)
{
Student *p1,*max;
max=p;
for(p1=p+1;p1<p+5;p1++)
{
if(max->score < p1->score)
{
max->num=p1->num;
max->score=p1->score;
}
}
cout<<max->num<<" "<<max->score;
}
6-4 运动成绩排名
某大学开田径运动会,现有12名选手参加100米比赛,对应的运动员号及成绩如表所示,请按照成绩排名并输出,要求每一行输出名次、运动员号及成绩。
运动员号 成绩(秒) 运动员号 成绩(秒)
001 13.6 031 14.9
002 14.8 036 12.6
010 12.0 037 13.4
011 12.7 102 12.5
023 15.6 325 15.3
025 13.4 438 12.7
####使用给定的类,完成数据的对象的定义,并按照成绩排序后输出(格式见输出样例)
类声明如下:
#include <iostream> #include <iomanip> #include <string> using namespace std; class Sport { public: Sport() { } Sport(string n,double g) { num=n; grade=g; } string num; double grade; };
输入样例:
无
输出样例:
在这里给出相应的输出。例如:
1 010 12
2 102 12.5
3 036 12.6
4 011 12.7
5 438 12.7
6 025 13.4
7 037 13.4
8 001 13.6
9 002 14.8
10 031 14.9
11 325 15.3
12 023 15.6
####注意:使用setw()进行宽度设置,每个输出项占6列。
int main()
{
Sport s[12]={Sport("001",13.6),Sport("002",14.8),Sport("010",12.0),Sport("011",12.7),Sport("023",15.6),Sport("025",13.4),Sport("031",14.9),Sport("036",12.6),Sport("037",13.4),Sport("102",12.5),Sport("325",15.3),Sport("438",12.7)};
double t;
string p;
for(int i=0;i<11;i++)
{
for(int i=0;i<11;i++)
{
if(s[i].grade > s[i+1].grade)
{
t = s[i].grade;
s[i].grade = s[i+1].grade;
s[i+1].grade = t;
p = s[i].num;
s[i].num = s[i+1].num;
s[i+1].num = p;
}
}
}
for(int i=0;i<12;i++)
{
cout<<setw(6)<<i+1<<setw(6)<<s[i].num<<setw(6)<<s[i].grade<<setw(6)<<endl;
}
}
6-5 对象数组初始化
根据类定义,进行对象数组的定义,按照输出样例输出相应的数据。
类定义:
#include<iostream> using namespace std; class A{ int data; public: A(int k=0){ data=k; } void show(){ cout<<"data="<<data<<endl; } };
###编写main函数,定义三个对象数组,完成指定的输出
/* 请在这里填写答案 */
输入样例:
无
输出样例:
在这里给出相应的输出。例如:
data=0
data=0
data=0
data=1
data=0
data=0
data=1
data=2
data=3
/*方法一*/
int main()
{
A a[3];//因为有参数所以当=0时可以不用写A();可以自动调用构造函数,写上也没错
for(int i=0;i<3;i++)
{
a[i].show();
}
cout<<endl;
A b[3]={A(1)};//由于是数组必须加上{}
for(int i=0;i<3;i++)
{
b[i].show();
}
cout<<endl;
A c[3]={A(1),A(2),A(3)};
for(int i=0;i<3;i++)
{
c[i].show();
}
}
/*方法二*/
/*int main()
{
A a[3]={0};
for(int i=0;i<3;i++){
a[i].show();
}
cout<<endl;
A b[3]={1};
for(int i=0;i<3;i++){
b[i].show();
}
cout<<endl;
A c[3]={1,2,3};
for(int i=0;i<3;i++){
c[i].show();
}
}*/
6-6 学生平均分计算
定义一学生类,已有若干个学生数据,包括学号、姓名、成绩,要求输出这些学生数据并计算平均分。
###类定义:
定义一学生类,已有若干个学生数据,包括学号、姓名、成绩,要求输出这些学生数据并计算平均分
裁判测试程序样例:
利用学生类进行对象定义并输出结果的例子如下: /* 请在这里填写答案 */ int Stud::sum=0; int Stud::num=0; int main() { Stud s1(1,"Li",89),s2(2,"Chert",78),s3(3,"zheng",94); s1.disp(); s2.disp(); s3.disp(); cout<<"avg="<<Stud::avg()<<endl; return 0; }
输入:
无
输出样例:
1,Li,89
2,Chert,78
3,zheng,94
avg=87
#include<iostream>
using namespace std;
class Stud
{
private:
int no,score;
string name;
public:
static int sum;
static int num;
static int avg();
Stud(int no1, string name1, int score1) {
no = no1;name = name1;score = score1;
num++;sum += score;
}
void disp() {
cout << no << "," << name << "," << score << endl;
}
};
int Stud::avg() {
return sum / num;
}
7-1 通过指针,输出对象数组的数据
设计一个类,主函数中建立一个对象数组,输入5个学生数据(学号、成绩),用对象指针指向数组首元素,输出5个学生的数据。
输入格式:
输入5个学生数据(学号、成绩),学号为不超过10000的正整数,成绩为0-100的正整数。
输出格式:
按顺序输出学生的学号和成绩,每行显示一个学生的信息。
输入样例:
在这里给出一组输入。例如:
101 90
102 80
103 70
104 60
105 50
输出样例:
在这里给出相应的输出。例如:
101 90
102 80
103 70
104 60
105 50
/*#include<iostream>
using namespace std;
class student
{
public:
int num;
int score;
public:
student(int num=0, int score=0)
{
this->num = num;
this->score = score;
}
};
int main()
{
student st[5];
student* p = st;
for (int i = 0; i < 5; i++)
{
cin >> p->num >> p->score;
cout << p->num << " " << p->score << endl;
p++;
}
}*/
#include <iostream>
using namespace std;
class student
{
private:
int num,score;
public:
student(){}
student (int a,int b):num(a),score(b){}
void display()
{
cout<<num<<" "<<score<<endl;
}
};
int main()
{
int a,b;
student stu[5],*p=stu;
for(int i=0;i<=4;i++)
{
cin>>a>>b;
/*stu[i]=student(a,b);
stu[i].display();*/
*p=student(a,b);
p->display();
p++;
}
return 0;
}
7-2 计算全班学生C++课程的总成绩和平均成绩
定义一个类Student,记录学生C++课程的成绩。要求使用静态数据成员或静态成员函数计算全班学生C++课程的总成绩和平均成绩。
输入格式:
输入5个不超过100的正整数,作为C++成绩。
输出格式:
在第一行中输出成绩的和,第二行输出平均成绩。
输入样例:
90 80 70 60 50
输出样例:
350
70
#include <iostream>
using namespace std;
class Student
{
private:
int score;
public:
Student(){}
static int sum;
Student (int a):score(a)
{
sum+=a;
}
void display()
{
cout<<sum<<endl;
cout<<sum/5<<endl;
}
};
int Student :: sum=0;
int main()
{
int a;
Student stu[5];
for(int i=0;i<=4;i++)
{
cin>>a;
stu[i]=Student (a);
}
stu[4].display();
return 0;
}
7-3 设计一个People类
设计一个People 类,该类的数据成员有姓名、年龄、身高、体重和人数,其中人数为静态数据成员,成员函数有构造函数、显示和显示人数。其中构造函数由参数姓名、年龄、身高和体重来构造对象;显示函数用于显示人的姓名、年龄、身高和体重;显示人数函数为静态成员函数,用于显示总的人数。
输入格式:
按姓名、年龄、身高和体重依次输入每个人的信息
已exit结束
zhang 18 180 70
li 20 160 50
exit
输出格式:
输出总人数,例如
2
输入样例:
在这里给出一组输入。例如:
zhang 18 180 70
li 20 160 50
exit
#include <iostream>
using namespace std;
using namespace std;
class people //类名
{
private: //私有
string name; //姓名
int age; //年龄
double h,w; //身高,体重
public:
void show() //显示函数
{
name=" "; //姓名
age=0;
h=0;
w=0;
}
void input() //输入函数
{
cin>>name; //同样的我们先输姓名,再输年龄身高和体重
while(name!="exit")
{
cin>>age>>h>>w;
cnt++;
cin>>name;
};
}
void output() //输出函数
{
cout<<cnt;
}
static int cnt; //静态变量
};
int people::cnt; //在这里我们定义cnt为int型,类名为people的类;
int main()
{
people A; // 再定义一个为people类型的结构变量名
A.input(); //调用input成员函数
A.output(); //调用output成员函数
return 0;
}