用冒泡排序把几位学生的某一门课程成绩按升序输出,编译的没问题,为什么排序不了?请各位指教
#include<stdio.h>#define n 2 //定义人数
#define c 3 //定义课程门数
void course_ascending(struct student *p);
struct student
{
char name[10];
int stu_id;
int score[c];
char sex;
int age;
}a[n];
int main()
{
struct student *p;
p=a;
for(int i=0;i<n;i++)
{
printf("第%d个学生的信息为\n",i+1);
printf("请输入姓名:");
scanf("%s",&(*p).name);
printf("请输入学号:");
scanf("%d",&(*p).stu_id);
printf("请输入成绩:");
for(int j=0;j<c;j++)
scanf("%d",&(*p).score[j]);
getchar();
printf("请输入性别:");
scanf("%c",&(*p).sex);
getchar();
printf("请输入年龄:");
scanf("%d",&(*p).age);
p++;
}
int xuanze;
printf("菜单:\n\
0 退出 :\n\
9 把某门课的成绩按升序排列:\n");
printf("请输入你的选择:0-1:");
scanf("%d",&xuanze);
switch(xuanze)
{
case 0:return 0;
case 1:course_ascending(p);break;
default:printf("enter date error!:\n");
}
return 0;
}
void course_ascending(struct student *p)
{
int course;
int max;
printf("请输入你要按升序排列的课程号:\n");
scanf("%d",&course);
for(int j=0;j<n-1;j++)
{
for(int i=0;i<n-1-j;i++)
{
if((*(p+i)).score[course]>(*(p+i+1)).score[course])
{
max=(*(p+i)).score[course];
(*(p+i)).score[course]=(*(p+i+1)).score[course];
(*(p+i+1)).score[course]=max;
}
}
}
printf("第%d门课程排序后的成绩为:\n",course);
for(int i=0;i<n;i++)
printf("%d",(*(p+i)).score[course]);
}