成绩处理程序实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、实验目的
1. 熟悉C语言编程环境,掌握C语言的基本语法和编程技巧。
2. 学习使用循环、条件语句等控制结构编写程序。
3. 熟悉数据结构,掌握数组的运用。
4. 实现一个成绩处理程序,能够实现输入、输出、排序、查询等功能。
二、实验内容
1. 设计一个成绩处理程序,实现以下功能:
(1)输入学生信息,包括姓名、学号、成绩。
(2)输出所有学生信息。
(3)按照成绩从高到低排序。
(4)查询学生信息。
2. 实验要求:
(1)使用C语言编写程序。
(2)程序结构清晰,代码规范。
(3)实现功能完整,无错误。
三、实验步骤
1. 定义学生结构体,包含姓名、学号、成绩等属性。
2. 创建一个数组用于存储学生信息。
3. 编写函数实现以下功能:
(1)输入学生信息:通过循环让用户输入学生信息,并存储到数组中。
(2)输出所有学生信息:遍历数组,输出每个学生的信息。
(3)排序:使用冒泡排序算法对数组进行排序,按照成绩从高到低排序。
(4)查询学生信息:通过学号或姓名查询学生信息,并输出结果。
4. 编写主函数,调用上述函数实现成绩处理程序。
四、实验代码
```c
#include <stdio.h>
#include <string.h>
#define MAX_STUDENTS 100
typedef struct {
char name[50];
int id;
float score;
} Student;
void inputStudents(Student students[], int count);
void outputStudents(const Student students[], int count); void sortStudents(Student students[], int count);
void queryStudent(const Student students[], int count); int main() {
Student students[MAX_STUDENTS];
int count = 0;
inputStudents(students, &count);
outputStudents(students, count);
sortStudents(students, count);
queryStudent(students, count);
return 0;
}
void inputStudents(Student students[], int count) {
printf("Enter the number of students: ");
scanf("%d", count);
for (int i = 0; i < count; i++) {
printf("Enter information for student %d:\n", i + 1);
printf("Name: ");
scanf("%s", students[i].name);
printf("ID: ");
scanf("%d", &students[i].id);
printf("Score: ");
scanf("%f", &students[i].score);
}
}
void outputStudents(const Student students[], int count) {
printf("\nList of students:\n");
for (int i = 0; i < count; i++) {
printf("Name: %s, ID: %d, Score: %.2f\n", students[i].name, students[i].id, students[i].score);
}
}
void sortStudents(Student students[], int count) {
for (int i = 0; i < count - 1; i++) {
for (int j = 0; j < count - i - 1; j++) {
if (students[j].score < students[j + 1].score) {
Student temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
}
void queryStudent(const Student students[], int count) {
int id;
char name[50];
int found = 0;
printf("Enter student ID or name to query: ");
scanf("%s", name);
if (strlen(name) > 0) {
for (int i = 0; i < count; i++) {
if (strcmp(students[i].name, name) == 0) {
printf("Name: %s, ID: %d, Score: %.2f\n", students[i].name, students[i].id, students[i].score);
found = 1;
break;
}
}
} else {
printf("Enter student ID: ");
scanf("%d", &id);
for (int i = 0; i < count; i++) {
if (students[i].id == id) {
printf("Name: %s, ID: %d, Score: %.2f\n", students[i].name, students[i].id, students[i].score);
found = 1;
break;
}
}
}
if (!found) {
printf("Student not found.\n");
}
}
```
五、实验结果
1. 输入学生信息:
```
Enter the number of students: 3
Enter information for student 1:
Name: Zhang San
ID: 1001
Score: 90.0
Enter information for student 2: Name: Li Si
ID: 1002
Score: 85.0
Enter information for student 3: Name: Wang Wu
ID: 1003
Score: 95.0
```
2. 输出所有学生信息:
```
List of students:
Name: Zhang San, ID: 1001, Score: 90.00 Name: Li Si, ID: 1002, Score: 85.00 Name: Wang Wu, ID: 1003, Score: 95.00 ```
3. 按成绩排序:
```
List of students:
Name: Wang Wu, ID: 1003, Score: 95.00 Name: Zhang San, ID: 1001, Score: 90.00 Name: Li Si, ID: 1002, Score: 85.00
```
4. 查询学生信息:
```
Enter student ID or name to query: Zhang San
Name: Zhang San, ID: 1001, Score: 90.00
```
六、实验总结
本次实验通过实现一个成绩处理程序,学习了C语言的基本语法和编程技巧,掌握了数据结构、数组的运用,以及冒泡排序算法。
在实验过程中,我遇到了一些问题,但在查阅资料和与同学讨论后,最终解决了这些问题。
通过本次实验,我提高了自己的编程能力和解决问题的能力。