与矩阵有关的习题

分享两道与矩阵有关的习题。

一、矩阵运算

给定一个n×n的方阵,本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。

输入格式:

输入第一行给出正整数n(1<n≤10);随后n行,每行给出n个整数,其间以空格分隔。

输出格式:

在一行中给出该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。

输入样例:

4
2 3 4 1
5 6 1 1
7 1 8 1
1 1 1 1

输出样例:

35

根据题目描述,我们需要计算给定矩阵除副对角线、最后一列和最后一行以外的所有元素之和。

下面是使用 C 语言编写的程序:

#include <stdio.h>

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

    printf("请输入矩阵的大小(1<n≤10):");
    scanf("%d", &n);

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

    printf("除副对角线、最后一列和最后一行以外的元素之和为:%d\n", sum);

    return 0;
}

先定义了一个大小为 10×10 的二维数组 matrix 来存储矩阵的元素,以及一个变量 sum 来存储除副对角线、最后一列和最后一行以外的元素之和。

用户先输入矩阵的大小 n,然后输入矩阵的元素。

通过使用两个嵌套的循环来读取用户输入的矩阵元素,并在读取的过程中计算除副对角线、最后一列和最后一行以外的元素之和。具体来说,在每次读取一个元素后,判断该元素是否在除副对角线、最后一列和最后一行以外,如果是则将其加到 sum 中。

最后,输出计算得到的除副对角线、最后一列和最后一行以外的元素之和。

二、矩阵转置

请你编写一个C程序,能够将一个nxn的整数矩阵进行转置,并将转置后的矩阵打印出来。
提示:
可以使用二维数组表示矩阵。转置矩阵的行和列互换。
输入用例:

请输入方阵的大小(例如3表示3x3的矩阵):4

输入矩阵:

1 2 3 4

5 6 7 8

9 10 11 12

13 14 15 16

输出用例:
转置后的矩阵:

1 5 9 13

2 6 10 14

3 7 11 15

4 8 12 16

下面是使用 C 语言编写的程序:

#include <stdio.h>

#define MAX_SIZE 10

void transposeMatrix(int matrix[][MAX_SIZE], int n) {
    int temp;
    for (int i = 0; i < n; i++) {
        for (int j = i + 1; j < n; j++) {
            temp = matrix[i][j];
            matrix[i][j] = matrix[j][i];
            matrix[j][i] = temp;
        }
    }
}

void printMatrix(int matrix[][MAX_SIZE], int n) {
    printf("转置后的矩阵:\n");
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            printf("%d ", matrix[i][j]);
        }
        printf("\n");
    }
}

int main() {
    int n; 
    int matrix[MAX_SIZE][MAX_SIZE]; 
    printf("请输入矩阵的大小(1<n≤10):");
    scanf("%d", &n);

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

    transposeMatrix(matrix, n);
    printMatrix(matrix, n);

    return 0;
}

先定义了一个大小为 MAX_SIZE × MAX_SIZE 的二维数组 matrix 来存储矩阵的元素,以及一个变量 n 来表示矩阵的大小。

用户输入获取矩阵的大小 n和矩阵的元素。

使用两个嵌套的循环来读取用户输入的矩阵元素,将其存储到 matrix 数组中。

调用 transposeMatrix 函数来进行矩阵转置操作。在 transposeMatrix 函数中,使用两个嵌套的循环来遍历矩阵的上三角或下三角区域,并交换对应位置的元素,实现转置操作。

最后,调用 printMatrix 函数来打印转置后的矩阵。在 printMatrix 函数中使用两个嵌套的循环来遍历转置后的矩阵,并将每个元素打印出来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值