山东科技大学2020年5月7日实验题解

山东科技大学2020年5月7日实验题解

**题目一:**字符的变化

Description

定义类Char,包括:
1.一个char类型的属性,是一个字符。
2.char change():如果属性值是小写字母,则返回对应的大写字母;如果属性值是大写字母,则返回对应的小写字母;其他情况下返回原字符。

Input

输入有多行,每行一个字符。

output

每行输入对应一行输出,是输入的字符变化之后的结果。

Sample Input

A
b
1

Sample Output

a
B
1

题目给定主函数

int main()
{
    char ch;
    while(cin>>ch)
    {
        Char c(ch);
        cout<<c.change()<<endl;
    }
    return 0;
}

标程

#include<map>
#include<list>
#include<cmath>
#include<queue>
#include<stack>
#include<cstdio>
#include<vector>
#include<iomanip>
#include<cstring>
#include<iterator>
#include<iostream>
#include<algorithm>
#define R register
#define LL long long
#define pi 3.141
#define INF 1400000000
using namespace std;

class Char{
	private:
		char ch;
	public:
		Char(char c){
			ch = c;
		}
		char change(){
			if(ch >= 'a' && ch <= 'z'){
				ch -= 32;
			}
			else if(ch >= 'A' && ch <= 'Z'){
				ch += 32;
			}
			return ch;
		}
};
int main()
{
    char ch;
    while(cin>>ch)
    {
        Char c(ch);
        cout<<c.change()<<endl;
    }
    return 0;
}

**题目二:**圆的面积

Description

定义Circle类,有一个私有的、double类型的属性radius,表示圆的半径。有一个公有的、double类型的常静态数据成员PI=3.14,表示圆周率。定义getArea()和getRadius()方法,返回圆的面积和半径。注意:在定义上述两个方法时,要保证程序能正确执行。

Input

一个double类型的数据。

Output

见样例。

Sample Input

3.15

Sample Output

PI=3.14
radius=2,area=12.56
radius=3.15,area=31.1566

题目给定代码

int main()
{
    double radius;
    cout<<"PI="<<Circle::PI<<endl;
    const Circle c1(2);
    cout<<"radius="<<c1.getRadius();
    cout<<",area="<<c1.getArea()<<endl;
    cin>>radius;
    Circle c2(radius);
    cout<<"radius="<<c2.getRadius();
    cout<<",area="<<c2.getArea()<<endl;
    return 0;
}

标程

#include<map>
#include<list>
#include<cmath>
#include<queue>
#include<stack>
#include<cstdio>
#include<vector>
#include<iomanip>
#include<cstring>
#include<iterator>
#include<iostream>
#include<algorithm>
#define R register
#define LL long long
#define pi 3.141
#define INF 1400000000
using namespace std;

class Circle{
	private:
		double r;
	public:
		static const double PI = 3.14;
		Circle(double radius){
			r = radius;
		}
		double getRadius() const{
			return r;
		}
		double getArea() const{
			return PI * r * r;
		}
};
int main()
{
    double radius;
    cout<<"PI="<<Circle::PI<<endl;
    const Circle c1(2);
    cout<<"radius="<<c1.getRadius();
    cout<<",area="<<c1.getArea()<<endl;
    cin>>radius;
    Circle c2(radius);
    cout<<"radius="<<c2.getRadius();
    cout<<",area="<<c2.getArea()<<endl;
    return 0;
}

**题目三:**学校的构成(I)

Description

学校是老师和学生组成的。现在定义Student、Teacher和School三个类来模拟一个学校。
Student类只有一个int类型的数据成员,表示学生的年级;Teacher类只有一个double类型的数据成员,表示该教师的工资;School类是由1个Student类的对象、1个Teacher类的对象组合而成。定义它们的构造函数和析构函数,使程序能产生样例所示的输出。

Input

输入4行,第1行和第3行是2个int类型的正整数;第2行和第4行是double类型的正数。

Output

见样例。

Sample Input

3
1600.31
4
2451.34

Sample Output

A student grade 3 is created.
A teacher with salary 1600.31 is created.
A school is created.
A student grade 4 is created.
A teacher with salary 2451.34 is created.
A student grade 4 is created.
A teacher with salary 2451.34 is created.
A school is created.
A school is erased.
A teacher with salary 2451.34 is erased.
A student grade 4 is erased.
A teacher with salary 2451.34 is erased.
A student grade 4 is erased.
A school is erased.
A teacher with salary 1600.31 is erased.
A student grade 3 is erased.

题目给定程序

