病毒复制 C++练习题目

病毒复制

描述

设计一个病毒类,实现病毒检测功能。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

在下面的编辑器中的Begin-End之间补充代码,具体要求如下:‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

  1. 成员变量:int Gen,代表当前病毒对象的年龄,默认值为 0。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

  2. 拷贝构造函数:Virus(const Virus &v),拷贝到一个新的病毒对象时,并将新的病毒对象的成员变量年龄在原来病毒对象的年龄上加 1。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

  3. 重载==运算符:bool operator==(const int& g,const Virus &v),用来比较g==virus[i],以找出年龄为参数 g 的病毒,并统计计数。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

参考代码如下:

#include <iostream>
using namespace std;

/********* Begin *********/
class Virus {
	//病毒类的声明



};
//病毒类的定义以及其他内容



/********* End *********/

int main() {
	int i, j;
	cin >> i >> j;
	Virus vs[3];
	vs[0] = Virus();
	vs[1] = Virus(vs[i]);
	vs[2] = Virus(vs[j]);
	for (int g = 0; g < 3; g++) {
		int count = 0;
		for (int i = 0; i < 3; i++) {
			if (g == vs[i])
				count++;
		}
		cout << "年龄:" << g << " 数量:" << count << endl;
	}
}

输入

病毒的年龄、数量‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

输出

输出病毒的三代的年龄和数量(共占3行)‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

输入输出示例

#include<iostream>
using namespace std;

class Virus {
public:
 int Gen;
 Virus(int g = 0)
 {
  Gen = g;
 }
 Virus(const Virus& v)//这个是拷贝构造函数的格式,类型(const +类型 +&(引用符)暂时引用的对象 )
 {
  Gen =v.Gen+1;
 }
};
bool operator==(const int& g, const Virus& v)//bool函数,其实布尔类型本质上就是个只会返回0和1的类型,改为int也可以  
{
    if(g == v.Gen)
        return 1;
    return 0;
} 
 
int main() {
 int i, j;
 cin >> i >> j;//依据题目样例输入的是2个0 
 Virus vs[3];//新创建3个对象 vs[0] vs[1] vs[2] ,每个对象都初始化默认值为0 
 vs[0] = Virus();//在类里面自定义了拷贝构造函数 ,如果括号里放的是一个类的对象,则调用拷贝构造函数,
 //每次调用拷贝构造后值都在原来基础上加1 
 //若括号里为空,则是普通的构造函数 
 vs[1] = Virus(vs[i]);
 vs[2] = Virus(vs[j]);  //到这里时 vs[0]=0 vs[1]=1 vs[2]=1
 for (int g = 0; g < 3; g++) {
  int count = 0;//两个for循环依次检测判断每个对象具体对象 年龄的 数量 
  for (int i = 0; i < 3; i++) {
   if (g == vs[i])//判断条件 
    count++;
  }
  cout << "年龄:" << g << " 数量:" << count << endl;
 }
}
#include<iostream>
using namespace std;

class Virus {
public:
 int Gen;
 Virus(int g = 0)
 {
  Gen = g;
 }
 Virus(const Virus& v)//这个是拷贝构造函数的格式,类型(const +类型 +&(引用符)暂时引用的对象 )
 {
  Gen =v.Gen+1;
 }
};
bool operator==(const int& g, const Virus& v)//bool函数,其实布尔类型本质上就是个只会返回0和1的类型,改为int也可以  
{                                //这是个运算符重载 ,const+类型&  常引用  -->引用值,相比与普通的引用,常引用,不会改变被引用的值 
    if(g == v.Gen)                                      //         普通的引用--> 引用值,普通引用有可能改变被引用的值,不安全,
        return 1;
    return 0;
} 
 
int main() {
 int i, j;
 cin >> i >> j;//依据题目样例输入的是2个0 
 Virus vs[3];//新创建3个对象 vs[0] vs[1] vs[2] ,每个对象都初始化默认值为0 
 vs[0] = Virus();//在类里面自定义了拷贝构造函数 ,如果括号里放的是一个类的对象,则调用拷贝构造函数,
 //每次调用拷贝构造后值都在原来基础上加1 
 //若括号里为空,则是普通的构造函数 
 vs[1] = Virus(vs[i]);
 vs[2] = Virus(vs[j]);  //到这里时 vs[0]=0 vs[1]=1 vs[2]=1
 for (int g = 0; g < 3; g++) {
  int count = 0;//两个for循环依次检测判断每个对象具体对象 年龄的 数量 
  for (int i = 0; i < 3; i++) {
   if (g == vs[i])//判断条件 运算符重载的调用 
    count++;
  }
  cout << "年龄:" << g << " 数量:" << count << endl;
 }
}
输入输出
示例 1
0 0
年龄:0 数量:1  
年龄:1 数量:2  
年龄:2 数量:0  

  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值