指向结构体指针变量做形参
#include <stdio.h>#include <stdlib.h>
struct student
{
char num[9];
char name[50];
char sex;
double score[4];
double aver;
}stu[2];
void input(struct student stu[]);
void f(struct student stu[]);
void output(struct student *p);
void main()
{
struct student stu[2];
input(stu);
f(stu);
output(stu);
}
void input(struct student stu[])
{
int i,j;
printf("plase input the information:\n");
for(i=0;i<2;i++)
{
printf("plase input the %d num:",i);
scanf("%s",&stu[i].num );
printf("plase input the %d name:",i);
scanf("%s",&stu[i].name);
fflush(stdin);
printf("plase input the %d sex m-女,n-男:",i);
scanf("%c",&stu[i].sex);
fflush(stdin);
for(j=0;j<4;j++)
{
printf("plase input the %d score:",i);
scanf("%lf",&stu[i].score[j]);
}
}
}
void f(struct student stu[] )
{ int i,j,k;
double sum=0;
struct student t;
for(i=0;i<2;i++)
{
for(j=0;j<4;j++)
sum+=stu[i].score[j];
stu[i].aver=sum/4.0;
printf("%lf",stu[i].aver);
}
for(i=0;i<2;i++)
{
k=i;
for(j=i+1;j<2;j++)
if(stu[k].aver>stu[j].aver)
k=j;
if(k!=i)
{
t=stu[k];
stu[k]=stu[j];
stu[j]=t;
}
}
}
void output(struct student *p)
{
int j;
//int struct student stu[2];
p=malloc(sizeof(struct student));
for(p=stu;p<stu+2;p++)
{
printf("%s\n",p->num);
printf("%s\n",p->name);
printf("%c\n",p->sex);
for(j=0;j<4;j++)
printf("%lf\n",p->score[j]);
printf("%lf\n",p->aver);
}
}
求指教,输出函数哪里不对了
[此贴子已经被作者于2016-5-22 16:05编辑过]