时间68
2021-12-08 18:46
采纳率: 100%
浏览 37

大一的C语言题不会做求解

n阶矩阵(所有数据为整数),求对角线元素的和及四周元素的和。(n由键盘输入)

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

2条回答 默认 最新

  • 加拉萨假期 2021-12-08 19:57
    最佳回答

    要下班了,我贴出来吧

    
    #include "stdio.h"
    
    int main()
    {
        int n;
    
        //从命令行读取你的矩阵规格到变量n
        scanf("%d", &n);
        printf("You set n = %d\n", n);
    
        //定义n x n矩阵
        int matrix[n][n];
        //不知道你的矩阵的要求,我就随便用一个连续数列来填矩阵了
        for (int row = 0; row < n; row++)
        {
            for (int col = 0; col < n; col++)
            {
                matrix[row][col] = row * n + col;
            }
        }
    
        //打印矩阵出来看
        printf("... and the matrix is:\n");
        for (int row = 0; row < n; row++)
        {
            for (int col = 0; col < n; col++)
            {
                printf("%d  ", matrix[row][col]);
                if (col == n - 1)
                {
                    printf("\n");
                }
            }
        }
    
        //四周元素和
        int sumBoarder = 0;
        //对角和
        int sumDiagonal = 0;
    
        //遍历每个矩阵的元素,并判断元素是否满足四周元素和或者对角和要求
        //如果满足,则把它累加到对应的变量上
        for (int row = 0; row < n; row++)
        {
            for (int col = 0; col < n; col++)
            {
                //这个判断是不是四周元素的方法就是看行是不是第一行或者最后一行,
                //然后列是不是第一列或者最后一列
                if (row == 0 || row == n - 1 || col == 0 || col == n - 1)
                {
                    sumBoarder += matrix[row][col];
                }
    
                //这个判断是判断是不是对角元素,判断方式是行列坐标索引相等
                if (row == col)
                {
                    sumDiagonal += matrix[row][col];
                }
            }
        }
    
        //打印结果
        printf("boarders=%d, diagonal= %d\n", sumBoarder, sumDiagonal);
    }
    
    

    ```

    评论
    解决 无用
    打赏 举报
查看更多回答(1条)

相关推荐 更多相似问题