c++编写程序实现某学生姓名、年龄(合理范围:6~26)、五分制成绩(合理范围:0~5)的输入,调用函数实现检查年龄和成绩是否合理,抛出相应的异常信息;如果无异常,则返回对应的百分制成绩。要求主函数中检测和捕获异常,并输出该学生的姓名、年龄和百分制成绩
时间: 2024-10-16 11:13:24 浏览: 18
在 C++ 中,你可以使用 `std::cin` 获取用户输入,`try-catch` 结构来处理可能出现的异常,以及 `throw` 关键字来抛出异常。首先,你需要创建一个结构体来存储学生的属性,然后定义一个函数来检查输入并计算百分制成绩:
```cpp
#include <iostream>
#include <stdexcept>
// 定义学生属性结构体
struct Student {
std::string name;
int age;
int score;
};
// 函数用于检查输入并计算百分制成绩
int calculatePercentage(const Student& student) {
if (student.age < 6 || student.age > 26) {
throw std::invalid_argument("Age is not within the valid range.");
}
if (student.score < 0 || student.score > 5) {
throw std::invalid_argument("Score is not within the valid range.");
}
return (double)student.score * 20; // 五分制转换为百分制
}
int main() {
try {
// 获取学生信息
Student student;
std::cout << "Enter student's name: ";
std::getline(std::cin, student.name);
std::cout << "Enter student's age: ";
std::cin >> student.age;
std::cout << "Enter student's score: ";
std::cin >> student.score;
// 调用检查并计算百分制成绩的函数
int percentage = calculatePercentage(student);
// 输出结果
std::cout << "Student Name: " << student.name << "\n";
std::cout << "Age: " << student.age << "\n";
std::cout << "Percentage Score: " << percentage << "%\n";
} catch (const std::exception& e) {
// 捕获并输出异常信息
std::cerr << "Error: " << e.what() << '\n';
}
return 0;
}
```
在这个例子中,当输入的年龄或分数不在指定范围内时,会抛出 `std::invalid_argument` 异常,主函数通过 `catch` 块捕获并显示错误信息。
阅读全文