我们先看例题:
统计3个班成绩情况,每个班有5个同学,求出所有班级的平均分以及各个班级的平均分。
(从键盘输入成绩)。
思路分析
1.我们定义一个3行5列的二维数组用来存放学生的成绩,1行表示1个班的学生成绩,总共3行,可以存放3个班的成绩。每行有5列,可以存放一个班5个同学的成绩。
代码如下
int arr[3][5];//定义一个二维数组
int i,j,m;//定义平均分为m,
int sum=0;//初始化3个班15个学生的成绩总分sum为0
printf("请输入学生成绩:");
printf("\n");
for(i=0;i<3;i++){
for(j=0;j<5;j++){
scanf("%d",&arr[i][j]);
}
}
printf("学生成绩用数组表示为:");
printf("\n");
for(i=0;i<3;i++){
for(j=0;j<5;j++){
printf("%d\t",arr[i][j]);
}
printf("\n");
}
2.用for循环遍历数组的所有值并求和,然后用和除以15的值就是所有班级的平均分
代码如下
for(i=0;i<3;i++){
for(j=0;j<5;j++){
sum+=arr[i][j];
}
}
m=sum/15;//所有班级的平均分为m
3.用for循环遍历数组每一行的值并求和,用和除以5的值就是每个班的平均分
代码如下
for(i=0;i<3;i++){
for(j=0;j<5;j++){
sum+=arr[i][j];
}
m=sum/5;//这样可以求出每个班的平均分
printf("第%d个班的平均分为%d",i+1,m);
sum=0;//循环一轮后需要对sum和m重新赋值为0
m=0;
}
案例全部代码如下
#include <stdio.h>
void main(){
int arr[3][5];//定义一个二维数组
int i,j,m;//定义平均分为m,
int sum=0;//初始化3个班15个学生的成绩总分sum为0
printf("请输入学生成绩:");
printf("\n");
for(i=0;i<3;i++){
for(j=0;j<5;j++){
scanf("%d",&arr[i][j]);
}
}
printf("学生成绩用数组表示为:");
printf("\n");
for(i=0;i<3;i++){
for(j=0;j<5;j++){
printf("%d\t",arr[i][j]);
}
printf("\n");
}
for(i=0;i<3;i++){
for(j=0;j<5;j++){
sum+=arr[i][j];
}
}
m=sum/15;//所有班级的平均分为m
printf("所有班级的平均分为%d\n",m);
sum=0;// 求完所有班级的平均分后需要对sum和m重新赋值为0
m=0;
for(i=0;i<3;i++){
for(j=0;j<5;j++){
sum+=arr[i][j];
}
m=sum/5;//这样可以求出每个班的平均分
printf("第%d个班的平均分为%d",i+1,m);
sum=0;//循环一轮后需要对sum和m重新赋值为0,然后继续执行循环
m=0;
}
}
代码运行结果如下
补充:每个班级平均分的输出语句里有i+1,这是因为用i表示输出的是第几个班级的平均分,而i在数组里初始化为0,不可能输出第0个班级的平均分,所以需要i+1。