void sortStudents() { int i, j; Student temp; for (i = 0; i < studentCount - 1; ++i) { for (j = i + 1; j < studentCount; ++j) { if (students[i].id > students[j].id) { temp = students[i]; students[i] = students[j]; students[j] = temp; } } } printf("Sorting successful!\n"); } void saveToFile() { FILE *fp; int i; fp = fopen("E:/C language flie/students.txt","w"); if (!fp) { printf("Unable to open file!\n"); return; } fprintf(fp, "Student ID\nName\nGender\nAddress\nPhone number\nChinese score\nMath score\nEnglish score\nAverage score\nEtiquette score\nComprehensive ranking\nComprehensive score\n"); for (i = 0; i < studentCount; ++i) { fprintf(fp, "%d\n%s\n%s\n%s\n%s\n%d\n%d\n%d\n%.1f\n%d\n%d\n%.1f\n", students[i].id, students[i].name, students[i].gender, students[i].address, students[i].phone, students[i].chinese, students[i].math, students[i].english, students[i].average, students[i].etiquette, students[i].rank, students[i].score); } fclose(fp); printf("Save successful!\n"); }
时间: 2024-02-14 14:32:18 浏览: 84
这段代码是上述学生信息管理系统的两个附加功能:对学生信息进行排序并将学生信息保存到文件中。
函数`sortStudents()`用于对学生信息按照学生ID进行排序。它使用了两个嵌套的循环,分别遍历每一个学生信息,并比较其ID与后面学生信息的ID大小。如果前面学生信息的ID大于后面学生信息的ID,则将两个学生信息交换位置。最后输出一个排序成功的提示信息。
函数`saveToFile()`用于将所有学生信息保存到文件中。它首先打开一个名为`students.txt`的文件,并将文件指针存储在`fp`变量中。如果无法打开文件,则输出一个提示信息并返回。接着,它在文件中写入一行表头,包含了学生信息的各个字段。然后,它遍历所有学生信息,并将各个字段的值按照指定的格式写入文件中。最后,它关闭文件,并输出一个保存成功的提示信息。
需要注意的是,函数`saveToFile()`中的文件路径是写死的,因此如果需要在其他位置使用该函数,需要修改文件路径。
相关问题
void sortRecords() { printf("1.按学号排序\n"); printf("2.按姓名排序\n"); printf("3.按平均成绩排序\n"); printf("请选择排序方式:"); int sortChoice; scanf("%d", &sortChoice); if(sortChoice==1) { // 按学号排序(选择排序法) for (int i=0;i<studentCount-1;i++) { int minIndex=i; for (int j=i+1;j<studentCount;j++) { if (students[j].id<students[minIndex].id) { minIndex=j; } } struct Student temp=students[i]; students[i]=students[minIndex]; students[minIndex]=temp; } } else if(sortChoice==2) { // 按姓名排序(冒泡排序法) for(int i=0;i<studentCount-1;i++) { for(int j=0;j<studentCount-i-1;j++) { if(strcmp(students[j].name, students[j+1].name)>0) { struct Student temp=students[j]; students[j]=students[j+1]; students[j+1]=temp; } } } } else if(sortChoice==3) { // 按平均成绩排序(冒泡排序法) for(int i=0;i<studentCount-1;i++) { for(int j=0;j<studentCount-i-1;j++) { if(students[j].average>students[j+1].average) { struct Student temp=students[j]; students[j]=students[j+1]; students[j+1]=temp; } } } } else { printf("无效的排序方式!\n"); return; } printf("成绩排序成功!\n"); listRecords(); }的算法思想
这段代码实现了对学生记录的排序功能,包括按学号、姓名、平均成绩三种排序方式。其中,按学号排序采用选择排序法,按姓名和平均成绩排序采用冒泡排序法。
选择排序法的基本思想是:每次从待排序的元素中选出最小的元素,将其放到已排序部分的末尾。具体实现过程是,从第一个元素开始,依次比较后面的元素,找到最小的元素,并与第一个元素交换位置。然后从第二个元素开始,继续这个过程,直到所有元素都被排序。
冒泡排序法的基本思想是:依次比较相邻的两个元素,如果它们的顺序不对则交换它们的位置。具体实现过程是,从第一个元素开始,依次比较相邻的两个元素,如果前面的元素比后面的元素大,则交换它们的位置。这样一趟比较下来,最大的元素就被排到了最后面。然后从第二个元素开始,继续这个过程,直到所有元素都被排序。
在这段代码中,首先根据用户选择的排序方式,分别采用不同的排序算法进行排序。其中,选择排序法用于按学号排序,冒泡排序法用于按姓名和平均成绩排序。排序完成后,再调用listRecords函数输出排序后的学生记录。
void SortStudent(){ for(int i=0;i<num-1;i++){ for(int j=0;j<num-1-i;j++){ if(students[j].All < students[j+1].All){ struct Student temp = students[j]; students[j] = students[j+1]; students[j+1] = temp; } } } for(int i=0;i<num;i++){ printf("第%d名\t ID:%s\t 姓名:%s\t 总成绩:%5.1f\n",i+1, students[i].ID,students[i].Name,students[i].All); } }
好的,这是一段 C 语言代码,下面是注释:
```
void SortStudent(){ // 声明一个无返回值的函数 SortStudent
// 使用冒泡排序算法进行排序
for(int i=0;i<num-1;i++){ // 外层循环,控制排序轮数
for(int j=0;j<num-1-i;j++){ // 内层循环,控制每轮比较次数
if(students[j].All < students[j+1].All){ // 如果前一个学生的总成绩比后一个学生低
struct Student temp = students[j]; // 则交换这两个学生的信息
students[j] = students[j+1];
students[j+1] = temp;
}
}
}
// 输出排序后的学生信息
for(int i=0;i<num;i++){
printf("第%d名\t ID:%s\t 姓名:%s\t 总成绩:%5.1f\n",i+1,
students[i].ID,students[i].Name,students[i].All);
}
}
```
这段代码定义了一个函数 `SortStudent`,它接受一个名为 `students` 的结构体数组,其中存储了学生的 ID、姓名和总成绩信息。函数使用冒泡排序算法对学生数组进行排序,并输出排序后的学生信息。在执行排序操作时,代码使用了两层循环,外层循环控制排序轮数,内层循环控制每轮比较次数。如果前一个学生的总成绩比后一个学生低,则交换这两个学生的信息。最后,函数使用 `printf` 函数输出排序后的学生信息。
阅读全文
相关推荐
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)