标题:[讨论]平均分和总分出现错无
只看楼主
twfxtc
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-7-4
 问题点数:0 回复次数:5 
[讨论]平均分和总分出现错无
题目在下面,请大家告诉我要在哪里修改,改成什么? 谢谢!
#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 
2007-07-05 12:04
windflush
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:886
专家分:0
注 册:2007-7-1
得分:0 
stu[i].sum=&sum;
这句话错了,stu[i].sum=sum;就可以了,没有必要取地址吧

2007-07-05 12:23
twfxtc
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-7-4
得分:0 
还是不行啊
计算出来的结果还是错的啊
sum和average的结果都是错的啊
2007-07-05 12:27
wsaaa
Rank: 1
等 级:新手上路
帖 子:136
专家分:0
注 册:2007-5-8
得分:0 
当然不正确了,如果i取2的话,stu[2].score[1]是什么意思啊,还是第一个学生的成绩吗,要求每个学生的总成绩,i和j的值应该相同吧 ,不然就应该是所有学生的总成绩了啊.
2007-07-06 22:01
wsaaa
Rank: 1
等 级:新手上路
帖 子:136
专家分:0
注 册:2007-5-8
得分:0 
你把sum函数也换成数组并且以i作为变量试一下 ,这样应该就正确了啊.stu[i].sum=&sum;
并不是很能表示你的意思啊.
2007-07-06 22:05
love154139
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2007-5-6
得分: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]);//参数类型应该改成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编辑过]


2007-07-06 22:17



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-152927-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023102 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved