运用C语言中基本知识,顺序结构、选择结构、循环结构、数组、函数、指针,对学生基本信息,包括学号、至少三门课成绩完成如下操作:
学生基本信息录入;
学生基本信息的输出;
按学号查询学生信息;
按学号修改某学生信息并输出;
求每个人平均成绩;
删除某学生信息;
添加某学生信息
输出平均分大于80分的同学信息。
2、要求
① 学生成绩存储在数组中;
② 部分功能要用函数实现;
④ 程序能正确执行,输入与输出有必要的提示信息;
⑤ 有能力的同学可以设计功能菜单。
3、结果输出要求界面直观、格式规
如何运用C语言实现以下功能
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
关注引自免费微信小程序:皆我百晓生
为了解决上述问题,我们可以构建一个C语言程序,该程序将使用数组和结构体来存储学生信息,并通过函数实现各种操作。下面是一个可能的实现方案:
#include <stdio.h> #include <string.h> #define MAX_STUDENTS 100 // 最大可存储的学生数 // 定义学生结构体 typedef struct { char studentID[10]; float scores[3]; } Student; Student students[MAX_STUDENTS]; // 存储学生数据的数组 int numStudents = 0; // 当前学生的数量 // 函数声明 void addStudent(); void printAllStudents(); void searchStudentByID(char *id); void modifyStudentByID(char *id); float calculateAverage(Student s); void deleteStudentByID(char *id); void printStudentsWithAverageAbove80(); int main() { int choice; do { printf("\n\nMenu:\n"); printf("1. Add a student\n"); printf("2. Print all students' information\n"); printf("3. Search for a student by ID\n"); printf("4. Modify a student's information by ID\n"); printf("5. Calculate average score of each student\n"); printf("6. Delete a student by ID\n"); printf("7. Print students with average above 80\n"); printf("8. Exit\n"); printf("Enter your choice: "); scanf("%d", &choice); switch (choice) { case 1: addStudent(); break; case 2: printAllStudents(); break; case 3: char id[10]; printf("Enter the student ID to search: "); scanf("%s", id); searchStudentByID(id); break; case 4: printf("Enter the student ID to modify: "); scanf("%s", id); modifyStudentByID(id); break; case 5: for (int i = 0; i < numStudents; i++) { printf("Average score of %s is %.2f\n", students[i].studentID, calculateAverage(students[i])); } break; case 6: printf("Enter the student ID to delete: "); scanf("%s", id); deleteStudentByID(id); break; case 7: printStudentsWithAverageAbove80(); break; case 8: printf("Exiting...\n"); break; default: printf("Invalid choice! Please try again.\n"); } } while (choice != 8); return 0; } void addStudent() { if (numStudents >= MAX_STUDENTS) { printf("Maximum number of students reached!\n"); return; } printf("Enter student ID: "); scanf("%s", students[numStudents].studentID); for (int i = 0; i < 3; i++) { printf("Enter score %d: ", i + 1); scanf("%f", &students[numStudents].scores[i]); } numStudents++; printf("Student added successfully!\n"); } void printAllStudents() { for (int i = 0; i < numStudents; i++) { printf("Student ID: %s\n", students[i].studentID); for (int j = 0; j < 3; j++) { printf("Score %d: %.2f\n", j + 1, students[i].scores[j]); } printf("\n"); } } void searchStudentByID(char *id) { int found = 0; for (int i = 0; i < numStudents; i++) { if (strcmp(students[i].studentID, id) == 0) { printf("Found student:\n"); printf("Student ID: %s\n", students[i].studentID); for (int j = 0; j < 3; j++) { printf("Score %d: %.2f\n", j + 1, students[i].scores[j]); } found = 1; break; } } if (!found) { printf("Student not found!\n"); } } void modifyStudentByID(char *id) { int found = 0; for (int i = 0; i < numStudents; i++) { if (strcmp(students[i].studentID, id) == 0) { printf("Enter new scores:\n"); for (int j = 0; j < 3; j++) { printf("Score %d: ", j + 1); scanf("%f", &students[i].scores[j]); } printf("Student information updated successfully!\n"); found = 1; break; } } if (!found) { printf("Student not found!\n"); } } float calculateAverage(Student s) { float sum = 0; for (int i = 0; i < 3; i++) { sum += s.scores[i]; } return sum / 3; } void deleteStudentByID(char *id) { int index = -1; for (int i = 0; i < numStudents; i++) { if (strcmp(students[i].studentID, id) == 0) { index = i; break; } } if (index != -1) { for (int i = index; i < numStudents - 1; i++) { students[i] = students[i + 1]; } numStudents--; printf("Student deleted successfully!\n"); } else { printf("Student not found!\n"); } } void printStudentsWithAverageAbove80() { for (int i = 0; i < numStudents; i++) { if (calculateAverage(students[i]) > 80) { printf("Student ID: %s\n", students[i].studentID); for (int j = 0; j < 3; j++) { printf("Score %d: %.2f\n", j + 1, students[i].scores[j]); } printf("\n"); } } }这段代码定义了一个
Student结构体,用于存储学生的学号和成绩。它还包含了几个函数,用于执行题目中要求的各种操作。例如,addStudent()用于添加学生信息,printAllStudents()用于打印所有学生的信息,而searchStudentByID()则根据学号搜索特定的学生信息。其他函数也相应地实现了题目的要求。这个程序还包括了一个主菜单,用户可以根据菜单选项进行不同的操作。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录