高手请进!程序哪里错额
程序代码:
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); }