学习效率代码解答问题

题目描述
某班有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

如下

img

代码:

#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");
    }
} 

运行结果:

img