求一个3×3矩阵位于矩阵边缘的元素之和。

9.2求一个3×3矩阵位于矩阵边缘的元素之和。所谓矩阵边缘的元素,就是第一行和最后一行的元素以及第一列和最后一列的元素。(算法不能通过所有累加后删除中间数的方法实现,必须要判断边缘的条件才能累加。)

直接判断 行索引 等于0,或者 列索引等于 0 或者 行索引等于2 或 列索引等于 2 ,然后把满足要求的数相加就可以了

#include <stdio.h>
#include <string.h>

int main() 
{
    int a[3][3] = {1,2,3,4,5,6,7,8,9};
    int i, j, sum = 0;
    for (i=0;i<3;i++)
    {
        for (j=0;j<3;j++)
        {
            if (i==0 || i==2 || j==0 || j==2)
                sum += a[i][j];
        }
    }

    printf("sum = %d", sum);

    return 0;
}
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7687474
  • 你也可以参考下这篇文章:求一个3*3的整型矩阵对角线元素之和,觉得很实用,也很好理解(易懂)
  • 除此之外, 这篇博客: 求一个3×3矩阵对角线元素之和中的 标题:求一个3×3矩阵对角线元素之和 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 题目描述
    求一个3×3矩阵对角线元素之和。
    输入
    矩阵
    输出
    主对角线 副对角线 元素和
    样例输入

    1 2 3
    1 1 1
    3 2 1
    

    样例输出

    3 7
    

    代码如下:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        int a[3][3],i,j,sum=0,s=0;
        for(i=0;i<3;i++)
        {
            for(j=0;j<3;j++)
            {
                scanf("%d",&a[i][j]);
            }
        }
        for(i=0;i<3;i++)
        {
            for(j=0;j<3;j++)
            {
                if(i==j)
                  sum=sum+a[i][j];
                if(i==0&&j==2)
                  s=s+a[i][j];
                if(i==1&&j==1)
                  s=s+a[i][j];
                if(i==2&&j==0)
                  s=s+a[i][j];
            }
        }
        printf("%d %d",sum,s);
        return 0;
    }
    

以下是一个求解3x3矩阵边缘元素之和的C程序示例:

#include <stdio.h>

int main() {
    int matrix[3][3];
    int sum = 0;

    printf("请输入3x3矩阵的元素:\n");
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            scanf("%d", &matrix[i][j]);
        }
    }

    // 累加第一行和最后一行的元素
    for (int j = 0; j < 3; j++) {
        sum += matrix[0][j];            // 第一行元素
        sum += matrix[2][j];            // 最后一行元素
    }

    // 累加第一列和最后一列的元素(不包括角元素)
    for (int i = 1; i < 2; i++) {
        sum += matrix[i][0];            // 第一列元素
        sum += matrix[i][2];            // 最后一列元素
    }

    printf("边缘元素之和为:%d\n", sum);

    return 0;
}

该程序通过键盘输入获取3x3矩阵的元素,然后按照边缘元素的定义,使用循环累加第一行、最后一行、第一列和最后一列(不包括角元素)的元素值。最终输出累加结果,即矩阵边缘元素之和。