Skip to content

Instantly share code, notes, and snippets.

@novnan
Last active January 3, 2016 02:29
Show Gist options
  • Save novnan/8395486 to your computer and use it in GitHub Desktop.
Save novnan/8395486 to your computer and use it in GitHub Desktop.
// 有近百名学生选修了某们课程,他们来源不同的专业班级,按班级,学号顺序打印学生的班级名称,学号和姓名。
#include <stdio.h>
#include <string.h>
#define N 5
#define LENGTH 10
void s();
void main()
{
char sName[N][LENGTH], sID[N][LENGTH], sClass[N][LENGTH];
char sTemp;
int i, j;
printf("逐行输入学生的班级,学号和姓名:");
for(i = 0; i < N; i++)
{
scanf("%s%s%s", sClass[i], sID[i], sName[i]);
}
// 冒泡法,排序的依据是班级和学号,即优先排班级,班级一样再按学号排序
for(i = 0; i < N; i++)
{
for(j = i + 1; j < N; j++)
{
if(strcmp(sClass[i], sClass[j]) > 0)
{
strcpy(sTemp, sClass[i]); //sTemp = sClass[i];
strcpy(sClass[i], sClass[j]); //sClass[i] = sClass[j];
strcpy(sClass[j], sTemp); //sClass[j] = sTemp;
if(strcmp(sID[i], sID[j]) > 0)
s(sID[i], sID[j], sName[i], sName[j]);
}
else if(strcmp(sClass[i], sClass[j]) < 0)
{
if(strcmp(sID[i], sID[j]) > 0)
s(sID[i], sID[j], sName[i], sName[j]);
}
else
{
if(strcmp(sID[i], sID[j]) > 0)
s(sID[i], sID[j], sName[i], sName[j]);
}
}
}
printf("排序后的班级,学号和姓名:\n");
for(i = 0; i < N; i++)
{
printf("%s %s %s\n", sClass[i], sID[i], sName[i]);
}
}
void s()
{
char sName[N][LENGTH], sID[N][LENGTH], sClass[N][LENGTH];
char sTemp;
int i, j;
strcpy(sTemp, sID[i]); //sTemp = sID[i];
strcpy(sID[i], sID[j]); //sID[i] = sID[j];
strcpy(sID[j], sTemp); //sID[j] = sTemp;
strcpy(sTemp, sName[i]); //sTemp = sName[i];
strcpy(sName[i], sName[j]); //sName[i] = sName[j];
strcpy(sName[j], sTemp); //sName[j] = sTemp;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment