【C系列5.13】指针专题之矩阵转置(hznuoj刷题)
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;
}
}
}

浙公网安备 33010602011771号