题目
本题是谭浩强《C程序设计课后习题》题8.9。
题目:
写一函数,将一个3x3的整型矩阵转置。
以下是本篇文章正文内容,欢迎朋友们进行指正,一起探讨,共同进步。——来自考研路上的lwj
一、解题思路
思路:
1,本题主要思想是实现矩阵的转置:方法为把行和列对调即可,
s2【j】【i】=s1【i】【j】
2,使用指针引用二维元素的方法:
(s1+1)s1[1]
s1[1][2](*(s1+1)+2)
把以上理解成功就能理解转置函数中的指针运算。
二、代码部分
1.引入库
代码如下(示例):
#include<stdio.h>
2.主函数部分
代码如下(示例):
void Transpose(int s1[][3], int s2[][3])
{
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
*(*(s2 + j) + i) = *(*(s1 + i) + j);
}
int main()
{
int s1[3][3]= {0}, s2[3][3] = { 0 };
int i, j;
printf("请输入一个3行3列的矩阵:\n");
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++)
scanf("%d", &s1[i][j]);
Transpose(s1, s2);
printf("转置后的矩阵为:\n");
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
{
printf("%d ", s2[i][j]);
}
printf("\n");
}
return 0;
}
三、执行结果
输出:
请输入一个3行3列的矩阵:
1 2 3
4 5 6
7 8 9
转置后的矩阵为:
1 4 7
2 5 8
3 6 9