转化成c++
时间: 2023-07-01 08:13:52 浏览: 47
好的,以下是将该代码转换为 C++ 代码后的结果:
```cpp
#include <iostream>
#include <string>
#define MAX_STUDENT_NUM 30
#define MAX_NAME_LEN 20
#define MAX_CLASS_LEN 10
using namespace std;
struct Student {
int id;
string name;
string class_name;
int start_time;
int end_time;
int usage_time;
float fee;
};
Student students[MAX_STUDENT_NUM];
int student_num = 0;
void input() {
cout << "请输入学生的学号、班级、姓名、上机起始时间(以空格分隔):" << endl;
while (student_num < MAX_STUDENT_NUM) {
int id;
string name, class_name;
int start_time;
cin >> id >> class_name >> name >> start_time;
if (cin.fail()) {
break;
}
students[student_num].id = id;
students[student_num].name = name;
students[student_num].class_name = class_name;
students[student_num].start_time = start_time;
student_num++;
}
}
void calculate() {
for (int i = 0; i < student_num; i++) {
int end_time = students[i].end_time;
int usage_time = end_time - students[i].start_time;
if (usage_time < 3600) {
usage_time = 3600;
}
students[i].usage_time = usage_time;
students[i].fee = usage_time / 3600.0;
}
}
void query() {
cout << "请输入查询条件(班级、学号、姓名):" << endl;
string condition;
cin >> condition;
cout << "学号\t班级\t姓名\t上机时间\t费用" << endl;
for (int i = 0; i < student_num; i++) {
if (condition == students[i].class_name || condition == students[i].name || stoi(condition) == students[i].id) {
cout << students[i].id << "\t" << students[i].class_name << "\t" << students[i].name << "\t" << students[i].usage_time << "\t\t" << students[i].fee << endl;
}
}
}
void show_usage() {
cout << "机器使用情况:" << endl;
cout << "时间\t使用人数" << endl;
int usage[24] = {0};
for (int i = 0; i < student_num; i++) {
int hour = students[i].start_time / 3600;
usage[hour]++;
}
for (int i = 0; i < 24; i++) {
cout << i << ":00\t" << usage[i] << endl;
}
}
int main() {
input();
calculate();
query();
show_usage();
return 0;
}
```
在 C++ 中,我们使用了头文件 `<iostream>` 和 `<string>`,并使用了命名空间 `std`。此外,使用了 `string` 类型代替了 C 语言中的字符数组,更加方便、安全和易读。另外,还使用了 `cin.fail()` 检测输入是否合法,以及 `stoi()` 函数将字符串转换为整数。