题目描述
某班有n2 名同学,他们的座位有 n 排,每排 n 个人,每个人的勤奋值为 ai,j。现在要统计每个同学的学习效率,学习效率定义为每个人的勤奋值加上周围最多 8 个同学的勤奋值,也就是以每个人为中心的 3×3 方阵内勤奋值之和。现在请你统计每个人的学习效率。
输入
第一行一个整数 n (1≤n≤10),表示班级的规模。
接下来 n 行,每行 n 个整数 ai,j (1≤ai,j≤100),表示每个人的勤奋值。
输出
输出 n 行,每行 n 个整数,每个整数表示每个人的学习效率。
样例输入
3
1 2 3
4 5 6
7 8 9
样例输出
12 21 16
27 45 33
24 39 28
如下
代码:
#include <iostream>
using namespace std;
int main()
{
int i,j,n;
int t=0;
int istart,iend,jstart,jend,p,q;
int a[10][10];
int b[10][10]; //记录学习效率
cin >> n;
for (i=0;i<n;i++)
{
for(j=0;j<n;j++)
cin >> a[i][j];
}
//计算
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
if(i-1>=0)
istart = i-1;
else
istart = 0;
if(i+1<n)
iend = i+1;
else
iend = n-1;
if(j-1>=0)
jstart = j-1;
else
jstart = 0;
if(j+1<n)
jend = j+1;
else
jend = n-1;
b[i][j] = 0;
for(p=istart;p<=iend;p++)
{
for(q=jstart;q<=jend;q++)
{
b[i][j] += a[p][q];
}
}
if(j<n-1)
cout << b[i][j]<<" ";
else
cout << b[i][j]<<endl;
}
}
return 0;
}
#include<stdio.h>
#define N 10
void main()
{
int a[N][N];
int i,j,n;
printf("请输入班级的规模:n (1≤n≤10)\n");
scanf("%d", &n);
if (n < 1 || n > 10)
{
printf("输入班级的规模:不合法!\n");
return;
}
printf("请输入%d*%d个人的勤奋值: ai,j (1≤ai,j≤100)\n", n, n);
for(i = 0; i < n; i ++)
for(j = 0; j < n; j ++)
scanf("%d",&a[i][j]);
int sum = 0;
for(i = 0; i < n; i ++)
{
for(j = 0; j < n; j ++){
sum = 0;
if (i - 1 >= 0 && i - 1 < n && j - 1 >= 0 && j - 1 < n)
{
sum += a[i -1][j - 1];
}
if (i - 1 >= 0 && i - 1 < n && j >= 0 && j < n)
{
sum += a[i -1][j];
}
if (i - 1 >= 0 && i - 1 < n && j + 1 >= 0 && j + 1 < n)
{
sum += a[i -1][j + 1];
}
//////////////////////////////////////////////////////
if (i >= 0 && i < n && j - 1 >= 0 && j - 1 < n)
{
sum += a[i][j - 1];
}
if (i >= 0 && i < n && j >= 0 && j < n)
{
sum += a[i][j];
}
if (i >= 0 && i < n && j + 1 >= 0 && j + 1 < n)
{
sum += a[i][j + 1];
}
//////////////////////////////////////////////////////
if (i + 1 >= 0 && i + 1 < n && j - 1 >= 0 && j - 1 < n)
{
sum += a[i + 1][j - 1];
}
if (i + 1 >= 0 && i + 1 < n && j >= 0 && j < n)
{
sum += a[i + 1][j];
}
if (i + 1 >= 0 && i + 1 < n && j + 1 >= 0 && j + 1 < n)
{
sum += a[i + 1][j + 1];
}
printf("%d ",sum);
}
printf("\n");
}
}
运行结果: