编写一个checkValid函数,检查输入的数据是否有效,要求学号No:长度必须是八位,名字name:是大于三位小于20位的字符串,分数score:是0~100之间的小数或整数。同时要运用结构体。c++代码
时间: 2024-09-12 21:02:24 浏览: 48
pytorch制作自己的LMDB数据操作示例
5星 · 资源好评率100%
当然,我们可以定义一个结构体`Student`来存储学生的数据,然后编写一个名为`checkValid`的函数进行验证。下面是相应的C++代码:
```cpp
#include <string>
#include <sstream>
#include <iostream>
// 定义学生结构体
struct Student {
std::string No;
std::string name;
double score;
};
// 检查输入数据是否有效
bool checkValid(const Student& student) {
// 检查学号长度
if (student.No.length() != 8) {
return false;
}
// 检查名字长度
if (student.name.length() < 3 || student.name.length() >= 20) {
return false;
}
// 检查分数范围(0~100)
if (student.score < 0 || student.score > 100) {
return false;
}
// 将可能的浮点数转换为整数,检查是否有溢出(防止如0.999...不被接受)
int rounded_score = static_cast<int>(std::round(student.score));
if (rounded_score != static_cast<int>(student.score)) {
return false;
}
return true;
}
int main() {
Student input;
std::cout << "请输入学生的详细信息(例如:01234567 Alice 95):" << std::endl;
std::getline(std::cin, input.No);
std::getline(std::cin, input.name);
std::stringstream ss(std::cin.rdbuf());
ss >> input.score; // 注意这里用ss来避免小数点后非数字字符影响读取
if (checkValid(input)) {
std::cout << "输入数据有效!\n";
} else {
std::cout << "输入数据无效!\n";
}
return 0;
}
```
在这个例子中,`checkValid`函数接收一个`Student`结构体作为参数,并依次检查每个字段的条件。如果所有条件都满足,则返回`true`,否则返回`false`。
阅读全文