类基础题呀

题型1、类中的数据计算

1.0 定义一个描述矩形的类Rectangle-3
总时间限制: 100000ms 单个测试点时间限制: 10000ms 内存限制: 10000kB
描述
定义私有数据成员宽(width)和长(length)。
定义公有成员函数calcircle(定义在类体外),可以实现宽长的参数传递,计算矩形的周长,在函数体内实现宽长和周长的显示,并在主程序中进行宽长的赋值和周长显示的调用。
定义公有成员函数calarea(定义在类体外),可以实现宽长的参数传递,计算矩形的面积,在函数体内实现宽长和周长的显示,并在主程序中进行宽长的赋值和显示面积的调用。
输入
输入宽
输入长
输出
输出宽
输出长
输出周长
输出宽
输出长
输出面积
样例
输入
1
2
输出
1
2
6
1
2
2
思路:其实题目已经给的很清楚,我们按它的指示一步一步来就可以了,详见代码注释
AC代码

#include<iostream>
using namespace std;
class Rect {//定义一个名为Rect的类
	private:
		double a,b;//定义私有数据宽,长。为了数据的准确我采用了双精度浮点型
	public:
		Rect(double a,double b) {//定义成员函数来完成数据的输入,这种写法一定要记住,很有用。
			Rect::a=a;//意思是把局部变量的a值赋给属于Rect的a,这样就可以运算了
			Rect::b=b;
		}
		double calArea() {
			return a*b;
		}
		double calcircle() {
			return (a+b)*2;
		}
};
int main() {//接下来进入主函数
	double a,b,z,c;//定义变量
	cin>>a>>b;//输入
	Rect r(a,b);//重载函数
	z=r.calArea();
	c=r.calcircle();
	cout<<a<<endl;
	cout<<b<<endl;
	cout<<c<<endl;
	cout<<a<<endl;
	cout<<b<<endl;
	cout<<z<<endl;
	return 0;
}

1.1面向对象的方法实现体积计算
总时间限制: 2000ms 内存限制: 65536kB
描述
需要求立方体的体积,请编写一个基于对象的程序。数据成员包括长(length)、宽(width)、高(height)。

要求用成员函数实现以下功能:

(1) 由键盘分别输入立方体的长、宽、高;

(2) 计算机立方体的体积;

(3) 输出立方体的体积。

输入
立方体的长、宽、高
输出
立方体的体积
样例输入
1.2 2.3 3.4
样例输出
9.384

AC代码

#include<iostream>
using namespace std;
class Calculate
{
	private:
		double a,b,c;
	public:
		Calculate(double a,double b,double c)
		{
			Calculate::a=a;
			Calculate::b=b;
			Calculate::c=c;
		}
		float multiply()
		{
			return a*b*c;
		}
};
int main()
{
	double a,b,c,e;
	cin>>a>>b>>c;
	Calculate g(a,b,c);
	e=g.multiply();
	cout<<e<<endl;
	return 0;
}

1.2 定义一个计算器类Calculate-1
总时间限制: 100000ms 内存限制: 100000kB
描述
编程实现一个简单的计算器类Calculate,包含设置输入数据的公有函数set和实现加减乘除功能的成员函数add,mimus,multiply,divide。

要求从键盘上输入两个浮点数,计算出它们的加、减、乘、除运算的结果。

输入
输入数字1
输入数字2
输出
输出和结果
输出减结果
输出乘结果
输出除结果
样例输入
1.2
3.4
样例输出
4.6
-2.2
4.08
0.352941

思路:
这道题和上一道方法基本相同,copy就行了。

AC代码

#include<iostream>
using namespace std;
class Calculate
{
	public:
		float a,b;
	//private:
		Calculate(float a,float b)
		{
			Calculate::a=a;
			Calculate::b=b;
		}
		float add()
		{
			return a+b;
		}
		float minus()
		{
			return a-b;
		}
		float multiply()
		{
			return a*b;
		}
		float divide()
		{
			return a/b;
		}
};
int main()
{
	float a,b,c,d,e,f;
	cin>>a>>b;
	Calculate g(a,b);
	c=g.add();
	d=g.minus();
	e=g.multiply();
	f=g.divide();
	cout<<c<<endl;
	cout<<d<<endl;
	cout<<e<<endl;
	cout<<f<<endl;
	return 0;
}

题型2、类中的数组

2.0 面向对象的方法实现求最大值
总时间限制: 2000ms 内存限制: 65536kB
描述
找出一个整型数组中的元素的最大值,用面向对象的方法实现。已有类声明如下:

class Array_max{

public:

void SetValue();

void MaxValue();

void ShowValue();

private:

int n; int array[10]; int max; };

具体要求:

(1) 在类体外实现成员函数SetValue(),实现数组元素个数n(n不大于10)和数组元素的初始化;

(2) 在类体外实现成员函数MaxValue(),查找数组元素的最大值;

(3) 在类体外实现成员函数ShowValue(),实现最大值的输出。

输入
第一行输入n,表示需要排序的元素个数;
第二行依次输入需要排序的数组元素。
输出
数组元素的最大值
样例输入
10
12 12 39 -34 17 134 0 45 -91 76
样例输出
134

