【发布时间】:2021-10-06 13:17:09
【问题描述】:
我正在创建一个简单的数据库,其中包含具有以下信息的学生:名字、姓氏、个人编号、学习类型(永久或兼职学生)。
如果用户点击“showasc”,程序会询问是否按学生的名字或姓氏升序显示。
设法按姓名对成员进行排序,但问题是只有姓名被排序,而有关学生的其余信息没有排序,它保持创建顺序。请记住,我对编程还是很陌生。
这是对名称进行排序的代码部分:
else if(strcmp(command, "showasc") == 0)
{
char input[15];
printf("Show in ascendant order by first name or last name?\n ");
scanf("%s", input);
struct Student copyOfListOfStudents[20];
memcpy(©OfListOfStudents, &listOfStudents, sizeof(listOfStudents));
int i, j;
char s[100];
for(i=0;i<20;i++)
{
for(j=i+1;j<20;j++)
{
if(copyOfListOfStudents[i].valid && copyOfListOfStudents[j].valid)
{
if(strcmp(copyOfListOfStudents[i].firstName,copyOfListOfStudents[j].firstName) > 0)
{
strcpy(s,copyOfListOfStudents[i].firstName);
strcpy(copyOfListOfStudents[i].firstName,copyOfListOfStudents[j].firstName);
strcpy(copyOfListOfStudents[j].firstName,s);
}
}
else
break;
}
}
printStudents(copyOfListOfStudents);
例如,如果用户添加了以下学生:
- Lol Ipop,7802034567,全职
- 安娜香蕉,9901024356,兼职
然后想要显示按名字排序的学生,会发生这种情况:
- Anna Ipop,7802034567,全职
- Lol Banana,9901024356,兼职
我该如何解决这个问题? (希望我展示的代码足够了!)
【问题讨论】: