void sort() { int o,i; printf("\n请选择排序方式:\n"); printf("1.按学号排序\n"); printf("2.按姓名排序\n"); printf("\n请选择:"); p2:scanf("%d",&o); if(o>=1&&o<=2) { switch(o) { case 1:sortnember();break; case 2:sortname();break; } } else { printf("\n错误,请重新输入\n"); goto p2; } printf("\n学号 姓名 年龄 性别 班级 宿舍 电话号码\n"); for(i=0;i<STUDENT_NUM;i++) { if(student[i].no!=-1) { printf("%-4d%-4s%-4d%-3s%-4d%-5s%s\n",student[i].no,student[i].name,student[i].age,student[i].sex,student[i].c1ass,student[i].address,student[i].phone); } } printf("\n返回菜单\n"); main(); } void sortnember() { int i,j; struct Student temp; for(i=0;i<STUDENT_NUM;i++) { for(j=0;j<STUDENT_NUM-i-1;j++) { if(student[j].no>student[j+1].no) { temp=student[j]; student[j]=student[j+1]; student[j+1]=temp; } } } } void sortname() { int i,j; struct Student temp; for(i=0;i<STUDENT_NUM;i++) { for(j=0;j<STUDENT_NUM-i-1;j++) { if(strcmp(student[j].name,student[j+1].name)>0) { temp=student[j]; student[j]=student[j+1]; student[j+1]=temp; } } } }有什么问题吗,可以给出修改后的代码吗?
时间: 2024-03-19 14:45:40 浏览: 43
这段代码是一个学生信息管理系统中的排序函数,可以按照学号或姓名进行排序。其中,sort()函数是主函数,用于调用sortnember()和sortname()函数来实现排序。sortnember()和sortname()函数分别用于按照学号和姓名排序,使用的是冒泡排序算法。
至于是否有问题,需要根据具体情况来确定。如果代码运行没有问题,排序结果正确,那么就没有问题。如果存在bug或者需要优化的地方,可以进行修改。
以下是修改后的代码,主要是添加了一些注释,使得代码更易读、易懂:
```
void sort() {
int o,i;
printf("\n请选择排序方式:\n");
printf("1.按学号排序\n");
printf("2.按姓名排序\n");
printf("\n请选择:");
// 输入排序方式
p2:scanf("%d",&o);
if(o>=1&&o<=2) {
switch(o) {
case 1:sortnember();break;
case 2:sortname();break;
}
} else {
printf("\n错误,请重新输入\n");
goto p2;
}
// 输出排序结果
printf("\n学号 姓名 年龄 性别 班级 宿舍 电话号码\n");
for(i=0;i<STUDENT_NUM;i++) {
if(student[i].no!=-1) {
printf("%-4d%-4s%-4d%-3s%-4d%-5s%s\n",student[i].no,student[i].name,student[i].age,student[i].sex,student[i].c1ass,student[i].address,student[i].phone);
}
}
printf("\n返回菜单\n");
main();
}
void sortnember() {
int i,j;
struct Student temp;
// 按照学号排序
for(i=0;i<STUDENT_NUM;i++) {
for(j=0;j<STUDENT_NUM-i-1;j++) {
if(student[j].no>student[j+1].no) {
temp=student[j];
student[j]=student[j+1];
student[j+1]=temp;
}
}
}
}
void sortname() {
int i,j;
struct Student temp;
// 按照姓名排序
for(i=0;i<STUDENT_NUM;i++) {
for(j=0;j<STUDENT_NUM-i-1;j++) {
if(strcmp(student[j].name,student[j+1].name)>0) {
temp=student[j];
student[j]=student[j+1];
student[j+1]=temp;
}
}
}
}
```
阅读全文