问题 G: 零基础学C/C++132——边界均值
题目描述
给定一个n*n的二维数组,求出边界元素的平均值。(所谓边界元素是指该数组周边的元素,即把它当作一个棋盘,四周最边上的元素)
输入
输入为多组测试数据。
第一行有1个整数n(2<=n<=10)。
接下来有n行,每行n个整数,表示n*n二维数组的所有元素。
输出
输出边界元素的平均值,保留2位小数
样例输入 Copy
3
1 2 3
2 3 4
3 4 5
样例输出 Copy
3.00
题解
思路你肯定知道╮(๑•́ ₃•̀๑)╭,但我还是要说,周围一圈加起来除于4*n-4,如果你的代码会把四个角分别多加一次,那么只需要减去就好了。
问题的关键是你能不能化抽象为具象(●´∀`●)
代码(AC)
点击查看代码
#include <stdio.h>
#include <math.h>
int main ()
{
int n;
while(scanf("%d",&n)!=EOF)
{
int a[n][n];
int sum=0;
float ave;
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}//
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(i-1<0||j-1<0||i+1==n||j+1==n) sum=sum+a[i][j];
}
}
ave=(float)sum/(float)(4*n-4);
printf("%.2f\n",ave);
}
return 0;
}