C++习题03_类和对象_构建一个book类,有四个私有数据成员-程序员宅基地

技术标签: C++  编程语言  面向对象编程  封装  

C++习题03_类和对象

习题03(01)计算器类

题目描述
下面是一个计算器类的定义,请完成该类成员函数的实现,并编写main()。
class Counter
{
public:
	Counter(int num);  
	void increament();  //给原值增1
	void decrement();  //给原值减1
    int getValue();     //取得计数器值
	void print();       //显示计数
private:
	int value;
}; 
输入描述
一个整数,用于创建Counter对象 
输出描述
调用成员函数进行相关操作后的计算器值 
输入样例
5 
输出样例
计数器的值为:7
计数器的值为:6
#include <iostream>
#include <iomanip>
using namespace std;

class Counter
{
    
public:
    Counter(int num);
    void increament(); //给原值增1
    void decrement();  //给原值减1
    int getValue();    //取得计数器值
    void print();      //显示计数
private:
    int value;
};

Counter::Counter(int num) : value(num) //value(num)等价于value=num;
{
    
}

void Counter::increament() //返回值   作用范围:: 函数名
{
    
    value++;
}

void Counter::decrement()
{
    
    value--;
}

int Counter::getValue()
{
    
    return value;
}

void Counter::print()
{
    
    cout << "计数器的值为:" << value << endl;
}

int main()
{
    
    int n;
    cin >> n;
    Counter k(n);
    k.increament();
    k.increament();
    k.print();
    k.decrement();
    k.print();
    return 0;
}

习题03(02)Date类

题目描述
根据注释语句的提示,实现类Date的成员函数,并编写main()
class Date
{
public:
	void setYear(int y);     //设置年的值
	void setMonth(int m);  //设置月的值
	void setDay(int d);    //设置日的值
	bool isLeapYear();    //判断是否是闰年
	void printDate();     //显示日期
private:
	int year,month,day;
}; 
输入描述
三个整数:年、月、日 
输出描述
年月日及该年是否是闰年 
输入样例
以下为两组测试数据
2017 9 20

2012 9 20 
输出样例
以下为两组测试数据对应的结果
日期为:2017年9月20日
该年为非闰年!

日期为:2012年9月20日
该年为闰年!
#include <iostream>
#include <iomanip>
using namespace std;

class Date
{
    
public:
	void setYear(int y);     //设置年的值
	void setMonth(int m);  //设置月的值
	void setDay(int d);    //设置日的值
	bool isLeapYear();    //判断是否是闰年
	void printDate();     //显示日期
private:
	int year, month, day;
};

void Date::setYear(int y)
{
    
	year = y;
}
void Date::setMonth(int m)
{
    
	month = m;
}
void Date::setDay(int d)
{
    
	day = d;
}
bool Date::isLeapYear()
{
    
	if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
		return true;
	else
		return false;
}
void Date::printDate()
{
    
	cout << "日期为:" << year << "年" << month << "月" << day << "日" << endl;
}

int main()
{
    
	Date day;
	int y, m, d;
	cin >> y >> m >> d;
	day.setYear(y);
	day.setMonth(m);
	day.setDay(d);
	day.printDate();
	if (day.isLeapYear())
		cout << "该年为闰年!" << endl;
	else
		cout << "该年为非闰年!" << endl;
	return 0;
}
判断闰年

1. 可以被400整除
2. 可以被4整除但是不能被100整除

习题03(03)Cylinder类

题目描述
编程:建立Cylinder类,有三个double型私有数据成员:半径、高和体积,构造函数传递两个值:半径和高,计算体积。成员函数showVolume()用来显示每个对象的体积。
要求:半径、高从键盘输入。
PI的值取:3.1415926 
输入描述
两个实型数据:半径和高 
输出描述
一个数据:圆柱体的体积 
输入样例
2 3 
输出样例
体积为:37.6991
#include <iostream>
#include <iomanip>
using namespace std;

class Cylinder
{
    
public:
    Cylinder(double a, double b);
    void showVolume();

private:
    double h;
    double r;
    double v;
    double pi;
};

Cylinder::Cylinder(double a, double b)
{
    
    r = a;
    h = b;
    pi = 3.1415926;
}
void Cylinder::showVolume()
{
    
    v = h * pi * r * r;
    cout << "体积为:" << v << endl;
}

int main()
{
    
    double a, b;
    cin >> a >> b;
    Cylinder f(a, b);
    f.showVolume();
    return 0;
}

习题03(04)Book类

