结构体数组使用函数实现选择排序为何排序失败呢?
//以结构体指针作为函数的参数处理#include<stdio.h>
struct Lesson
{
float math;
float art;
};
struct Student
{
char name[5];
struct Lesson grade;
};
int main()
{
void convert(struct Student *p,int k);
int i;
struct Student stu[5];
struct Student *p;
p=stu;
for(i=0;i<5;i++)
{
scanf("%f,%f,%s",&((*p).grade.art),&((*p).grade.math),&((*p).name)); //注意结构体数组指针的写法问题,因为涉及到符号优先级的问题!
p++;
}
puts("The Information data is: ");
p=stu;
for(i=0;i<5;i++)
{
printf("%s %.1f %.1f\n",(*p).name,(*p).grade.art,(*p).grade.math);
p++;
}
p=stu;
convert(p,5);
puts("The converted array is:");
for(i=0;i<5;i++)
{
printf("%s %.1f %.1f\n",(*p).name,(*p).grade.art,(*p).grade.math);
p++;
}
return 0;
}
void convert(struct Student *p,int k) //函数实现选择排序为何屡屡失败呢?
{
struct Student exo;
int i,j,m;
for(i=0;i<k-1;i++)
{
m=i;
for(j=1;j<k;j++)
{
if((*(p+j)).grade.math<(*(p+m)).grade.math)
m=j;
}
if(m!=i)
{
exo=*(p+m);
*(p+m)=*(p+i);
*(p+i)=exo;
}
}
}
//找不到原因!感觉没有错误啊~根据math成绩高低进行排序,此处使用选择排序,但是却排序失败!