第一题:
请编写程序实现以下功能:从键盘输入若干字符串,统计长度最长的字符串,并输出最长字符串内容和长度
第二题:
有一个文本文件data.txt,它记录了几个学生信息,内容如下
姓名 学号 性别 年龄
张三 1001 男 22
李明 1002 男 21
李红 1003 女 22
李明 1004 女 20
编写一个程序,从文本文件data.txt中找出所有叫“李明”的学生,并输出他们的信息。
第三题:
设计一个Bank类,实现银行某账户的资金往来账目管理。程序要求:
1.创建账户:包括账号、创建日期、余额(创建账户时存入的钱数)
2.存钱:执行存钱操作,并记录存钱日期和存钱数目
3.取钱:执行取钱操作,并记录取钱日期和取钱数目
4.查询交易明细:查询近一个月的账目交易记录
第四题:
teacher的职责是教学,学生的职责是学习,而研究生兼具teacher和学生的职责,既要学习又要帮助teacher管理教育学生,编写一个程序,实现以下功能需求:
1设计一个类Teacher,描述teacher的信息(姓名、年龄)和职责(教学)
2.设计一个学生类Student,描述学生的信息(姓名、学号)和职责(学习)
3.设计一个研究生类Graduate,描述研究生信息(姓名、年龄、学号)和职责(教学、学习)
第一题
#include <iostream>
#include <cstring>
int main()
{
std::string max_str, tmp_str;
while(true) {
std::cout << "please input a string" << std::endl;
std::getline(std::cin, tmp_str);
if(tmp_str.empty()){
break;
}
if(tmp_str.size() > max_str.size()) {
max_str = std::move(tmp_str);
}
}
std::cout << "max_str=" << max_str << std::endl;
return 0;
}
第二题
#include <iostream>
#include <fstream>
#include <cstring>
int main()
{
std::ifstream ifs;
// 打开文件
ifs.open("data.txt",std::ios::in);
if (!ifs.is_open())
{
std::cout << "read fail." << std::endl;
return -1;
}
std::string tmp_str;
while(true) {
std::getline(ifs, tmp_str);
if(tmp_str.empty()){
break;
}
// 以李明开头,且包含空格 防止前缀找错
if(tmp_str.rfind("李明 ", 0) == 0) {
// 找到了
std::cout << "str=" << tmp_str << std::endl;
}
}
return 0;
}
第三题
#include <iostream>
#include <cstring>
#include <vector>
#include <ctime>
#include <map>
struct Item {
std::string op;
std::string name;
int money;
time_t t;
Item(const std::string& _op, const std::string& _name, int _money): op(_op),name(_name), money(_money), t(time(0)) {
}
Item(const Item& item) {
op = item.op;
name = item.name;
t = item.t;
}
Item(Item&& item) {
op = std::move(item.op);
name = std::move(item.name);
t = item.t;
}
};
class Bank {
public:
void create(const std::string& name, int money){
_push("create", name, money);
}
void push(const std::string& name, int money){
_push("push", name, money);
}
bool take(const std::string& name, int money){
auto it = m_moneys.find(name);
if(it == m_moneys.end()) {
// 没有找到账号
return false;
}
if(it->second < money) {
// 钱不够
return false;
}
it->second -= money;
_push("take", name, money);
}
void list() {
time_t t = time(0) - (30*24*60*60); // 一个月前
std::cout << "时间\t姓名\t操作\t金额" << std::endl;
for(auto it = m_items.rbegin(); it != m_items.rend() && it->t > t; ++it) {
std::cout << it->t << "\t" << it->name << "\t" << it->op << "\t" << it->money << std::endl;
}
}
private:
void _push(const std::string& op, const std::string& name, int money){
m_items.push_back(Item(op, name, money));
auto it = m_moneys.find(name);
if(it != m_moneys.end()) {
it->second += money;
} else {
m_moneys.insert(std::pair(name, money));
}
}
private:
// 交易记录暂时存在内存中
std::vector<Item> m_items;
std::map<std::string, int> m_moneys;
};
第四题,应该是虚继承吧,很少用
class Peason {
public:
const std::string& name();
private:
std::string m_name;
};
class Teacher: virtual public Peason{
public:
int year_old();
void teach();
private:
int m_year_old;
};
class Student : virtual public Peason {
public:
void student_id();
private:
int m_student_id;
};
class Graduate: virtual public Teacher, virtual public Student {
};