大家晚上好
又有问题请教大家了以下是原题和程序:
有10个学生,每个学生的数据包括学号,姓名,3门课的成绩,从键盘输入10个学生的
数据,要求打印吵出每个学生学的平均成绩,以及最高分的学生的数据(包括学号,姓名,3门课
成绩,平均分数).
输入和输出函数都可以执行,中间那个void AccountAver(struct student *p)函数却不能实现计算各个学生的平均成绩和总平均成绩的功能,看观之许久未能发现问题所在,请大家指点迷津,万分感谢!
#include "stdio.h"
struct student
{
int num;
char name[20];
int score[3];
float aver;
} stu[10];
float averz=0,max=0;/*定义三个全局变量*/
int k;
void Print(struct student *p)
{
int i;
printf("\nNO. name score1 score2 score3 average\n");
for(i=0;i<10;i++,p++)
printf(" %d%4s%6d%7d%7d%9.2f\n",p->num,p->name,p->score[0],p->score[1],
p->score[2],p->aver);
printf("the total average is %f\n",averz);
printf("the %d student of hight score:\n",k+1);
p=stu;
p=p+k;
printf("%d %s %d %d %d%5.2f\n",p->num,p->name,p->score[0],p->score[1],
p->score[2],p->aver);
}
void Input(struct student *p)
{
int i,j;
for(i=0;i<10;i++,p++)
{
printf("Input the %dth student Number and Name:\n",i+1);
printf("Number:");
scanf("%d",&p->num);
printf("Name:");
scanf("%s",p->name);
printf("Input the %dth student score:\n",i+1);
for(j=0;j<3;j++)
{
printf("Score%d:",j+1);
scanf("%d",&p->score[j]);
}
printf("\n");
}
}
void AccountAver(struct student *p)
{
int i,j;
float sum=0;
for(i=0;i<10;i++,p++)
{
for(j=0;j<3;j++);
sum=p->score[j]+sum;
p->aver=sum/3;
if(max<p->aver)
{
max=p->aver;
k=i;
}
averz=p->aver+averz;
}
averz=averz/10;
}
main()
{
struct student *p;
p=stu;
Input(p);
p=stu;
AccountAver(p);
p=stu;
Print(p);
getch();
}
m/?u=157