C语言在一个结构体内依次定义学生姓名、学号、三个志愿编码的填空项、成绩,学生录取专业查询通过输入自己的密码和学号,输出这个学生被什么专业录取的信息
时间: 2023-12-16 19:12:31 浏览: 79
好的,这是一个关于C语言结构体和条件语句的问题。
首先,我们可以定义一个结构体,包含学生的姓名、学号、三个志愿编码的填空项、成绩等信息。结构体的定义如下所示:
```
struct student {
char name[20]; // 学生姓名
int id; // 学号
int choices[3]; // 三个志愿编码的填空项
int grade; // 成绩
};
```
然后,我们可以定义一个数组,存储所有录取专业的信息。数组中每个元素都是一个结构体,包含专业名称、招生人数、已录取人数等信息。数组的定义如下所示:
```
struct major {
char name[20]; // 专业名称
int quota; // 招生人数
int accepted; // 已录取人数
};
struct major majors[] = {
{"计算机科学与技术", 50, 0},
{"软件工程", 30, 0},
{"信息安全", 20, 0},
{"物联网工程", 20, 0},
{"数字媒体技术", 10, 0}
};
```
接下来,我们可以编写一个函数,根据学生的志愿和成绩,查询该学生被哪个专业录取。函数的定义如下所示:
```
void query_major(struct student s, char* password) {
// 先判断密码是否正确
if (strcmp(password, "123456") != 0) {
printf("密码错误!\n");
return;
}
// 遍历所有专业
for (int i = 0; i < sizeof(majors) / sizeof(struct major); i++) {
struct major m = majors[i];
// 如果该专业已经录满了人,跳过
if (m.accepted >= m.quota) {
continue;
}
// 如果该专业不在学生的志愿中,跳过
if (s.choices[0] != i && s.choices[1] != i && s.choices[2] != i) {
continue;
}
// 如果学生的成绩不够,跳过
if (s.grade < 60) {
continue;
}
// 如果符合录取条件,输出录取信息
printf("您已被录取到%s专业!\n", m.name);
// 更新专业已录取人数
majors[i].accepted++;
return;
}
// 如果没有符合条件的专业,输出未被录取信息
printf("很抱歉,您未被录取!\n");
}
```
最后,我们可以在主函数中调用该函数,传入学生的信息和密码,查询该学生被哪个专业录取。代码示例如下:
```
int main() {
// 创建一个学生结构体,填写学生信息
struct student s = {"张三", 123456, {0, 2, 3}, 75};
// 查询该学生被哪个专业录取
query_major(s, "123456");
return 0;
}
```
以上就是一个简单的C语言程序,用于查询学生被哪个专业录取的信息。
阅读全文