void sort(){ int i,j,s,temp1; char temp[20]; float temp2; printf("\n1.成绩从低到高排序\n"); printf("\n2.成绩从高到低排序\n"); printf("请选择:"); scanf("%d",&s); switch(s){ case 1: for(i=1;i<studnum;i++) { for(j=0;j<=studnum-i;j++) { if(stu[j].score>stu[j+1].score) { } } } //补充代码 break; case 2: //补充代码 break; }
时间: 2024-03-26 12:40:23 浏览: 75
Data_struct_1.rar_temp
为了补充代码,我们需要了解一下冒泡排序的基本思想,即通过相邻元素之间的比较和交换,每次将最大(或最小)的元素交换到序列的末尾,直到整个序列有序。在这个框架中,我们可以使用一个临时变量temp来存储需要交换的元素,然后通过交换实现排序。我们可以在if语句中补充以下代码:
```c
temp1 = stu[j].score;
stu[j].score = stu[j+1].score;
stu[j+1].score = temp1;
```
对于从高到低排序,我们只需要将if语句中的判断条件改为stu[j].score < stu[j+1].score,并且在交换元素时交换j和j+1的位置即可。完整代码如下:
```c
void sort(){
int i,j,s,temp1;
char temp[20];
float temp2;
printf("\n1.成绩从低到高排序\n");
printf("\n2.成绩从高到低排序\n");
printf("请选择:");
scanf("%d",&s);
switch(s){
case 1:
for(i=1;i<studnum;i++) {
for(j=0;j<studnum-i;j++) {
if(stu[j].score>stu[j+1].score) {
temp1 = stu[j].score;
stu[j].score = stu[j+1].score;
stu[j+1].score = temp1;
strcpy(temp,stu[j].name);
strcpy(stu[j].name,stu[j+1].name);
strcpy(stu[j+1].name,temp);
temp2 = stu[j].ave;
stu[j].ave = stu[j+1].ave;
stu[j+1].ave = temp2;
}
}
}
break;
case 2:
for(i=1;i<studnum;i++) {
for(j=0;j<studnum-i;j++) {
if(stu[j].score<stu[j+1].score) {
temp1 = stu[j].score;
stu[j].score = stu[j+1].score;
stu[j+1].score = temp1;
strcpy(temp,stu[j].name);
strcpy(stu[j].name,stu[j+1].name);
strcpy(stu[j+1].name,temp);
temp2 = stu[j].ave;
stu[j].ave = stu[j+1].ave;
stu[j+1].ave = temp2;
}
}
}
break;
}
}
```
阅读全文