题目描述
构建一个Book类,有4个私有数据成员:书名、作者、qu和price(均为int型),将qu初始化为1~5,将price被始化为qu的10倍。建立一个有5个元素的对象数组,顺序显示每个对象数组中元素的信息;定义对象指针,通过指针访问对象数组,逆序显示对象数组中元素的信息。要求:书名、作者、qu的信息从键盘输入 
输入描述
5个对象数组元素的值 
输出描述
顺序显示对象数组中各对象的值
逆序显示对象数组中各对象的值 
输入样例
C语言程序设计 苏小红 2
C++程序设计 刘丽华 3
Python机器学习 范淼 4
数据结构与算法 徐凤生 3
大话数据结构 程杰 2 
输出样例
顺序显示的结果为:
书名:C语言程序设计     作者:苏小红    qu*price:40
书名:C++程序设计       作者:刘丽华    qu*price:90
书名:Python机器学习    作者:范淼      qu*price:160
书名:数据结构与算法    作者:徐凤生    qu*price:90
书名:大话数据结构      作者:程杰      qu*price:40

使用指针,逆序显示的结果为:
书名:大话数据结构      作者:程杰      qu*price:40
书名:数据结构与算法    作者:徐凤生    qu*price:90
书名:Python机器学习    作者:范淼      qu*price:160
书名:C++程序设计       作者:刘丽华    qu*price:90
书名:C语言程序设计     作者:苏小红    qu*price:40
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;

class Book
{
    
private:
    string name;
    string writer;
    int qu;
    int price;

public:
    Book(string a = "", string b = "", int c = 0);
    void set(string a, string b, int c);
    void show();
};

Book::Book(string a, string b, int c)
{
    
    name = a;
    writer = b;
    qu = c;
    price = c * 10;
}
void Book::set(string a, string b, int c)
{
    
    name = a;
    writer = b;
    qu = c;
    price = c * 10;
}
void Book::show()
{
    
    cout << "书名:" << name << "\t"
         << "作者:" << writer << "\t"
         << "qu*price:" << qu * price << "\t" << endl;
}

int main()
{
    
    Book a[5];
    Book *p;
    p = a;
    p = p + 4; //向后移动了4个的单位
    int i, qu;
    string name, writer;
    for (i = 0; i < 5; i++)
    {
    
        cin >> name >> writer >> qu;
        a[i].set(name, writer, qu);
    }
    cout << "顺序显示的结果为:" << endl;
    for (i = 0; i < 5; i++)
    {
    
        a[i].show();
    }
    cout << "使用指针,逆序显示的结果为:" << endl;
    for (i = 0; i < 5; i++)
    {
    
        (*p).show();
        p--;
    }
    return 0;
}

习题03(05)Stock类

题目描述
编程:构建一个类Stock,含有字符数组stockcode[]及int型quan、double型成员price.
构造函数含有三个参数:字符数组na[]及q、p。当定义Stock的类对象时,将对象的第1个字符串参数赋给数据成员stockcode,第2和第3个参数分别赋给quan、double。未设置第2和第3个参数时,quan的值为1000,price的值为9.98。成员函数print()无形参,要求使用this指针显示对象数据成员的内容。main()中定义二个对象,
对象s1的三个参数分别为: "600001”, 3000, 5.67,都由键盘输入
对象s2的第1个数据成员值为:"600002”, 由键盘输入,其余使用默认值。 
输入描述
两行数据
第一行为第一个对象的数据成员值,分别为:"600001”, 3000, 5.67
第二行为第二个对象的第1个数据成员值,为:"600002” 
输出描述
两行
第一行为对象1的数据成员值
第二行为对象2的数据成员值 
输入样例
600001 3000 5.67
600002 
输出样例
stockcode:600001 quan:3000 price:5.67
stockcode:600002 quan:1000 price:9.98
#include <iostream>
#include <string>
using namespace std;

class Stock
{
    
private:
    string stockcode;
    int quan;
    double price;

public:
    Stock(string a, int b = 1000, double c = 9.98);
    void print();
};

Stock::Stock(string a, int b, double c)
{
    
    stockcode = a;
    quan = b;
    price = c;
}
void Stock::print()
{
    
    cout << "stockcode:" << stockcode << " quan:" << quan << " price:" << price << endl;
}

int main()
{
    
    string a, b;
    int c;
    double d;
    cin >> a >> c >> d;
    cin >> b;
    Stock one(a, c, d);
    Stock two(b);
    one.print();
    two.print();
    return 0;
}

习题03(06)Student类

