当前位置: 代码迷 >> C语言 >> 菜鸟求助排序问题.谢谢.
  详细解决方案

菜鸟求助排序问题.谢谢.

热度:116   发布时间:2007-03-17 14:01:30.0
菜鸟求助排序问题.谢谢.
请先不要说出答案.等我先做一下.实在不会再说.
问题:
将结构中的平均数排序.定义了指针函数void sort(*int,*int,*int);这样不知道对不对?如果调用sort的话,应该怎么调用?我的思路是调用stu[j].a--c然后在子函数里相加排序.不知道这样的思路动对不对?在sort子函数中该怎么设置相关参数?谢谢.
#include<stdio.h>
struct student
{
char name[20];
int number;
int a;
int b;
int c;
}stu[3];
void sort(*int,*int,*int);
void main()
{
int j=0,k=0;
char i;
do
{
printf("请输入名字:\n");
scanf("%s",&stu[j].name);
printf("请输入序号:\n");
scanf("%d",&stu[j].number);
printf("请输入成绩:\n");
scanf("%d",&stu[j].a);
printf("请输入成绩:\n");
scanf("%d",&stu[j].b);
printf("请输入成绩:\n");
scanf("%d",&stu[j].c);
j++;
printf("请选择是否继续:Y/N");
fflush(stdin);
scanf("%c",&i);

}while(i=='Y'||i=='y');
printf("排序前的详细内容为:\n");

printf("学号 姓名 平均成绩\n");


for(k=0;k<j;k++)
{
printf("%d\t%s\t%d\t",stu[k].number,stu[k].name,(stu[k].a+stu[k].b+stu[k].c)/3);
}



}

----------------解决方案--------------------------------------------------------
我也是个新手
而我现在也只会用冒泡法来解决问题
----------------解决方案--------------------------------------------------------
你可以这样

在主程序中把平均数都求出来放到一个数组A里,编号对应.然后编个函数来进行对数组中的元素排序,把A作为实参传给形参就是了,函数的形参定义为一个整型数组,大小和数组A一样
----------------解决方案--------------------------------------------------------
void sort(*int,*int,*int);呵呵,这样可以吗?很久没有看c了,我感觉好像是不对!是不是应该这样啊
void sort(int *, int *, int *);
----------------解决方案--------------------------------------------------------

应该是下面的,楼上正确,没见过上面的格式


----------------解决方案--------------------------------------------------------

先用个数组e[]把平均分排列了,然后再按照if((stu[k].a+stu[k].b+stu[k].c)/3==e[])就输出,为了避免有相同的平均分的情况,所以在相同时就要按照number来排了,number小的排前,这样应该就可以了!


----------------解决方案--------------------------------------------------------
  相关解决方案