当前位置: 代码迷 >> C语言 >> [讨论]平均分和总分出现错无
  详细解决方案

[讨论]平均分和总分出现错无

热度:321   发布时间:2007-07-05 12:04:44.0
[讨论]平均分和总分出现错无
题目在下面,请大家告诉我要在哪里修改,改成什么? 谢谢!
#define N 3
struct student
{
char num[6];
int score[4],sum;
float avr;
}stu[N];
void main()
{
void print(struct student str[6]);
int i,j,sum;
float average;
for(i=0;i<N;i++)
{
printf("\ninput score of student %d:\n",i+1);
printf("No.:");
scanf("%s",stu[i].num);
for(j=0;j<3;j++)
{
printf("score %d:",j+1);
scanf("%d",&stu[i].score[j]);
} for(j=0;j<3;j++)
sum=stu[i].score[1]+stu[i].score[2]+stu[i].score[3];
stu[i].sum=&sum;
stu[i].avr=sum/3.0;
printf("\n");
}
print(stu);
}
void print(struct student stu[3])
{
int i,j;
printf("\n No. score1 score2 score3 average sum\n");
for(i=0;i<N;i++)
{printf("%3s",stu[i].num);
for(j=0;j<3;j++)
printf("%10d",stu[i].score[j]);
printf("%14.2f",stu[i].avr);
printf("%10d",stu[i].sum);
printf("\n");
}
}
利用结构体类型编一个程序,实现输入三个学生的学号以及数学、语文、英语成绩,然
后计算每位学生的总成绩以及平均成绩
搜索更多相关的解决方案: 平均分  总分  num  student  

----------------解决方案--------------------------------------------------------
stu[i].sum=&sum;
这句话错了,stu[i].sum=sum;就可以了,没有必要取地址吧

----------------解决方案--------------------------------------------------------
还是不行啊
计算出来的结果还是错的啊
sum和average的结果都是错的啊
----------------解决方案--------------------------------------------------------
当然不正确了,如果i取2的话,stu[2].score[1]是什么意思啊,还是第一个学生的成绩吗,要求每个学生的总成绩,i和j的值应该相同吧 ,不然就应该是所有学生的总成绩了啊.
----------------解决方案--------------------------------------------------------
你把sum函数也换成数组并且以i作为变量试一下 ,这样应该就正确了啊.stu[i].sum=&sum;
并不是很能表示你的意思啊.
----------------解决方案--------------------------------------------------------
程序错了几个地方
#define N 3
struct student
{
char num[6];
int score[4],sum;//录入三个成绩,怎么定义了成了四
float avr;
}stu[N];
void main()
{
void print(struct student str[6]);//参数类型应该改成str[]比较好
int i,j,sum;
float average;
for(i=0;i<N;i++)
{
printf("\ninput score of student %d:\n",i+1);
printf("No.:");
scanf("%s",stu[i].num);
for(j=0;j<3;j++)
{
printf("score %d:",j+1);
scanf("%d",&stu[i].score[j]);
} for(j=0;j<3;j++)
sum=stu[i].score[1]+stu[i].score[2]+stu[i].score[3];//是从0~2,不是从1~3
stu[i].sum=&sum; //没必要取地址
stu[i].avr=sum/3.0;
printf("\n");
}
print(stu);
}
void print(struct student stu[3])//定义跟声明的参数不一样
{
int i,j;
printf("\n No. score1 score2 score3 average sum\n");
for(i=0;i<N;i++)
{printf("%3s",stu[i].num);
for(j=0;j<3;j++)
printf("%10d",stu[i].score[j]);
printf("%14.2f",stu[i].avr);
printf("%10d",stu[i].sum);
printf("\n");
}
}


改过来就可以了

[此贴子已经被作者于2007-7-6 22:20:03编辑过]


----------------解决方案--------------------------------------------------------
  相关解决方案