题目描述
声明一个Student类,在该类的结构如下:
数据成员:
-stuNo:string
-name:string
-score:int  // 成绩
-sum:int   // 静态数据成员,统计总分
-count:int    //静态数据成员,统计学生人数、
成员函数
+setData(no:string,na:string,sco:int):void  //设置数据成员的值
+<<static>>getSum():int   //返回学生成绩之和
+<<static>>getCount():int   //返回学生总人数
+<<static>>calAverage():double   //计算平均分
+show():void    //输出学生学号、姓名、成绩
+<<static>>showStaticData():void //输出学生的总人数、总分
在main()函数中,输入某班若干位同学(人数不超过30)的信息,并求出全班学生的总人数、总分及平均分。

本题每组测试用例的对象数是不固定的,以组合键Ctrl+Z或人数>30结束输入,例如:
while((cin>>stuNo>>name>>score)&&Student::getCount()<30)	{	
		stu[Student::getCount()].setData(stuNo,name,score);	
} 
输入描述
若干个学生的信息,每位学生信息一行 
输出描述
创建对象前的学生人数和总分信息
每位学生的信息
学生总人数、总分
学生平均分 
输入样例
2001 张翼德 87
2002 赵子龙 76
2003 黄汉升 85
2004 关云长 89
2005 马孟起 68 
输出样例
创建对象前,学生总人数、总分为:
现在有0人,总分为:0
学生成绩信息:
学号:2001 姓名:张翼德 成绩:87
学号:2002 姓名:赵子龙 成绩:76
学号:2003 姓名:黄汉升 成绩:85
学号:2004 姓名:关云长 成绩:89
学号:2005 姓名:马孟起 成绩:68
现在有5人,总分为:405
学生的平均分为:81
#include <iostream>
#include <string>
using namespace std;

class Student
{
    
private:
    string stuNo;
    string name;
    int score;
    static int sum; //加个static就是静态
    static int count;

public:
    void setData(string no, string na, int sco);
    void show();
    static int getSum();
    static int getCount();
    static double calAverage();
    static void showStaticData();
};
void Student::setData(string no, string na, int sco)
{
    
    stuNo = no;
    name = na;
    score = sco;
    count++;
    sum += score;
}
void Student::show()
{
    
    cout << "学号:" << stuNo << " 姓名:" << name << " 成绩:" << score << endl;
}
int Student::getCount()
{
    
    return count;
}
int Student::getSum()
{
    
    return sum;
}
double Student::calAverage()
{
    
    double k;
    k = double(sum) / double(count);
    return k;
}
void Student::showStaticData()
{
    
    cout << "现在有" << count << "人,总分为:" << sum << endl;
}
int Student::count = 0;
int Student::sum = 0;