int main()
{
    int g;
    double s;
    cin>>g>>s;
    School sch(g, s);
    cin>>g;
    Student stu(g);
    cin>>s;
    Teacher tea(s);
    School(g, s);
    return 0;
}

标程

#include<map>
#include<list>
#include<cmath>
#include<queue>
#include<stack>
#include<cstdio>
#include<vector>
#include<iomanip>
#include<cstring>
#include<iterator>
#include<iostream>
#include<algorithm>
#define R register
#define LL long long
#define pi 3.141
#define INF 1400000000
using namespace std;

class Student{
	private:
		int n;
	public:
		Student(int gread){
			n = gread;
			cout << "A student grade " << n << " is created.\n";
		}
		~Student(){
			cout << "A student grade " << n << " is erased.\n";
		}
};
class Teacher{
	private:
		double n;
	public:
		Teacher(double money){
			n = money;
			cout << "A teacher with salary " << n << " is created.\n";
		}
		~Teacher(){
			cout << "A teacher with salary " << n << " is erased.\n";
		}
};
class School : public Student, public Teacher{
	public:
		School(int a, double b) : Student(a), Teacher(b){
			cout << "A school is created.\n";
		}
		~School(){
			cout << "A school is erased.\n";
		}
};
int main()
{
    int g;
    double s;
    cin>>g>>s;
    School sch(g, s);
    cin>>g;
    Student stu(g);
    cin>>s;
    Teacher tea(s);
    School(g, s);
    return 0;
}

**题目四:**类的初体验(IV)

Description

定义一个类Data,只有一个int类型的属性和如下方法:

  1. 缺省构造函数,将属性初始化为0,并输出"Data’s default constructor."。

  2. 带参构造函数,将属性初始化为指定参数,并输出"Data # is created.",其中“#”即参数值。

  3. 析构函数,输出:“Data # is erased.”,其中“#”是属性值。

  4. int getValue()——获得属性值。

  5. void setValue(int)——设置属性值。

定义一个由Data的对象组成的数组类DataArray,包括:

  1. 由10个Data类的对象组成的对象数组。

  2. 缺省构造函数——不做任何操作,仅输出一行"DataArray’s default constructor."。

  3. void setValues(int d[10])——设置10个Data的对象的属性值分别为参数d的10个值。

  4. int getSum()——求10个Data对象属性值的和。

  5. 析构函数——输出一行"DataArray’s deconstructor."。

Input

输入为11个int类型范围内的整数。

Output

见样例~~~

Sample Input

1 2 3 4 5 6 7 8 9 10 100

Sample Output

Data’s default constructor.
Data’s default constructor.
Data’s default constructor.
Data’s default constructor.
Data’s default constructor.
Data’s default constructor.
Data’s default constructor.
Data’s default constructor.
Data’s default constructor.
Data’s default constructor.
DataArray’s default constructor.
Sum is 55
Data 100 is created.
aData = 100
Data 100 is erased.
DataArray’s deconstructor.
Data 10 is erased.
Data 9 is erased.
Data 8 is erased.
Data 7 is erased.
Data 6 is erased.
Data 5 is erased.
Data 4 is erased.
Data 3 is erased.
Data 2 is erased.
Data 1 is erased.

题目给定代码

int main()
{
    DataArray dataArray;
    Data *aData;
    int data[10], tmp;
    int i;
    for (i = 0; i < 10; i++){
        cin>>data[i];
    }
    dataArray.setValues(data);
    cout<<"Sum is "<<dataArray.getSum()<<endl;
 
    cin>>tmp;
    aData = new Data(tmp);
    cout<<"aData = "<<aData->getValue()<<endl;
    delete aData;
    return 0;
}

标程

#include<map>
#include<list>
#include<cmath>
#include<queue>
#include<stack>
#include<cstdio>
#include<vector>
#include<iomanip>
#include<cstring>
#include<iterator>
#include<iostream>
#include<algorithm>
#define R register
#define LL long long
#define pi 3.141
#define INF 1400000000
using namespace std;

