政务网站建设目的_意义,wordpress相关知识,资讯网站手机网站模板,赣州网上房地产A. 机器人变身#xff08;类与对象#xff09;【期中模拟】
题目描述
编写一个机器人类#xff0c;包含属性有机器名、血量、伤害值、防御值、类型和等级。其中血量、伤害和防御和等级、类型相关#xff1a;
普通型机器人#xff0c;类型为N#xff0c;血量、伤害、防…A. 机器人变身类与对象【期中模拟】
题目描述
编写一个机器人类包含属性有机器名、血量、伤害值、防御值、类型和等级。其中血量、伤害和防御和等级、类型相关
普通型机器人类型为N血量、伤害、防御是等级的5倍
攻击型机器人类型为A攻击是等级的10倍其他属性和普通的一样
防御型机器人类型为D防御是等级的10倍其他属性和普通的一样
生命型机器人类型为H生命是等级的50倍其他属性和普通的一样。
机器人操作包括打印、各个属性的获取和设置方法构造函数可有可无根据需要自行编写
编写一个全局函数用于机器人变身使得各种类型机器人能够相互转变。参数包括机器人对象指针和变身后的机器人类型功能是修改机器人类型并更改相关的属性。如果变身类型和机器人原来的类型不同则执行变身功能并返回true如果变身类型和原来类型相同则不执行变身并返回false.
要求所有数据成员都是私有属性用C语言和面向对象设计思想来编程实现上述要求
输入
第一行输入t表示要执行t次机器人变身
接着每两行一行输入一个机器人的属性包括机器名、类型、等级另一行输入变身类型
依次类推输入
输出
每行输出变身后的机器人信息要求调用机器人的打印方法来输出即使机器人不变身也输出
属性输出依次为名称、类型、等级、血量、伤害、防御
最后一行输出执行变身的次数
输入样例1
3 X001 N 5 H X002 A 5 D X003 D 5 D
输出样例1
X001–H–5–250–25–25 X002–D–5–25–25–50 X003–D–5–25–25–50 The number of robot transform is 2
AC代码
#includeiostream
using namespace std;class Robot {char type;string name;int dengji, xueliang, shanghai, fangyu;static int cnt;public:Robot() {cin name type dengji;f();}//生成其他信息void f() {xueliang shanghai fangyu dengji * 5;if (type A)shanghai dengji * 10;else if (type D)fangyu dengji * 10;else if (type H)xueliang dengji * 50;}void print() {cout name -- type -- dengji -- xueliang -- shanghai -- fangyu endl;}char getType() { return type; }string getName() { return name; }int getDengji() { return dengji; }int getXueliang() { return xueliang; }int getShanghai() { return shanghai; }int getFangyu() { return fangyu; }void setType(char c) {type c;}void setName(string name) { this-name name; }void setDengji(int v) { dengji v; }void setXueliang(int v) { xueliang v; }void setShanghai(int v) { shanghai v; }void setFangyu(int v) { fangyu v; }static void print1() {cout The number of robot transform is cnt endl;}void add() { cnt; }
};int Robot::cnt 0;bool trans(Robot* p, char desType) {if (p-getType() desType)return false;p-setType(desType);p-f();p-add();return true;
}int main() {int n;cin n;while (n--){Robot r;char c;cin c;trans(r, c);r.print();}Robot::print1();return 0;
}B. 虚拟电话构造与析构【期中模拟】
题目描述
虚拟电话包含属性电话号、状态、机主姓名。
1、电话号是一个类它包含号码和类型其中号码是整数类型类型用单个字母表示用户类别A表示政府B表示企业、C表示个人。类操作包括构造、属性的获取和设置等方法根据需要自行编写。
2、状态用一个数字表示1表示在用0表示未用
3、机主姓名是一个字符串
电话操作包括构造、析构、打印和查询。
1、构造函数需要考虑复合类成员的构造并且输出提示信息。假设电话号码为12345678则构造函数输出12345678 constructed.
2、打印是输出电话的相关信息其中如果电话状态是在用则输出use状态是未用则输出unuse输出格式看示例。
3、析构函数是输出提示信息。假设电话号为12345678则析构函数输出12345678 destructed.
4、查询操作是根据给定的号码查询电话如果电话自身号码和给定号码不相同则返回0如果电话自身号码和给定号码相同则返回1
用C和面向对象思想实现以下要求
1、输入相关数据创建三个电话对象并通过构造方法初始化。
2、输入若干个电话号码通过查询操作查询这些号码是否在三个电话对象中如果不存在输出wrong number.存在则调用打印操作输出电话信息具体看输出样例。
输入
头三行输入三个电话信息每行包括电话号码、电话类型、状态、机主姓名
接着一行输入t表示有t个号码要查询
接着t行输入t个电话号码
输出
t行输出t个号码的查询结果
输入样例1
80000001 A 1 tom 80000002 B 0 ken 80000003 C 1 mary 3 50000002 80000003 80000002
输出样例1
80000001 constructed. 80000002 constructed. 80000003 constructed. wrong number. Phone80000003–TypeC–Stateuse–Ownermary Phone80000002–TypeB–Stateunuse–Ownerken 80000003 destructed. 80000002 destructed. 80000001 destructed.
AC代码
#includeiostream
#includevector
using namespace std;class ID {int id;char type;
public:ID(int i, char t) :id(i), type(t) {}ID() {}void setType(char c) {type c;}void setID(int i) {id i;}char getType() { return type; }int getId() {return id;}
};class Phone {ID _id;int state;string name;public:Phone() {int id;char c;cin id c state name;_id.setID(id);_id.setType(c);cout _id.getId() constructed. endl;}bool find(int num) {return num _id.getId();}~Phone(){cout _id.getId() destructed. endl;}void print() {cout Phone _id.getId() --Type;cout _id.getType() --State;if (state 0)cout unuse;elsecout use;cout --Owner name endl;}};int main() {Phone* v new Phone[3];int n;cin n;for (int i 0; i n; i) {int id;cin id;bool f 0;for (int j 0; j 3; j) {if (v[j].find(id)) {v[j].print();f 1;break;}}if (!f)cout wrong number. endl;}delete[]v;return 0;
}C. 银行账户拷贝构造【期中模拟】
题目描述
银行账户包括余额、利率、号码、类型等属性其中号是固定8位整数类型表示个人还是企业账户如果是个人用P标识企业用E标识。
账户又分为活期账户和定期账户活期利率为0.5%定期利率为1.5%。
账户操作有计息、查询操作。计息操作是根据利率计算利息并把利息增加到余额中并做相关信息输出。查询操作是输出账户的全部信息。
创建一个活期账户并通过构造函数初始化各个属性。然后通过拷贝构造来创建一个定期账户信息与活期账户基本相同不同之处包括定期账户号码是活期账户号码加500000007个0利率是定期利率。
要求所有数据成员都是私有属性
用C语言的类与对象思想来编写程序实现上述要求
输入
输入测试个数t表示有t个活期账户
先输入一个活期账户的账户号码、账户类型、余额根据输入创建活期账户和定期账户
接着输入两个操作符第一个操作符对活期账户操作第二个操作符对定期账户进行操作。若输入大写字母C表示计息操作若输入大写字母P表示查询操作
以此类推输入其他账户的信息和操作
输出
每两行输出一对活期账户和定期账户的操作结果。
输入样例1
2 12345678 P 10000 C P 23456789 E 20000 P C
输出样例1
Account12345678–sum10050 Account62345678–Person–sum10000–rate0.015 Account23456789–Enterprise–sum20000–rate0.005 Account73456789–sum20300
AC代码
#includeiostream
#includevector
using namespace std;class Account {double balance;double rate;int id;char type;
public:Account() {cin id type balance;rate 0.005;}Account(const Account a) {balance a.balance;rate 0.015;id a.id 50000000;type a.type;}void print() {}void C() {balance * (1.0 rate);cout Account id --;cout sum balance endl;}void P() {cout Account id --;if (type P)cout Person--;else cout Enterprise--;cout sum balance --;cout rate rate endl;}
};int main() {int n;cin n;while (n--){Account a;Account b(a);char c1, c2;cin c1 c2;if (c1 C)a.C();elsea.P();if (c2 P)b.P();elseb.C();}return 0;
}D. 生日打折复合类构造
题目描述
定义一个日期类Date包含数据成员year\month\day还包含构造函数及其他函数(根据需要自己添加)
定义一个会员类VIP包含数据成员id和birth其中id是整数表示会员编号birth是Date类型表示生日。
类VIP包含构造函数和其他函数根据需要自己添加还包含一个折扣函数Discount。函数Discount返回结果为浮点数表示折扣函数包含1个参数为日期类型函数功能是判断参数日期是否会员生日是则折扣为0.5不是则折扣为0.95
编写程序实现上述类功能并实现输入输出的要求
输入
第一行输入年、月、日表示今天日期
第二行输入t表示有t个会员
第三行输入第1个会员的ID、生日的年、月、日
第四行输入第1个会员的消费金额
依次类推输入下一个会员的两行数据…
输出
根据会员的消费金额调用Discount函数判断今天是否会员生日并得到折扣然后计算会员打完折的消费金额
每一行先输出会员编号再输出会员打完折的消费金额消费金额只需要输出整数部分
提示把浮点数转整数
double x 123.456
coutint(x)endl;
输入样例1
2017 4 20 2 1111 2000 4 20 136 2222 2000 3 30 125
输出样例1
1111’s consumption is 68 2222’s consumption is 118
AC代码
#includeiostream
using namespace std;class Date {int y, m, d;
public:Date() { cin y m d; }Date(int y, int m, int d) :y(y), m(m), d(d){}bool operator (const Date date)const {return m date.m d date.d;}};class VIP {int id;Date birth;
public:VIP(int id, Date b) :id(id),birth(b) {}double Discount(const Date today) {if (today birth)return 0.5;return 0.95;}void print(double money, const Date today) {cout id s consumption is (int)(money * Discount(today)) endl;}};int main() {Date today;int n;cin n;while (n--) {int a, b, c, d;cin a b c d;VIP v(a, Date(b, c, d));double money;cin money;v.print(money, today);}return 0;
}E. 电视遥控静态友元【期中模拟】
题目描述
电视机包含音量、模式、频道号等属性其中模式分为TV和DVD两种。电视机在TV模式下将播放相应频道的内容在DVD模式下电视机使用统一的频道号播放DVD的内容频道号统一为99。另外电视机采用静态成员的方法共享两个数据播放电视的电视机数量和播放DVD的电视机数量初始都为0。
电视机操作包括打印、相关静态函数、属性的获取和设置等根据需要自行编写。
现编写一个遥控器函数通过友元方法对电视机进行控制它的参数包括电视机对象、模式、变化音量、频道号无返回值。函数操作包括
1、对电视机对象进行模式设置如果设置为DVD模式则频道号参数一定是99如果设置TV模式则要把频道号设置相应的值。
2、根据变化音量进行调整例如原有音量为50现输入变化音量为-30则50-3020音量最终为20。音量值最低为0最高为100超过范围则音量不再变化。
3、更新当前播放电视和播放DVD的电视机数量
4、调用电视机对象的打印方法输出电视相关信息
提示如果电视机原来模式和参数传递的模式是相同的那么实际操作就是调整音量、切换频道和输出信息。
注意函数第一个参数必须是一个电视机对象不可以是整数类型可以是对象、或对象指针、或对象引用根据需要自行编写。
用动态数组方法创建n台电视机从1开始编号频道号为编号音量初始为50模式为TV然后通过遥控器函数对电视机进行控制。
所有类的数据成员都是私有属性。请使用C语言和面向对象思想来实现上述要求
输入
第一行输入n表示有n台电视台
第二行输入t表示将执行t次遥控操作
接着输入t行每行依次输入电视机编号i、模式k、频道号x和变化音量其中i表示第i台电视机k为1表示TV模式k为2表示DVD模式。
输出
每行输出执行遥控操作后的电视机信息
最后一行输出当前播放电视和播放DVD的电视机数量。
具体格式看样例
输入样例1
10 5 3 1 11 20 4 2 99 -20 5 2 99 80 5 1 55 -60 6 2 99 -70
输出样例1
第3号电视机–TV模式–频道11–音量70 第4号电视机–DVD模式–频道99–音量30 第5号电视机–DVD模式–频道99–音量100 第5号电视机–TV模式–频道55–音量40 第6号电视机–DVD模式–频道99–音量0 播放电视的电视机数量为8 播放DVD的电视机数量为2
AC代码
#includeiostream
using namespace std;class Tel {static int cntTV, cntDVD;int yinliang, pindao;int moshi;
public:Tel() {moshi 1;cntTV;pindao 0;yinliang 50;}void changeYin(int v) {yinliang v;if (yinliang 100)yinliang 100;else if (yinliang 0)yinliang 0;}void print1() {if (moshi 1)cout TV模式--;else if (moshi 2)cout DVD模式--;cout 频道 pindao --;cout 音量 yinliang endl;}static void print() {cout 播放电视的电视机数量为 cntTV endl;cout 播放DVD的电视机数量为 cntDVD endl;}//2 DVD//1 TVfriend void yaokongqi(Tel* p, int moshi, int pindao, int bianyin) {if (p-moshi ! moshi) {if (p-moshi 1)p-cntTV--;else if (p-moshi 2)p-cntDVD--;p-moshi moshi;if (p-moshi 1)p-cntTV;elsep-cntDVD;}p-pindao pindao;p-changeYin(bianyin);p-print1();}
};int Tel::cntTV 0;
int Tel::cntDVD 0;int main() {int n, t;cin n t;Tel* p new Tel[n];while (t--){int i, k, x, delta;cin i k x delta;cout 第 i 号电视机--;i--;yaokongqi(p i, k, x, delta);}Tel::print();return 0;
}F. 链表的冒泡排序结构体链表
题目描述
根据输入采用尾插法创建链表。对创建的链表使用冒泡排序进行降序排序输出排序后的链表。
说明程序中不可见数组、容器否则计0分。
输入
测试次数t
每组测试数据格式为
数据个数n
n行每行一个字符串
输出
对每组测试数据输出字符串按字典降序排序后的链表。各组输出间以空行分隔。
输入样例1
2 4 shenzhen nanjing beijing wuhan 6 china brazil germany philippines switzerland singapore
输出样例1
wuhan shenzhen nanjing beijing
switzerland singapore philippines germany china brazil
AC代码
#includeiostream
using namespace std;struct Node {string v;Node* next;Node(string v , Node* next NULL) {this-v v;this-next next;}
};class List {Node* head;int len;
public:List() {head new Node();cin len;Node* p head;for (int i 0; i len; i) {string s;cin s;p-next new Node(s);p p-next;}}void print() {Node* p head-next;while (p) {cout p-v endl;p p-next;}cout endl;}//交换p之后的两个节点void swap(Node* p) {Node* p1 p-next;Node* p2 p1-next;p-next p2;Node* q p2-next;p2-next p1;p1-next q;}//找到第index个节点的前一个Node* findNode(int index) {Node* p head;while (index--)p p-next;return p;}void BubbleSort() {for (int i 1; i len; i) {bool flag 0;Node* prior;int j;for (j 0, prior head; j len - i; j, prior prior-next){if (prior-next-v prior-next-next-v) {swap(prior);flag 1;}}if (!flag)break;}}~List() {while (head) {Node* p head-next;delete head;head p;}}};int main() {int t;cin t;while (t--) {List l;l.BubbleSort();l.print();}return 0;
}