int main()
{
    
    cout << "创建对象前,学生总人数、总分为:" << endl;
    Student::showStaticData();
    Student stu[30];
    string a;
    string b;
    int c;
    while ((cin >> a >> b >> c) && Student::getCount() < 30)
    {
    
        stu[Student::getCount()].setData(a, b, c);
    }
    cout << "学生成绩信息:" << endl;
    int i = 0;
    for (i; i < Student::getCount(); i++)
    {
    
        stu[i].show();
    }
    Student::showStaticData();
    double k = Student::calAverage();
    cout << "学生的平均分为:" << k << endl;
    return 0;
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44179485/article/details/113177578

智能推荐

使用mybatis往数据库中插入记录报错:java.sql.SQLException: Incorrect string value: '\xCE\xC4\xB8\xF1\xB1\xF2' for c...-程序员宅基地

文章浏览阅读324次。报错信息:java.sql.SQLException:Incorrectstringvalue:'\xCE\xC4\xB8\xF1\xB1\xF2'forcolumn'name'atrow1原因分析:创建表的时候,采用的是默认的编码格式:latin1解决方案:将原来的表转存为sql文件,修改编码格式,再次执行。如导出的sql文件中sql为:CREATE TA..._mybatis stringbuffer incorrect string value for colum

目前最好的算法书-程序员宅基地

文章浏览阅读1.2k次。这是从图灵 2016 年发的一篇文章修改而来的标题,原先这篇文章的标题叫《如果你只能拥有一本算法书》。没错,这次,我们就不遮遮掩掩了,引用了一位大学教授的书评标题「 Best algor..._最好的算法书

Fashion-MNIST下载地址_fashion-minst数据集下载官网-程序员宅基地

文章浏览阅读994次。** 参考1**:Fashion-MNIST下载地址参考2:fashion-mnist数据集下载至本地并使用训练集的图像:60000,http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/train-images-idx3-ubyte.gz训练集的类别标签:60000,http://fashion-mnist.s3-websit..._fashion-minst数据集下载官网

csdn博客之星_it云清 csdn-程序员宅基地

文章浏览阅读3.4k次。之前看到csdn博客之星评选,想着一个菜菜,就不要去凑热闹了。然后想看看被提名的200个人,都有哪些,想着关注几个大佬以后去学习膜拜呢,毕竟里面有朱小厮,方志鹏,铭毅天下,徐留根等大佬,平时看着他们出的书,写的专栏,各种膜拜。然后,把榜单拉到最后一行,发现了自己。当然一阵窃喜啊。虽然跟其他大佬不能比,票数也差距很大,但是被提名,也是一种鼓励,毕竟写博客,优质的文章和舒服的排版,还是比较耗费时间..._it云清 csdn

OpenMesh入门1(译自OpenMesh6.3Documents)_openmesh教程-程序员宅基地

文章浏览阅读1.0k次。本例子说明以下问题:1.如何声明你自己的mesh类型MyMesh2.如何向mesh对象添加节点和面3.如何通过IO函数将mesh写至硬盘利用OpenMesh进行开发,首先需要定义你自己的mesh类型MyMesh。OpenMesh支持一般的多边形mesh和特殊的三角面mesh。在这个例子中,我们希望使用留个四边形建立一个立方体,所以,我们选择多边形mesh。OpenMesh也支持不同的mesh内核,..._openmesh教程

虚拟机 wordpress_如何使用WordPress在线运行虚拟教室(工具)-程序员宅基地

文章浏览阅读1.4k次。Do you want to run a virtual class online? Creating an online virtual classroom may sound too technical or expensive. Or maybe you just can’t imagine it working at all. 您要在线运行虚拟课程吗? 创建在线虚拟教室可能听起来过于技..._virtual classroom :click to view class details and attend

随便推点

启动Jenkins服务报错:Job for jenkins.service failed because the control process exited with error code_job for jenkins.service failed because start of th-程序员宅基地

文章浏览阅读1w次,点赞5次,收藏9次。文章目录1. 错误在现2. 解决方法1. 错误在现使用 sudo systemctl start jenkins 命令启动Jenkins服务提示如下错误:按照提示使用 systemctl status jenkins.service 命令查看Jenkins服务的状态:2. 解决方法按照提示使用 systemctl status jenkins.service 命令查看Jenkins服务的状态:注意箭头处标注的位置,/usr/bin/java 是Jenkins配置文件中的默认java路径,_job for jenkins.service failed because start of the service was attempted to

【Opencv】Intel IPP下载安装测试_ipp图像库官网-程序员宅基地

文章浏览阅读5.9k次,点赞2次,收藏10次。关于Intel IPPIntel IPP offers developers high-quality, production-ready, low-level building blocks for image processing, signal processing, and data processing (data compression/decompression and crypto_ipp图像库官网

日期格式转化_el-form日期格式转换-程序员宅基地

文章浏览阅读163次。表格日期格式:(operExamTime 类型:data) <el-table-column label="实操考试时间" align="center" :formatter="operExamTimeFormat" min-width="220" prop="operExamTime" //operExamTime 实操考试开始时间 [date] ></el-table-column>operExamTimeFormat(row, column) {_el-form日期格式转换

分享好書 -- Programming Linux Game-程序员宅基地

文章浏览阅读62次。找了好多書籍, 也反覆看了很多相關Linux程式設計的書/資料/網頁, 結果: 半途而廢, 不然就是一知半解, 老是覺得書不是寫的太過隴長, 又或者捎不到癢處;終於找到一本電子書+source code, 我大致看過後; 還真覺得書本內容值得好好學習跟研究.書本的章節內摘要如下:Chapter 1. The Anatomy of a Game...

android studio记账,Android Studio--家庭记账本(五)-程序员宅基地

文章浏览阅读1.2k次。想到每次删除之后将表单自动初始化,却发现会导致除去已经删除的不在出现在表单上,数据库中剩余的数据还会再次出现在表单中。导致表单上的数据越来越多。后来又想到,当我实现删除之后,把表单采用全部清除,再重新初始化。果然这个方法实现了完整的删除与自动更新功能。public void onClick(DialogInterface dialog, intwhich) {CostBean costBean=n...

C/C++学习规划与发展指引_学习c++规划论文2000字-程序员宅基地

文章浏览阅读1k次。下面将会推荐在C/C++方向的若干经典书籍,依据操作系统进行划分,分为WINDOWS与LINUX两个方向。 希望在C/C++编程领域有长足发展的小鸟们都应当引起足够的重视,我不推荐算法或者数据结构的书籍,我也不推荐C,C++的基础语言书籍,只要把握一个准则:那就是读大家认可的书,对自己负责。 我做这个帖子的目的,是因为我注意到很多学生党在每年4月开始实习生招聘,毕业生招_学习c++规划论文2000字

推荐文章

热门文章

相关标签