用C语言编写学号、姓名、所在专业、毕业否、出生日期、3 门课程的学分(高数 3 学分、 数字逻辑 2 学分、离散数学 4 学分)及对应成绩和绩点……
时间: 2023-11-08 15:47:05 浏览: 84
这是一个比较复杂的程序,我可以给你提供一些思路和代码片段,但是具体实现还需要你自己完成。
首先,你需要定义一个结构体来存储每个学生的信息:
```c
struct student {
char id[20]; // 学号
char name[20]; // 姓名
char major[20]; // 专业
int is_graduated; // 是否毕业,0表示未毕业,1表示已毕业
char birthdate[20]; // 出生日期
int math_credit; // 高数学分
int math_score; // 高数成绩
float math_gpa; // 高数绩点
int logic_credit; // 数字逻辑学分
int logic_score; // 数字逻辑成绩
float logic_gpa; // 数字逻辑绩点
int discrete_credit;// 离散数学学分
int discrete_score; // 离散数学成绩
float discrete_gpa; // 离散数学绩点
};
```
然后,你可以定义一个数组来存储所有学生的信息:
```c
struct student students[100]; // 假定最多有100个学生
int num_students = 0; // 当前学生数
```
接下来,你需要编写函数来输入和输出学生信息。例如,下面是一个输入学生信息的函数:
```c
void input_student_info(struct student *s) {
printf("请输入学号:");
scanf("%s", s->id);
printf("请输入姓名:");
scanf("%s", s->name);
printf("请输入专业:");
scanf("%s", s->major);
printf("请输入是否毕业(0表示未毕业,1表示已毕业):");
scanf("%d", &s->is_graduated);
printf("请输入出生日期:");
scanf("%s", s->birthdate);
printf("请输入高数学分和成绩:");
scanf("%d %d", &s->math_credit, &s->math_score);
s->math_gpa = calculate_gpa(s->math_score);
printf("请输入数字逻辑学分和成绩:");
scanf("%d %d", &s->logic_credit, &s->logic_score);
s->logic_gpa = calculate_gpa(s->logic_score);
printf("请输入离散数学学分和成绩:");
scanf("%d %d", &s->discrete_credit, &s->discrete_score);
s->discrete_gpa = calculate_gpa(s->discrete_score);
}
```
其中,`calculate_gpa` 函数可以根据成绩计算绩点,例如:
```c
float calculate_gpa(int score) {
if (score >= 90) {
return 4.0;
} else if (score >= 85) {
return 3.7;
} else if (score >= 82) {
return 3.3;
} else if (score >= 78) {
return 3.0;
} else if (score >= 75) {
return 2.7;
} else if (score >= 72) {
return 2.3;
} else if (score >= 68) {
return 2.0;
} else if (score >= 64) {
return 1.5;
} else if (score >= 60) {
return 1.0;
} else {
return 0;
}
}
```
类似地,你也需要编写一个输出学生信息的函数:
```c
void print_student_info(const struct student *s) {
printf("学号:%s\n", s->id);
printf("姓名:%s\n", s->name);
printf("专业:%s\n", s->major);
printf("是否毕业:%s\n", s->is_graduated ? "是" : "否");
printf("出生日期:%s\n", s->birthdate);
printf("高数:学分%d,成绩%d,绩点%.1f\n", s->math_credit, s->math_score, s->math_gpa);
printf("数字逻辑:学分%d,成绩%d,绩点%.1f\n", s->logic_credit, s->logic_score, s->logic_gpa);
printf("离散数学:学分%d,成绩%d,绩点%.1f\n", s->discrete_credit, s->discrete_score, s->discrete_gpa);
}
```
最后,你需要编写一个主函数来调用这些函数,例如:
```c
int main() {
struct student s;
input_student_info(&s);
print_student_info(&s);
return 0;
}
```
当然,这只是一个简单的示例,你需要根据具体需求来修改和完善这个程序。
阅读全文