c语言程序设计,求5个学生5门课的平均成绩,求高手指点,谢谢,万分感激
题目是这样的,已知5个学生5门课的成绩,要求输出平均成绩最高的学生的成绩,以及该学生的学号,我们用的是清华版本谭浩强的程序设计,感觉有点难啊,请高手指点一下啊,谢谢啊,书...
题目是这样的,已知5个学生5门课的成绩,要求输出平均成绩最高的学生的成绩,以及该学生的学号,我们用的是清华版本谭浩强的程序设计,感觉有点难啊,请高手指点一下啊,谢谢啊,书中的答案是这样的:
#include <stdio.h>
void main()
{
int i,j,max_i;
float sum,max=0;
float s[6][6]={{78,82,93,74,65},{91,82,72,67,76},{100,90,85,72,98},{67,89,90,65,78},{77,88,99,45,89},{78,89,76,99,97}};
for(i=0;i<=5;i++)
{sum=0;
for(j=0;j<5;j++)
sum=sum+s[i][j];
s[i][5]=sum/5;}
for..........
这里说明一下啊,省略号是我看明白的地方,我看不明白的地方在于,sum=sum+s[i][j];这个语句的意思是,把第i行,J列的某个数据累加到SUM中,但是,地下的一句s[i][5]=sum/5;怎么是把平局数SUM/5存放到第I行,第J列的位置啊,不是说求平均数码,求高手指点一下啊,万分感激啊最好说详细一下啊,还有,这个循环油内循环,外循环,到底是怎么执行的,说明顺序,求高手详细指点,最好详细一点,写下啊
这里说明一下啊,省略号是我看明白的地方,我看不明白的地方在于,sum=sum+s[i][j];这个语句的意思是,把第i行,J列的某个数据累加到SUM中,但是,地下的一句s[i][5]=sum/5;怎么是把平局数SUM/5存放到第I行,第J列的位置啊,不是说求平均数码,求高手指点一下啊,万分感激啊最好说详细一下啊,还有,这个循环油内循环,外循环,到底是怎么执行的,说明顺序,求高手详细指点,最好详细一点,写下啊。。这里么是把"平局数SUM/5存放到第I行,第J列的位置啊"应该是么是把平局数SUM/5存放到第I行,第5列的位置“,写错了,不好意思 展开
#include <stdio.h>
void main()
{
int i,j,max_i;
float sum,max=0;
float s[6][6]={{78,82,93,74,65},{91,82,72,67,76},{100,90,85,72,98},{67,89,90,65,78},{77,88,99,45,89},{78,89,76,99,97}};
for(i=0;i<=5;i++)
{sum=0;
for(j=0;j<5;j++)
sum=sum+s[i][j];
s[i][5]=sum/5;}
for..........
这里说明一下啊,省略号是我看明白的地方,我看不明白的地方在于,sum=sum+s[i][j];这个语句的意思是,把第i行,J列的某个数据累加到SUM中,但是,地下的一句s[i][5]=sum/5;怎么是把平局数SUM/5存放到第I行,第J列的位置啊,不是说求平均数码,求高手指点一下啊,万分感激啊最好说详细一下啊,还有,这个循环油内循环,外循环,到底是怎么执行的,说明顺序,求高手详细指点,最好详细一点,写下啊
这里说明一下啊,省略号是我看明白的地方,我看不明白的地方在于,sum=sum+s[i][j];这个语句的意思是,把第i行,J列的某个数据累加到SUM中,但是,地下的一句s[i][5]=sum/5;怎么是把平局数SUM/5存放到第I行,第J列的位置啊,不是说求平均数码,求高手指点一下啊,万分感激啊最好说详细一下啊,还有,这个循环油内循环,外循环,到底是怎么执行的,说明顺序,求高手详细指点,最好详细一点,写下啊。。这里么是把"平局数SUM/5存放到第I行,第J列的位置啊"应该是么是把平局数SUM/5存放到第I行,第5列的位置“,写错了,不好意思 展开
3个回答
展开全部
这个程序是先执行for(i=0;i<=5;i++) ,i=0代表第一个学生成绩的第一个,然后设置和为零,执行for(j=0;j<5;j++) sum=sum+s[i][j]:循环5次把第一个学生的成绩总和算出来,s[i][5]=sum/5;是把第一个学生的成绩算出平均分寻在数组的S[0]【5】也就是数组里第一个学生各科成绩的后面。之后i ++变成i=1,执行for(j=0;j<5;j++) sum=sum+s[i][j]:又算成第二个学生的平均成绩存在其成绩的后面。看懂这个程序主要是你要知道二维数组是什么结构,程序里定义的数组float s[6][6] 其实是有7*7个存储单元的。希望你能看懂我在说什么
追问
谢谢啊,由于只能选择一个作为最佳答案,嘿嘿,还是感谢你啊,万分的感激啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
两层for循环的执行顺序:
其实对于两层for循环,可以拆成多个一层的for循环。如上就可以拆成如下的for循环:
for(j=0;j<5;j++)
sum=sum+s[0][j];
s[0][5]=sum/5;
}
for(j=0;j<5;j++)
sum=sum+s[1][j];
s[1][5]=sum/5;
}
......
for(j=0;j<5;j++)
sum=sum+s[5][j];
s[5][5]=sum/5;
}
看明白了吗,每次i都会执行一次内部for循环,只不过每次i的取之不同而已。
再来说说那个数组:
float s[6][6]={{78,82,93,74,65},{91,82,72,67,76},{100,90,85,72,98},{67,89,90,65,78},{77,88,99,45,89},{78,89,76,99,97}};
这是一个二维数组,长度都是6.首先有6个一维数组作为外层数组的元素,这个很明确,如下:
s[0] = {78,82,93,74,65};
s[1] = {91,82,72,67,76};
.....
s[5] = {78,89,76,99,97};
从原始的定义s[6][6]知道,如上数组长度都是6,但明显这些数组只有5个元素,那么就默认第六个元素的值为0.所以如上数组实际应该是这样的:
s[0] = {78,82,93,74,65,0};
s[1] = {91,82,72,67,76,0};
.....
s[5] = {78,89,76,99,97,0};
这样就不难理解了,看这句代码:
sum=sum+s[i][j];
由于j的取值最大为4,也就是说,这样循环下去,sum的值就是s[i]的前五个元素的和。接下来的s[i][5]=sum/5;就不难理解了,这是将前五个数的和取平均值,放在第六个元素里。
就是这么简单。
其实对于两层for循环,可以拆成多个一层的for循环。如上就可以拆成如下的for循环:
for(j=0;j<5;j++)
sum=sum+s[0][j];
s[0][5]=sum/5;
}
for(j=0;j<5;j++)
sum=sum+s[1][j];
s[1][5]=sum/5;
}
......
for(j=0;j<5;j++)
sum=sum+s[5][j];
s[5][5]=sum/5;
}
看明白了吗,每次i都会执行一次内部for循环,只不过每次i的取之不同而已。
再来说说那个数组:
float s[6][6]={{78,82,93,74,65},{91,82,72,67,76},{100,90,85,72,98},{67,89,90,65,78},{77,88,99,45,89},{78,89,76,99,97}};
这是一个二维数组,长度都是6.首先有6个一维数组作为外层数组的元素,这个很明确,如下:
s[0] = {78,82,93,74,65};
s[1] = {91,82,72,67,76};
.....
s[5] = {78,89,76,99,97};
从原始的定义s[6][6]知道,如上数组长度都是6,但明显这些数组只有5个元素,那么就默认第六个元素的值为0.所以如上数组实际应该是这样的:
s[0] = {78,82,93,74,65,0};
s[1] = {91,82,72,67,76,0};
.....
s[5] = {78,89,76,99,97,0};
这样就不难理解了,看这句代码:
sum=sum+s[i][j];
由于j的取值最大为4,也就是说,这样循环下去,sum的值就是s[i]的前五个元素的和。接下来的s[i][5]=sum/5;就不难理解了,这是将前五个数的和取平均值,放在第六个元素里。
就是这么简单。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |