输入10个学生5门课的成绩,分别用函数实现功能

1


1.计算每个学生平均分

2.计算每门课程的平均分

3.找出所有50个分数中最高的分数所对应的学生和课程

开始觉得这道题比较容易,可是做起来真的花了我比较长的时间。由于要用到函数来实现,所以关于函数的返回值以及数组的概念就需要掌握清楚。通过这道题我终于明白了一个问题,在void空返回函数中,可以直接引用数组,如void max(score[5][5]),如果要是需要一个返回值,那么在用score[5][5]则出现编译错误。目前我知道的解决方法,是这样写int max(score[][5],int n)空出一维。

为了降低难度,我把10个学生改为5个,并且存在已知函数中。代码如下:

void main()
{
int score[5][5]={{84,65,26,37,48},{46,85,94,63,22},{34,13,23,54,66},{82,47,36,25,24},{25,44,73,32,11}};

for (int i=0; i<5; i++)
{
printf(“第%d个学生的平均分是%d\n”, i+1, spj(score,i));
}

———————————————————————

进入求每个学生平均分成绩函数

int spj(int score[][5], int n)
{
int sum=0;
for (int i=0; i<5; i++)
sum=sum+score[n][i];
return sum/5;
}

———————————————————————

for (int j=0; j<5; j++)
{
printf(“第%d门课程平均分是%d\n”, j+1, lpj(score,j));
}

———————————————————————

进入求每门课程平均分成绩函数

int lpj(int score[][5],int n)
{
int sum=0;
for (int i=0; i<5; i++)
sum=sum+score[i][n];
return sum/5;
}

———————————————————————

printf(“最高的分数是%d\n”, max(score,5));
printf(“是第%d个学生的第%d门课程\n”, student, lesson);

———————————————————————

int max(int score[][5],int n)
{
int temp=0;
for(int i=0; i<5; i++)
{
for(int j=0; j<5; j++)
if(score[i][j] > temp)
{
temp=score[i][j];
student=i+1;
lesson=j+1;
}
}
return (temp);
}
———————————————————————

总体来说代码感觉有些臃肿,不过这已经是我能想出的最好结果了。个人感觉第七章的课后习题比前几张真是难了很多,而且C语言我还未学到指针这最精华的部分,真无法想象后面的题会怎样。。。本来计划用2天时间做完第七章函数的15到题,结果每天最多只能研究3道题了。
虽然是这样,我却慢慢发现了编程的乐趣。

— cloudxiao 2009,12,16

1 Comment

  1. Kada says:

    博主在学C阿!呵呵。
    这方面可以交流一下!做个链接如何?等你回复。

Leave A Reply