【C系列5.13】指针专题之矩阵转置(hznuoj刷题)

发布时间 2023-12-11 19:35:25作者: Blizzard1900

Description

 

Alex最近又喜欢上了矩阵转置游戏,这个游戏非常简单,将一个3*3的矩阵转置即可。现在,请你用指针写一个程序来实现矩阵转置功能。

 

Input

 

输入包含多组测试数据,对于每组测试数据,包含一个3*3的矩阵,每个元素的值都在0到9之间。

 

Output

 

一个转置后的3*3的矩阵。每组测试数据之间用一个空行隔开。

 

Samples

 

input 
1 2 3
4 5 6
7 8 9
output 
1 4 7
2 5 8
3 6 9

 

#include <stdio.h>
#pragma warning (disable:4996)
// 函数声明
void transposeMatrix(int matrix[3][3]);

int main() {

    // 读取测试组数
   

    for (;1;)
    {
        int matrix[3][3];

        // 读取矩阵元素
        for (int i = 0; i < 3; ++i) 
        {
            for (int j = 0; j < 3; ++j)
            {
                if (scanf("%d", &matrix[i][j]) == EOF)return 0;

            }
        }

        // 调用函数进行矩阵转置
        transposeMatrix(matrix);

        // 输出转置后的矩阵
        for (int i = 0; i < 3; ++i)
        {
            for (int j = 0; j < 3; ++j)
            {
                printf("%d", matrix[i][j]);

                // 输出空格或换行
                if (j < 2) {
                    printf(" ");
                }
                else {
                    printf("\n");
                }
            }
        }

        // 输出空行,分隔测试数据
        
        printf("\n");
        
    }
    
    return 0;
}

// 函数定义:矩阵转置
void transposeMatrix(int matrix[3][3]) {
    int temp;
    for (int i = 0; i < 3; ++i) {
        for (int j = i + 1; j < 3; ++j) {
            // 交换元素
            temp = matrix[i][j];
            matrix[i][j] = matrix[j][i];
            matrix[j][i] = temp;
        }
    }
}