当前位置: 代码迷 >> C语言 >> [求助]结构体问题。用了结构体怎么交换数据。
  详细解决方案

[求助]结构体问题。用了结构体怎么交换数据。

热度:375   发布时间:2007-04-19 22:00:34.0
[求助]结构体问题。用了结构体怎么交换数据。

#include <stdio.h>
int n=0;
void input(struct student ip[]);
void output(struct student op[]);
void px(struct student paixu[]);
#define N 50
struct student
{
int num;
char name[15];
float cj[3];
double var;
}st[N];
void main()
{
struct student *p;
p=st;
input(p);
px(p);
printf("学员编号\t学员姓名\t平均成绩\n");
output(p);
do
{
printf("是否要继续以下操作:\n");
printf("");

}while(1);
}
void px(struct student ary[])
{
int i,j;
struct student temp[1]; //结构体应该怎么交换,这是想按学员的平均分进行排序,但是我不知道怎么交换了
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(st[i].var<st[j].var)
{
temp[1]=st[i];
st[i]=st[j];
st[j]=temp[1];
}

}
void output(struct student ary[])
{
int i;
for(i=0;i<n;i++)
printf("%d\t\t%s\t\t%2.2f\n",st[i].num,st[i].name,st[i].var);
}
void input(struct student ary[])
{
int i=0,j;
do
{
printf("请输入学员人数:(1~50)\n");
scanf("%d",&n);
}while(n<1 || n>50);
for(i=0;i<n;i++)
{
// fflush(stdin);
do{
printf("请输入学员学号:(1~%d)",n);
scanf("%d",&st[i].num);
}while(st[i].num<0||st[i].num>n);
printf("请输入学员姓名:");
scanf("%s",&st[i].name);
fflush(stdin);
float score=0;
for(j=0;j<3;j++)
{
printf("请输入学号%d同学的第%d门成绩:\t",st[i].num,j+1);
scanf("%f",&st[i].cj[j]);
score+=st[i].cj[j];
}
st[i].var=score/3;
/* printf("学号是%d:\n",st[i].num);
printf("平均分是%s:\n",st[i].name);
printf("总分是");
printf("平均分是%.2f:\n",st[i].var);
n--;
printf("!注意现在还有个%d学号可以操作!\n",n-1);*/
}

// printf("平均分是:");

/* printf("请输入学员人数:(1~50)\n");
scanf("%d",&n);*/

}

搜索更多相关的解决方案: 结构体  数据  void  student  

----------------解决方案--------------------------------------------------------
结构题可以直接看成一个变量.
----------------解决方案--------------------------------------------------------
定义一个结构体指针...

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