6-1 计算捐款总量
这里需要设计一个捐款人类Donator及一个相关函数getMaxName( ),Donator类中包含捐款人的姓名及其捐款额
代码清单:
#include <iostream>
using namespace std;
class Donator {
private:
string name;
float money; //单位:元
public:
void setName(string _name);
void setMoney(float _money);
string getName() { return name; }
float getMoney() { return money; }
/* 你编写的代码将被嵌入这里*/
static float totalMoney;
static void printTotal()
{
cout << "total:" << totalMoney << endl;
}
};
float Donator::totalMoney = 0;
void Donator::setName(string _name)
{
name = _name;
}
void Donator::setMoney(float _money)
{
money = _money;
totalMoney = totalMoney + money;
}
string getMaxName(Donator dt[], int n)
{
float max = dt[0].getMoney();
int max_id = 0;
for (int i = 1; i < n; i++)
{
if (dt[i].getMoney() > max)
{
max_id = i;
}
}
return dt[max_id].getName();
}
//读取n个捐款人的姓名和捐款额
void read(Donator dt[], int n) {
string name;
float money;
for (int i = 0; i < n; i++) {
cin >> name >> money;
dt[i].setName(name);
dt[i].setMoney(money);
}
}
int main() {
int n;
cin >> n; 输入本批次将参与的捐款人数
cin >> Donator::totalMoney; //输入目前已有的捐款总额
Donator::printTotal();
Donator d[n];
read(d, n);
Donator::printTotal();
cout << getMaxName(d, n) << endl;//输出本批次中捐款最高者姓名
return 0;
}
运行结果截图
题目2
(给出题目描述)
6-2 是否是回文
代码清单:
#include <iostream>
using namespace std;
class Solution
{
public:
/*
* 判断以'@'结尾的字符串s是否为回文。
* 如果是回文,返回true;不是回文,返回false。
*/
bool isPalindrome(char* s);
};
int main()
{
Solution obj;
char ss[100];
cin >> ss;
if (obj.isPalindrome(ss)) {
cout << "YES\n";
}
else {
cout << "NO\n";
}
return 0;
}
/* 你的代码将被嵌在这里 */
bool Solution::isPalindrome(char* s)
{
char* p = s;
while (*p != '\0')
{
p++;
}
int len = p - s;
for (int i = 0; i < len / 2; i++)
{
if (s[i] != s[len - i - 2])
{
return false;
}
}
return true;
}
运行结果截图
题目3
(给出题目描述)
7-1 复数类的操作
代码清单:
…………………………..
………………………….
#include<iostream>
using namespace std;
class Complex{
private:
double real;
double image;
public:
Complex(double r=0,double i=0)
{
real=r;
image=i;
}
Complex operator-()
{
Complex c;
c.real=-real;
c.image=-image;
return c;
}
void setreal()
{
cin>>this->real;
}
void setimage()
{cin>>this->image;}
void Print()
{
cout<<"("<<this->real<<", "<<this->image<<")"<<endl;
}
friend Complex operator+(Complex &c1,Complex &c2);
};
Complex operator+(Complex &c1,Complex &c2)
{
Complex c;
c.real=c1.real+c2.real;
c.image=c1.image+c2.image;
return c;
}
int main()
{
Complex c1,c2,c3,c4;
c1.setreal();c1.setimage();
c2.setreal();c2.setimage();
c3=c1+c2;c3.Print();
c4=-c2;
c3=c4+c1;c3.Print();
c2.Print();
return 0;
}
运行结果截图
题目4
(给出题目描述)
7-2 宿舍谁最高?
代码清单:
…………………………..
………………………….
#include<bits/stdc++.h>
using namespace std;
class Student
{
public:
int id;
string name;
int h;
int w;
};
int main()
{
int n,t=1,r=0;
cin >> n;
Student *s=new Student[n];
for (int i = 0; i < n; i++)
{
cin >> s[i].id >> s[i].name >> s[i].h >> s[i].w;
}
if(n>1)
{
for (int w = 0; w < n - 1; w++)
{
for (int q = 0; q < n - 1; q++)
{
Student temp;
if (s[q].id > s[q + 1].id)
{
temp = s[q];
s[q] = s[q + 1];
s[q + 1] = temp;
}
}
}
for (; r <n - 1; )
{
if (s[r].id == s[r + 1].id)
{
if (s[r].h > s[r + 1].h)
{
Student temp1;
temp1 = s[r];
s[r] = s[r + 1];
s[r + 1] = temp1;
}
r = r + 1;
}
else
{
cout << setw(6)<<setfill('0')<<s[r].id<<" " << s[r].name<<" " << s[r].h<<" " << s[r].w << endl;
r = r + 1;
}
}
cout << setw(6) << setfill('0') << s[r].id<<" " << s[r].name <<" "<< s[r].h<<" " << s[r].w << endl;
}
else
{
cout << setw(6) << setfill('0') << s[0].id<<" " << s[0].name<<" " << s[0].h<<" " << s[0].w << endl;
}
return 0;
}
运行结果截图