当前位置: 代码迷 >> C语言 >> [求助]
  详细解决方案

[求助]

热度:141   发布时间:2005-12-07 20:28:00.0
[求助]

求高手帮忙!
我做的是求10个学生的5门课程的平均分!
我觉得我编的没错为什么我的输出只有一个课程的成绩的?
帮个忙吧!

谢谢了!
程序如下:
#define N 10
#define M 5
float score[N][M];
float a_stu[N],a_cour[M];
int r,c;
main()
{float s_var(void);
float highest();
void input_stu(void);
void aver_stu(void);
void aver_cour(void);
int i,j;
float h;
input_stu();
aver_stu();
aver_cour();
printf("\n NO. cour1 cour2 cour3 cour4 cour5 aver");
for(i=0;i<N;i++)
{printf("\n NO.%2d",i+1);
for(j=0;j<M;j++);
printf("%8.2f",score[i][j]);
printf("%8.2f",a_stu[i]);
}
printf("\naverage:");
for(j=0;j<M;j++)
printf("%8.2f",a_cour[j]);
h=highest();
printf("\nhighest:%7.2f NO.%2d course%2d\n",h,r,c);
}
void input_stu(void)
{int i,j;
for (i=0;i<N;i++)
{printf("\nInput score of student%2d:\n",i+1);
for(j=0;j<M;j++)
scanf("%f",&score[i][j]);
}
}
void aver_stu(void)
{int i,j;
float s;
for (i=0;i<N;i++)
{for (j=0,s=0;j<M;j++)
s+=score[i][j];
a_stu[i]=s/5.0;
}
}
void aver_cour(void)
{int i,j;
float s;
for(j=0;j<M;j++)
{s=0;
for(i=0;i<N;i++)
s+=score[i][j];
a_cour[j]=s/(float)N;
}
}
float highest()
{float high;
int i,j;
high=score[0][0];
for(i=0;i<N;i++)
for(j=0;j<M;j++)
if(score[i][j]>high)
{high=score[i][j];
r=i+1;
c=j+1;
}
return(high);
}

[此贴子已经被作者于2005-12-7 20:31:13编辑过]


----------------解决方案--------------------------------------------------------
程序呢??
----------------解决方案--------------------------------------------------------
for(j=0;j<M;j++);
初步判断,这里错了

----------------解决方案--------------------------------------------------------
看的繁,用结构体做吧
----------------解决方案--------------------------------------------------------
#define N 10
#define M 5
float score[N][M];
float a_stu[N],a_cour[M];
int r,c;
main()
{float s_var(void);
float highest();
void input_stu(void);
void aver_stu(void);
void aver_cour(void);
int i,j;
float h;
input_stu();
aver_stu();
aver_cour();
printf("\n NO. cour1 cour2 cour3 cour4 cour5 aver");
for(i=0;i<N;i++)
{printf("\n NO.%2d",i+1);
for(j=0;j<M;j++); //可能存在的问题
printf("%8.2f",score[i][j]);
printf("%8.2f",a_stu[i]);
}
printf("\naverage:");
for(j=0;j<M;j++)
printf("%8.2f",a_cour[j]);
h=highest();
printf("\nhighest:%7.2f NO.%2d course%2d\n",h,r,c);
}

我没有仔细看,我想说的是:

这样的程序基本上愿意仔细看的人很少

写程序的时候不是为难别人

所以写程序的时候要注意可读性

我不是说现在要写注释等,现在学习的时候没有哪个必要

你可以自己看你的程序,可以说很乱

写的时候注意空格和换行和缩进

将程序排版的象样一些

比如一个函数的所有语句在同一列

循环体比循环语句缩进等

好好注意,我说的不是你一个人的问题

我最近在这里看的不少

好多人写的代码和你一样

别人改错看的时候很难弄懂你的结构

自己以后看的时候也一样很难看懂


----------------解决方案--------------------------------------------------------

struct student{

int no;//*学号*//

int score[5];

}stud[10],*p;

main()

{int i=0,sum=0;
int aver[10];
for(i=0;i<=9;i++)
scanf("%d,%d",&stud[i].no,&stud[i].score[0],&stud[i].score[1],
&stud[i].score[2],&stud[i].score[3],&stud[i].score[4]);
for(i=0,p=stud;i<=9,p<=stud+9;i++,p++)
{sum=p->score[0]+p->score[1]+p->score[2]+p->score[3]+p->score[4];
aver[i]=sum/5
printf("no:%d score:%d",p->no,aver[i])
}
}


----------------解决方案--------------------------------------------------------
问题解决了真的很谢谢你:)
----------------解决方案--------------------------------------------------------
客气,互相帮助,互相学习,
----------------解决方案--------------------------------------------------------
  相关解决方案