高手请进!程序哪里错额
程序代码:
abc[map].num输出分数最高的为何变成4400900 还有程序哪些要改动的?
[local]1[/local]
程序如下:
#include<stdio.h>
#include<conio.h>
#include<string.h>
#define N 3
#define M 3
struct student
{
char name[20];
char num[20];
float score[M];
float ave;
}abc[N];
int main()
{
void hk_1(struct student *p);//声明结构体函数
void hk_2(struct student *p1);
void hk_3(struct student *p2);
struct student *p1;//结构体指针变量
p1=abc;
hk_1(p1);
getch();
system("pause");
return 0;
}
void hk_1(struct student *p)
{ int i,j;
for(i=0;i<N;i++)
{
printf("学生记录:%d\n",i+1);
printf("请输入姓名:\n");
scanf("%s",abc[i].name);
printf("学生记录:%d\n",i+1);
printf("请输入学号\n:");
scanf("%s",abc[i].num);
printf("学生记录:%d\n",i+1);
for(j=0;j<M;j++)
{ printf("请输入成绩:\n");
scanf("%f",&abc[i].score[j]);//error abc[i].score[j]是实际的值。
}
}
hk_2(p);
}
aveg=0;
map=0;
max=0;
void hk_2(struct student *p1)
{
int r,t;
float ave=0,sum=0;
for(r=0;r<N;r++)
{
for(t=0;t<M;t++)
{
sum+=abc[r].score[t];
abc[r].ave=sum/3.0;
aveg+=abc[r].ave;
}
if(sum>max)
{
max=sum;
map=r;
}
}
aveg/=N;
hk_3(p1);
}
void hk_3(struct student *p2)
{
int r,t;
for(r=0;r<N;r++)
{
printf("%5s%s",abc[r].name,abc[r].num);
for(t=0;t<N;t++)
{
printf("%9.2f",abc[r].score[t]);
printf("%8.2f\n",abc[r].ave);
}
}
printf("\n分数最高的是:%s,%4d\n",abc[map].name,abc[map].num);
printf("%8.2f%8.2f%8.2f平均分:%5.2f\n",abc[map].score[0],abc[map].score[1],abc[r].score[2],abc[map].ave);
printf("\n%5.2f",aveg);
}