AC代码

#include<iostream>
#include<algorithm>
using namespace std;
class Array_max {
	public:
		void SetValue();
		void MaxValue();
		void ShowValue();
	private:
		int n;
		int array[10];
		int max;
};
void Array_max::SetValue()
{
	cin>>n;
	for(int i=0;i<n;i++)
	{
		cin>>array[i];
	}
}
void Array_max::MaxValue()
{
	sort(array,array+n);
}
void Array_max::ShowValue()
{
	cout<<array[n-1]<<endl;
}
int main()
{
	Array_max c;
	c.SetValue();
	c.MaxValue();
	c.ShowValue();
	return 0;
}

题型3、如何设置和获取数据

3.0喵喵叫
总时间限制: 100000ms 内存限制: 100000kB
描述
1.定义一个cat类,

设置猫咪年龄:函数名为SetAge;

获取猫咪年龄:函数名为GetAge;

输出喵喵叫:函数名为Meow,输出“Meow”

2.在主函数实现

定义猫咪对象frisky

设置猫咪年龄为5

输出喵喵叫

输出猫咪年龄

输出喵喵叫

输入
NULL
输出
Meow.
frisky is a cat who is 5 years old.
Meow.
样例输入
NULL
样例输出
Meow.
frisky is a cat who is 5 years old.
Meow.

完美AC:

#include<iostream>
using namespace std;
class cat
{
	public:
		int GetAge();
		void SetAge(int age);
		void Meow();
	protected:
			int itsAge;
};
int cat::GetAge()
{
	return itsAge;
}
void cat::SetAge(int age)
{
	itsAge=age;
}
void cat::Meow()
{
	cout<<"Meow.\n";
}
int main()
{
	cat frisky;
	frisky.SetAge(5);
	frisky.Meow();
	cout<<"frisky is a cat who is "<<frisky.GetAge()<<" years old.\n";
	frisky.Meow();
}

对于这道题,有一个定义的辨析在这里必须讲一下,详见一段代码:
不管题意的AC(主要是懒):

#include<iostream>
using namespace std;

class cat {
	private:
		int year;
	public:
		cat(int year) {//此处一定要叫cat,但int后面的变量名可以取别的
			cat::year=year;//若上一行为int a,这里改成cat::year=a;
			//其他地方不用改
		}
		void print1() {
			cout<<"Meow."<<endl;
		}
		void print2() {
			cout<<"frisky is a cat who is "<<year<<" years old."<<endl;
		}
};
int main() {
	int year=5;
	cat c(year);
	c.print1();
	c.print2();
	c.print1();
	return 0;
}

题型4、多个数据输入(感觉有点像结构体)
4.0 编程实现销售员类sales
包括工号ID,出货量count,单价price;计算并返回三名销售员的总销售额sum(使用静态数据成员)。

#include<iostream>
using namespace std;
class sales
{
	private:
		static double s;
	public:
		int id,cnt;
		double price,sum;
		void set1()
		{
			cin>>id>>cnt;
		}
		void set2()
		{
			cin>>price;
		}
		double Sum()
		{
			sum=s+cnt*price;
		}
};
double sales::s=0;
int main()
{
	sales s1,s2,s3;
	s1.set1();
	s1.set2();
	s1.Sum();
	
	s2.set1();
	s2.set2();
	s2.Sum();
	
	s3.set1();
	s3.set2();
	s3.Sum();

	cout<<s1.Sum()<<endl;
	cout<<s2.Sum()<<endl;
	cout<<s3.Sum()<<endl;
}

4.1编程实现学生类student
包括姓名name,学号ID,成绩score;计算并返回三个学生的平均成绩(使用静态成员函数)。

#include <string>
#include <iostream>
using namespace std;
class Student {
	public: 
		Student(int id, string name, double score)
			: id(id), name(name), score(score) {
			count++;
			total+=score;
		}
		static double GetAverage() {
			return total / count;
		}
	private:
		int id;
		string name;
		double score;
	private:
		static double total;
		static int count;
};
double Student::total = 0.0f;
int Student::count= 0;

int main() {
	Student s1(1001,"James", 86);
	Student s2(1001,"Kate", 67);
	Student s3(1001,"Lucy", 91);
	cout<<Student::GetAverage()<<endl;
}

题型5、常数据成员
5.0编程实现矩形类Rect
长度length固定(使用常数据成员),宽度可变;计算并返回周长和面积。

#include <string>
#include <iostream>
using namespace std;
class Student {
	public: 
		Student(int id, string name, double score)
			: id(id), name(name), score(score) {
			count++;
			total+=score;
		}
		static double GetAverage() {
			return total / count;
		}
	private:
		int id;
		string name;
		double score;
		static double total;
		static int count;
};
double Student::total = 0.0;
int Student::count= 0;

int main() {
	Student s1(1001,"James", 86);
	Student s2(1001,"Kate", 67);
	Student s3(1001,"Lucy", 91);
	cout<<Student::GetAverage()<<endl;
}
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值