在线等,关于用指针的排序算法
不需要写主函数里的东东
只要帮我用指针完成排序函数
我是初学者 有的函数没用过
#include <stdio.h>
#define N 5
#include <string.h>
typedefstruct info
{
int num;
char name[10];
int score;
}Info;
Info q1[5]=
{
{0,"甲",93},
{1,"乙",98},
{2,"丙",87},
{3,"丁",58},
{4,"戊",75},
};
/**********************************************
功 能: 按学号打印该学生的信息
参 数:
无
返回值:
无
依 赖:
无
**********************************************/
void print(Info *q1,int n)
{
printf("%d\t%s\t%d\n",q1[n].num,q1[n].name,q1[n].score);
}
/**********************************************
功 能: 显示程序的用户菜单界面
参 数:
无
返回值:
无
依 赖:
无
**********************************************/
void menu()
{
printf("Welcome to use this Auto system\n");
printf("*************************************\n");
printf("*1------------------输出所有学生信息*\n");
printf("*2----------------按学号查找学生信息*\n");
printf("*3----------按成绩排序,输出排名信息*\n");
printf("*4------------------------------退出*\n");
printf("*************************************\n");
}
/********************************************
功 能: 输出所有的学生信息
参 数:
无
返回值:
无
依 赖:
无
********************************************/
void printall(Info *q1,int n)
{
int i;
for(i=0;i<n;i++)
{
print(q1,i);
}
}
/********************************************
功 能: 通过学生学号查找信息
参 数:
Info *q1: 数组首地址
int num:学号
返回值:
如果存在,返回学号
如果不存在,返回-1
依 赖:
无
********************************************/
int searchbynum(Info *q1,int n)
{
int pos= -1;
int i;
for(i=0;i<N;i++)
{
if (q1[i].num==n)
{
pos = i;
break;
}
}
return pos;
}
/**********************************************
功 能: 给数字排序(修改指针)
参 数:
Info *q1:数组首地址
num:数组个数
返回值:
无
依 赖:
无
**********************************************/
void paixu(Info *q1,int n)
{
int i,j,min;
Info q2;
int *p;
int *q;
int *s;
for(i=0;i<n;i++)
{
min=q1[i].score;
for(j=i;j<n;j++)
{
if(q1[i].score<min)
{
min=q1[i];
}
}
}
}
int main()
{
printall(q1,N);
//searchbynum(q1,6);
return 0;
}
[解决办法]
void paixu(Info *q1,int n){int i,j,min;Info q2;int *p;int *q;int *s;for(i=0;i<n;i++){for(j=i+1;j<n;j++){if(q1[j].score<q1[i].score){memcpy(&q2, &q1[j], sizeof(Info));memcpy(&q1[j], &q1[i], sizeof(Info));memcpy(&q1[i], &q2, sizeof(Info));}}}}