用c语言编程:利用结构体,输入学生学号、数学成绩、语文成绩、英语成绩、姓名,输入学号或姓名输出该学生学号、姓名和三门科目成绩的平均分
时间: 2024-09-19 13:10:27 浏览: 40
在C语言中,你可以创建一个结构体来存储学生的信息,并编写一个程序来读取学生的数据,然后按学号或姓名搜索特定的学生。以下是一个简单的示例:
```c
#include <stdio.h>
#include <string.h>
// 定义学生结构体
typedef struct {
int id;
float math_score;
float chinese_score;
float english_score;
char name[50];
} Student;
// 搜索并打印学生信息的辅助函数
void search_and_print(Student* students, int num_students, const char* search_key, float* avg_score) {
for (int i = 0; i < num_students; i++) {
if (strcmp(search_key, students[i].name) == 0 || students[i].id == atoi(search_key)) { // 比较名字和转换成整数的学号
printf("学号:%d, 姓名:%s\n", students[i].id, students[i].name);
*avg_score = (students[i].math_score + students[i].chinese_score + students[i].english_score) / 3.0; // 计算平均分
printf("平均成绩:%.2f\n", *avg_score);
break; // 找到后立即停止搜索
}
}
}
int main() {
Student students[10]; // 假设最多有10名学生
int num_students = 0;
// 读取学生信息
while (num_students < 10) {
printf("请输入学生信息(学号 敬业 科目名 姓名): ");
scanf("%d%f%f%f%s", &students[num_students].id, &students[num_students].math_score, &students[num_students].chinese_score, &students[num_students].english_score, students[num_students].name);
num_students++;
}
// 示例,根据用户输入查询
char search_input[50];
printf("请输入要查找的学生学号或姓名:");
scanf("%s", search_input);
float avg_score;
search_and_print(students, num_students, search_input, &avg_score);
return 0;
}
```
在这个程序中,`search_and_print`函数根据用户提供的学号或姓名找到对应的学生,并计算其三门科目的平均分。
阅读全文