发布网友
共2个回答
热心网友
#define M 3
#define N 10
#include<stdio.h>
struct student
{
int i;
unsigned number;
char name[11];
float score[3];
};
struct student a[N];
void input()
{
for(int i=0;i<=N;i++)
scanf("%u%c%f%f%f",a[i].number,a[i].name,a[i].score[0],a[i].score[1],a[i].score[2]);
}
struct student add(float,float,float);
main()
{
input();
printf("No. Name score1 score2 score3 total average \n");
add( a[0].score[0], a[0].score[1],a[0].score[2]);//这里可以自己再改下
};
struct student add(float x,float y,float z)
{
float b[N],c[N],d,sum;
int i;
for(i=0;i<=N;i++)
{
b[i]=x+y+z;
c[i]=b[i]/M;
};
for(i=0;i<=N;i++)
sum=c[i];
d=sum/N;
for(i=0;i<=N;i++)
printf("%-8f%-8s%-8f%-8f%-8f%-8f%-8f\n",a[i].number,a[i].name,a[i].score[0],a[i].score[1],a[i].score[2],b[i],c[i]);
printf("avernge=%f\n",d);
};
热心网友
你的结构体和函数调用太染了,不清楚!!!我把你要表达的意思表达出来了!!!
# define N 3
# include <stdio.h>
struct
{
unsigned num;
char name[10];
int score1;
int score2;
int score3;
int total;
float ave;
}t,s[N];
main()
{
int k,m;
int i,j;
printf("请输入%d名同学的学号,姓名,以及三门成绩:\n",N);
for(i=0;i<N;i++)
{
scanf("%u%s%d%d%d",&s[i].num,s[i].name,&s[i].score1,&s[i].score2,&s[i].score3);
s[i].total=s[i].score1+s[i].score2+s[i].score3;
s[i].ave=s[i].total/3.0;
}
for(i=0;i<N-1;i++)
for(j=i+1;j<N;j++)
if(s[i].ave<s[j].ave)
{
t=s[i];
s[i]=s[j];
s[j]=t;
}
printf("成绩排序是:\n");
printf("No.\tName\tscore1\tscore2\tscore3\ttotal\taverage\n");
for(i=0;i<N;i++)
printf("%-8u%-8s%-8d%-8d%-8d%-8d%-8.3f\n",s[i].num,s[i].name,s[i].score1,s[i].score2,s[i].score3,s[i].total,s[i].ave);
}