永发信息网

c语言程序设计,求5个学生5门课的平均成绩,求高手指点,谢谢,万分感激

答案:3  悬赏:30  手机版
解决时间 2021-01-26 16:09
  • 提问者网友:暗中人
  • 2021-01-25 16:30
c语言程序设计,求5个学生5门课的平均成绩,求高手指点,谢谢,万分感激
最佳答案
  • 五星知识达人网友:玩世
  • 2021-01-25 16:51
你的数组是6行6列的,s[i][5]是把每一列的平均数放在了该列的最后
你看下你的数组每行按声明的数组应该是6个数据,而在赋初值时只有5个数据,分别为5门成绩
而s[i][5]=sum/5就是把每行5门成绩的平均分算出来然后放在该行的最后
这下明白了吧
补充:
你的这个外循环是控制列的,外循环第循环一次里面的内循环就要循环5次,内循环是控制行的
目的是循环的每一列时再循环5次实现5门成绩相加再算出平均值放到该列的最后追问谢谢啊,但是只能选一个答案啊,下次一定选你啊,万分感激啊
全部回答
  • 1楼网友:山有枢
  • 2021-01-25 18:22
这个程序是先执行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个存储单元的。希望你能看懂我在说什么追问谢谢啊,由于只能选择一个作为最佳答案,嘿嘿,还是感谢你啊,万分的感激啊
  • 2楼网友:行雁书
  • 2021-01-25 18:15
两层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;就不难理解了,这是将前五个数的和取平均值,放在第六个元素里。
就是这么简单。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