const char * months[12] = {"January","February","March","April","May","June","July","August","September","October","November","December"};
int m;
cin >> m;
if(m >= 1 && m <= 12)
cout << months[m-1] <<endl;
else
cout << "error" << endl;
int cmp(char* sp, char* tp)
{
if (strlen(S) == strlen(T))
{
int count = 0;
while ((*sp != *tp) && (*sp != '\0'))
{
if (*sp > *tp)
count++;
sp++;
tp++;
}
if (count == 0 || count == (strlen(T) / 2))
return 0;
else if (count > (strlen(T) / 2))
return 1;
else
return -1;
}
else if(strlen(S) > strlen(T))
return 1;
else
return -1;
}
void sort(int& a, int& b, int& c) {
if (a < b)
swap(a, b);
if (a < c)
swap(a, c);
if (b < c)
swap(b, c);
}
int main()
{
int t, a, b, c;
cin >> t;
while (t--)
{
cin >> a >> b >> c;
sort(a, b, c);
cout << a << " " << b << " " << c << endl;
}
}
void find(int* num, int n, int& minIndex, int& maxIndex)
{
for (int i = 0; i < n; i++)
{
if (num[i] > num[maxIndex]) //比较后将最大值替换
{
maxIndex = i;
}
if (num[i] < num[minIndex]) //比较后将最小值替换
{
minIndex = i;
}
}
}
int main()
{
int t;
cin >> t;
for (int i = 0; i < t; i++)
{
int n,max=0,min=0; //默认所比较的数组中第一项是最大或者最小项
cin >> n;
int* num = new int[n];
for (int j=0; j < n; j++)
{
cin >> num[j];
}
find(num, n, min, max);
cout << "min=" << num[min] << " " << "minindex=" << min << endl;
cout << "max=" << num[max] << " " << "maxindex=" << max << endl;
}
return 0;
分数类(类与构造)
求两数a、b的最大公约数可采用辗转相除法,又称欧几里得算法,其步骤为:
1. 交换a, b使a > b;
2. 用a除b得到余数r,若r=0,则b为最大公约数,退出.
3. 若r不为0,则用b代替a, r代替b,此时a,b都比上一次的小,问题规模缩小了;
4. 继续第2步。
注意:如果分母是1的话,也按“分子/1”的方式输出。
class CFraction
{
private:
int fz; int fm;
public:
CFraction(int fz_val, int fm_val);
CFraction add(const CFraction& r);
CFraction sub(const CFraction& r);
CFraction mul(const CFraction& r);
CFraction div(const CFraction& r);
int getGCD(int a,int b); // 求对象的分子和分母的最大公约数
//void print();
};
CFraction::CFraction(int fz_val, int fm_val)//分子分母
{
fz = fz_val;
fm = fm_val;
}
CFraction CFraction::add(const CFraction& r)//加
{
int a = 0,b=0;
a = fz * r.fm+r.fz*fm;
b = fm * r.fm;
getGCD(a,b);
return r;
}
CFraction CFraction::sub(const CFraction& r)//减
{
int a = 0, b = 0;
a = fz * r.fm -r.fz * fm;
b = fm * r.fm;
getGCD(a, b);
return r;
}
CFraction CFraction::mul(const CFraction& r)//乘
{
int a = 0, b = 0;
a = fz * r.fz ;
b = fm * r.fm;
getGCD(a, b);
return r;
}
CFraction CFraction::div(const CFraction& r)//除
{
int a = 0, b = 0;
a = fz * r.fm;
b = fm * r.fz;
getGCD(a, b);
return r;
}
int CFraction::getGCD(int a,int b)
{
int fza = a;
int fmb = b;
int swap=0,r=0,fzo=0,fmo=0,y=0,flage=0;//y最大公约数
if (a < b)//交换
{
swap = a;
a = b;
b = swap;
swap = 0;
}
begin:
r = a % b;
if (r == 0)
{
y = b;
if (y < 0)
{
y = y * (-1);
}
}
else
{
a = b;
b = r;
goto begin;
}
fzo = fza / y;
fmo = fmb / y;
cout << fzo << '/' << fmo << endl;
return 0;
}
int main()
{
int t = 0,a=0,b=0;
char m;
cin >> t;
while (t--)
{
cin >> a >> m>>b;
CFraction p1(a, b);
cin >> a>> m >>b;
CFraction p2(a, b);
p1.add(p2);
p1.sub(p2);
p1.mul(p2);
p1.div(p2);
cout << endl;
}
return 0;
}
class Robot {
private:
char* name;
int hp;
int ce;
int df;
char type;
int lv;
public:
Robot(const char* n, char t, int l)
: type(t), lv(l)
{
name = new char[strlen(n) + 1];
strcpy(name, n);
setStats();
}
~Robot()
{
delete[] name;
}
void print()
{
cout << name << "--" << type << "--" << lv << "--" << hp << "--" << ce << "--" << df << endl;
}
bool transform(char t)
{
if (type == t)
return false;
type = t;
setStats();
return true;
}
private:
void setStats()
{
switch (type) {
case 'N':
hp = 5 * lv;
ce = 5 * lv;
df = 5 * lv;
break;
case 'A':
hp = 5 * lv;
ce = 10 * lv;
df = 5 * lv;
break;
case 'D':
hp = 5 * lv;
ce = 5 * lv;
df = 10 * lv;
break;
case 'H':
hp = 50 * lv;
ce = 5 * lv;
df = 5 * lv;
break;
}
}
};
int main()
{
char n[20], type;
int t, hp, ce, df, lv, num = 0;
cin >> t;
while (t--) {
cin >> n >> type >> lv;
Robot r1(n, type, lv);
cin >> type;
num += r1.transform(type);
r1.print();
}
cout << "The number of robot transform is " << num;
return 0;
}
class Phone {
int number = 0;
int state = 0;
char type = 0;
char* name = nullptr;
public:
Phone() {};
void setPhone();
int search(int num);
void print(int n);
~Phone();
};
void Phone::setPhone() {
char nam[10];
cin >> number >> type >> state >> nam;
name = new char[strlen(nam) + 1];
strcpy(name, nam);
cout << number << " constructed." << endl;
}
int Phone::search(int num) {
return (number == num ? 1 : 0);
}
void Phone::print(int n) {
cout << "Phone=" << n << "--Type=" << type;
if (state) {
cout << "--State=use--Owner=";
}
else {
cout << "--State=unuse--Owner=";
}
cout << name << endl;
}
Phone::~Phone() {
cout << number << " destructed." << endl;
}
int main() {
int time;
Phone p[3];
for (int i = 0; i < 3; i++) {
p[i].setPhone();
}
cin >> time;
while (time--) {
int n, flag = 0;
cin >> n;
for (int i = 0; i < 3; i++) {
flag = p[i].search(n);
if (flag) {
p[i].print(n);
break;
}
}
if (!flag) {
cout << "wrong number." << endl;
}
}
return 0;
}
using namespace std;
//创建一个bankaccount类
class BankAccount {
private:
double balance{};//余额
long long number;//账号
char type;//账户类型
double rate;//利率
public:
//构造函数(有参)
BankAccount(long long number, char type, double balance) {
this->number = number;
this->type = type;
this->rate = 0.005;
this->balance = balance;
}
//拷贝构造函数
BankAccount(const BankAccount &account) {
//通过拷贝构造来创建一个定期账户,信息与活期账户基本相同,不同之处包括:定期账户号码是活期账户号码加50000000(7个0);利率是定期利率。
this->number = account.number + 50000000;
this->type = account.type;
this->rate = 0.015;
this->balance = account.balance;
}
// 实现计息操作,根据利率计算利息,并把利息增加到余额中,并做相关信息输出。
void addInterest() const {
//输出格式示例:Account=12345678(账号)--sum=10050(总和)
cout << "Account=" << number << "--sum=" << balance + balance * rate << endl;
}
// 实现查询操作,输出账户的全部信息。
void display() const {
//输出格式示例:Account=62345678(账号)--Person(类型)--sum=10000(总和)--rate=0.015
//对于type,如果是'P',输出"Person",如果是'E',输出"Enterprise"。
cout << "Account=" << number << "--";
if (type == 'P') cout << "Person";
else cout << "Enterprise";
cout << "--sum=" << balance << "--rate=" << rate << endl;
}
};
int main(){
int t;
cin >> t;
while (t--) {
long long number;
char type;
double balance;
cin >> number >> type >> balance;
BankAccount account(number, type, balance);
BankAccount account2(account);
//定义操作符C表示计息操作,P表示查询操作
char op;
cin >> op;
if (op == 'C') account.addInterest();
else if (op == 'P') account.display();
cin >> op;
if (op == 'C') account2.addInterest();
else if (op == 'P') account2.display();
}
return 0;
}
class Television {
private:
//包含音量、模式(分为TV和DVD两种)、频道号等属性。
int volume;
string mode;
int channel;
public:
//电视机操作包括打印、相关静态函数、属性的获取和设置
Television() {
volume = 0;
mode = "TV";
channel = 0;
tvNum++;
}
Television(int v, string m, int c) {
volume = v;
mode = m;
channel = c;
if (m == "TV") {
tvNum++;
} else {
channel = 99;
dvdNum++;
}
}
~Television() {
if (mode == "TV") {
tvNum--;
} else {
dvdNum--;
}
}
//打印电视机信息,格式示例:--TV模式--频道11--音量70
void print() {
cout << "--" << mode << "模式--频道" << channel << "--音量" << volume << endl;
}
//友元函数:设计遥控器函数,该函数将通过友元方法对电视机进行控制。函数的参数包括电视机对象、模式、变化音量、频道号,无返回值。
friend void remoteControl(Television &tv, int m, int v, int c);
static int tvNum;
static int dvdNum;
};
int Television::tvNum = 0;
int Television::dvdNum = 0;
//设计遥控器函数,该函数将通过友元方法对电视机进行控制。函数的参数包括电视机对象、模式、变化音量、频道号,无返回值。
//我们需要在遥控器函数中对电视机对象进行模式设置,如果设置为DVD模式,则频道号参数一定是99;如果设置TV模式,则要把频道号设置相应的值。同时,我们需要根据变化音量进行调整,超过范围则音量不再变化。最后,还需要更新当前播放电视和播放DVD的电视机数量以及调用电视机对象的打印方法输出电视相关信息。
void remoteControl(Television &tv, int m, int v, int c) {
if (m == 1) {
if(tv.mode=="DVD"){
tv.dvdNum--;
tv.tvNum++;
}
tv.mode = "TV";
tv.channel = c;
if (tv.volume + v > 100) {
tv.volume = 100;
} else if (tv.volume + v < 0) {
tv.volume = 0;
} else {
tv.volume += v;
}
} else {
if(tv.mode=="TV"){
tv.tvNum--;
tv.dvdNum++;
}
tv.mode = "DVD";
tv.channel = 99;
if (tv.volume + v > 100) {
tv.volume = 100;
} else if (tv.volume + v < 0) {
tv.volume = 0;
} else {
tv.volume += v;
}
}
tv.print();
}
//第一行输入n,表示有n台电视台
//需要用动态数组方法创建n台电视机,从1开始编号,频道号为编号,音量初始为50,模式为TV,然后通过遥控器函数对电视机进行控制。
//第二行输入t,表示将执行t次遥控操作
int main() {
int n, t;
cin >> n;
Television *tv = new Television[n];
for (int i = 0; i < n; i++) {
//从1开始编号,频道号为编号,音量初始为50,模式为TV,
tv[i] = Television(50, "TV", i + 1);
}
cin >> t;
for (int i = 0; i < t; i++) {
//输入电视机编号、模式、变化音量、频道号
int num, m, v, c;
cin >> num >> m >> c >> v;
cout<<"第"<<num<<"号电视机";
remoteControl(tv[num - 1], m, v, c);
//输出television信息
}
cout << "播放电视的电视机数量为" << Television::tvNum << endl;
cout << "播放DVD的电视机数量为" << Television::dvdNum << endl;
delete[] tv;
return 0;
}