class Data{
	private:
		int number;
	public:
		Data(){
			number = 0;
			cout << "Data's default constructor.\n";
		}
		Data(int n){
			number = n;;
			cout << "Data " << number << " is created.\n";
		}
		~Data(){
			cout << "Data " << number << " is erased.\n";
		}
		int getValue(){
			return number;
		}
		void setValue(int n){
			number = n;
		}
};
class DataArray{
	private:
		Data D[10];
	public:
		DataArray(){
			cout << "DataArray's default constructor.\n";
		}
		void setValues(int d[10]){
			for(int i = 0; i < 10; ++ i){
				D[i].setValue(d[i]);
			}
		}
		int getSum(){
			int sum = 0;
			for(int i = 0; i < 10; ++ i){
				sum += D[i].getValue();
			}
			return sum;
		}
		~DataArray(){
			cout << "DataArray's deconstructor.\n";
		}
};
int main()
{
    DataArray dataArray;
    Data *aData;
    int data[10], tmp;
    int i;
    for (i = 0; i < 10; i++){
        cin>>data[i];
    }
    dataArray.setValues(data);
    cout<<"Sum is "<<dataArray.getSum()<<endl;

    cin>>tmp;
    aData = new Data(tmp);
    cout<<"aData = "<<aData->getValue()<<endl;
    delete aData;
    return 0;
}

**题目五:**类的初体验(V)

Description

定义一个类Data,只有一个int类型的属性和如下方法:

  1. 缺省构造函数,将属性初始化为0,并输出"Data’s default constructor."。

  2. 析构函数,输出:“Data # is erased.”,其中“#”是属性值。

  3. int getValue()——获得属性值。

  4. void setValue(int)——设置属性值。

定义一个由Data的对象组成的数组类DataArray,该类包括1个int类型的属性和一个Data*类型的属性,分别为数组中元素的个数、所有的元素。定义如下方法:

  1. 构造函数——参数格式请参考main函数的调用方法给出,输出:“DataArray’s constructor.”。

  2. int getSum()——求所有Data对象属性值的和。

  3. 析构函数——输出一行"DataArray’s deconstructor."。

Input

若干个整数。个数大于2个。

第1个N表示后面输入的元素个数。之后有N个整数。它们用于设置main函数中DataArray的对象datas的数组元素值。

最后一个整数用于设置main函数中testP指向的对象的值。

Output

见样例~

Sample Input

10 1 2 3 4 5 6 7 8 9 10 1222

Sample Output

Data’s default constructor.
Data’s default constructor.
Data’s default constructor.
Data’s default constructor.
Data’s default constructor.
Data’s default constructor.
Data’s default constructor.
Data’s default constructor.
Data’s default constructor.
Data’s default constructor.
Data’s default constructor.
DataArray’s constructor.
Sum is 55
Data’s default constructor.
Data 1222 is erased.
Data 10 is erased.
Data 9 is erased.
Data 8 is erased.
Data 7 is erased.
Data 6 is erased.
Data 5 is erased.
Data 4 is erased.
Data 3 is erased.
Data 2 is erased.
Data 1 is erased.
DataArray’s deconstructor.
Data 0 is erased.

题目给定代码

int main()
{
    int i, n;
    Data test, *testP;
    cin>>n;
    int tmp[n];
    for (i = 0; i < n; i++)
        cin>>tmp[i];
    DataArray datas(n, tmp);
    cout<<"Sum is "<<datas.getSum()<<endl;
    testP = new Data;
    cin>>n;
    testP->setValue(n);
    delete testP;
    return 0;
}

标程

#include<map>
#include<list>
#include<cmath>
#include<queue>
#include<stack>
#include<cstdio>
#include<vector>
#include<iomanip>
#include<cstring>
#include<iterator>
#include<iostream>
#include<algorithm>
#define R register
#define LL long long
#define pi 3.141
#define INF 1400000000
using namespace std;

class Data{
	private:
		int number;
	public:
		Data(){
			number = 0;
			cout << "Data's default constructor.\n";
		}
		~Data(){
			cout << "Data " << number << " is erased.\n";
		}
		int getValue(){
			return number;
		}
		void setValue(int n){
			number = n;
		}
};
class DataArray{
	private:
		int N;
		Data *num;
	public:
		DataArray(int n, int *a){
			N = n;
			num = new Data[N];
			for(int i = 0; i < N; ++ i){
				num[i].setValue(a[i]);
			}
			cout << "DataArray's constructor.\n";
		}
		int getSum(){
			int sum = 0;
			for(int i = 0; i < N; ++ i){
				sum += num[i].getValue();
			}
			return sum;
		}
		~DataArray(){
			delete []num;
			cout << "DataArray's deconstructor.\n";
		}
};
int main()
{
    int i, n;
    Data test, *testP;
    cin>>n;
    int tmp[n];
    for (i = 0; i < n; i++)
        cin>>tmp[i];
    DataArray datas(n, tmp);
    cout<<"Sum is "<<datas.getSum()<<endl;
    testP = new Data;
    cin>>n;
    testP->setValue(n);
    delete testP;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/a1351937368/article/details/105981350