当前位置: 代码迷 >> C语言 >> 请教结构排序问题.真的被搞晕了.哥哥姐姐,救我啊!!!!
  详细解决方案

请教结构排序问题.真的被搞晕了.哥哥姐姐,救我啊!!!!

热度:505   发布时间:2007-03-17 18:51:56.0
谢谢,楼上.我会认真看.
----------------解决方案--------------------------------------------------------

#include<stdio.h>
struct student
{
char name[20];
int number;
int a;
int b;
int c;
float pjcj; /*加个平均成绩项*/
}stu[3];
void sort(int*);
void main()
{
int j=0,k=0;
float num,max;
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);
printf("请选择是否继续:Y/N");
stu[j].pjcj=(stu[j].a+stu[j].b+stu[j].c)/3; /*输入完三门成绩后平均一下*/
// scanf("%c",&i);
j++;
fflush(stdin);
}while(j<3);
printf("排序前的详细内容为:\n");

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

num=stu[0].pjcj;
for(k=0;k<2;k++)
{
for(j=1;j<3;j++)
{
if(stu[j].pjcj>num)
{
max=stu[j].pjcj;
stu[k].pjcj=max;
stu[j].pjcj=num;
num=max;

}
}
// stu[k].pjcj=num;
printf("%.1f\t",stu[k].pjcj);
num=stu[k+1].pjcj;
}
printf("%.1f\n",stu[2].pjcj);
/* printf("\n%d\t%s\t%d\t",stu[k].number,stu[k].name,(stu[k].a+stu[k].b+stu[k].c)/3);
num[k]=(stu[k].a+stu[k].b+stu[k].c)/3;
printf("%d",num[k]);
*/
getch();

}


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

fflush(stdin);
是什么意思啊?


----------------解决方案--------------------------------------------------------
iwfy的程序好象只能编译但不符合要求哦
----------------解决方案--------------------------------------------------------
fflush(stdin);是清除一个流,我也没见过,刚才查了下函数
我用的是WIN-TC,刚才的代码有错,现在的好了
----------------解决方案--------------------------------------------------------
以下是引用iwfy在2007-3-17 19:03:03的发言:

#include<stdio.h>
struct student
{
char name[20];
int number;
int a;
int b;
int c;
float pjcj; /*加个平均成绩项*/
}stu[3];
void sort(int*);
void main()
{
int j=0,k=0;
float num,max;
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);
printf("请选择是否继续:Y/N");
stu[j].pjcj=(stu[j].a+stu[j].b+stu[j].c)/3; /*输入完三门成绩后平均一下*/
// scanf("%c",&i);
j++;
fflush(stdin);
}while(j<3);
printf("排序前的详细内容为:\n");

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

num=stu[0].pjcj;
for(k=0;k<2;k++)
{
for(j=1;j<3;j++)
{
if(stu[j].pjcj>num)
{
max=stu[j].pjcj;
stu[k].pjcj=max;
stu[j].pjcj=num;
num=max;

}
}
// stu[k].pjcj=num;
printf("%.1f\t",stu[k].pjcj);
num=stu[k+1].pjcj;
}
printf("%.1f\n",stu[2].pjcj);
/* printf("\n%d\t%s\t%d\t",stu[k].number,stu[k].name,(stu[k].a+stu[k].b+stu[k].c)/3);
num[k]=(stu[k].a+stu[k].b+stu[k].c)/3;
printf("%d",num[k]);
*/
getch();

}

他这个挺好的,看看他的吧。
谢谢你了哟。


----------------解决方案--------------------------------------------------------
scanf("%s",&stu[j].name);

这句怎么没出现错误的,我奇怪
----------------解决方案--------------------------------------------------------
#include<stdio.h>
struct student
{
char name[20];
int number;
int a;
int b;
int c;
}stu[3];
void sort(int *a,int n)
{int i,j,t;
for(i=0;i<n;i++)
{for(j=0;j<i;j++)
{if(a[i]>a[j])
{t=a[i];a[i]=a[j];a[j]=t;}}}
}
void main()
{
int i,j=0,k=0,num[3];
printf("input the name:\n");
scanf("%s",&stu[j].name);
do
{
printf("input the number:\n");
scanf("%d",&stu[j].number);
printf("input the score1:\n");
scanf("%d",&stu[j].a);
printf("input the score2:\n");
scanf("%d",&stu[j].b);
printf("input the score3:\n");
scanf("%d",&stu[j].c);
j++;
printf("if you don't want continue?input no\n");
printf("input the name:\n");
scanf("%s",&stu[j].name);
}while(strcmp(stu[j].name,"no"));
for(k=0;k<j;k++)
num[k]=(stu[k].a+stu[k].b+stu[k].c)/3;
sort(num,j);
printf("the score array:\n");
printf("number name leverscore\n");
for(i=0;i<j;i++)
{for(k=0;k<j;k++)
{if(num[i]==(stu[k].a+stu[k].b+stu[k].c)/3)
printf("\n%d\t%s\t%d\t",stu[k].number,stu[k].name,(stu[k].a+stu[k].b+stu[k].c)/3);
}}}
这个可以的!看看吧
----------------解决方案--------------------------------------------------------

scanf("%s",&stu[j].name);

这句怎么没出现错误的,我奇怪
用&和不用都没错的,用了是画蛇添足啦!


----------------解决方案--------------------------------------------------------
我也是说   但是书上没用
----------------解决方案--------------------------------------------------------
  相关解决方案