指针习题9

本文介绍了一个用于将3*3整型矩阵进行转置的C语言函数实现。通过指针操作,该函数能够有效地交换矩阵的行和列,实现矩阵转置。文章提供了完整的代码示例和运行结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:写一函数,将一个3*3的整型矩阵转置。

楼主第一眼看到此题 心情如下
在这里插入图片描述

什么是矩阵转置
在这里插入图片描述

说白了不就是行列换一下吗?
恕楼主无能,没能用指针方法做出来。。。?
直接放答案了

#include<stdio.h>
int main()
{void move(int *pointer);
 int a[3][3],*p,i;
 printf("input matrix:\n");
 for(i=0;i<3;i++)
 {scanf("%d%d%d",&a[i][0],&a[i][1],&a[i][2]);
 }
 p=&a[0][0];
 move(p);
 printf("Now,matrix:\n");
 for(i=0;i<3;i++)
 {printf("%d %d %d\n",a[i][0],a[i][1],a[i][2]);
 }
 return 0;
}
void move(int *pointer)
{int i,j,t;
for(i=0;i<3;i++)
{
 for(j=i;j<3;j++)
{t=*(pointer+3*i+j);
 *(pointer+3*i+j)=*(pointer+3*j+i);
 *(pointer+3*j+i)=t;
}
}
}

a是二维数组,p和形参pointer是指向整型数据的指针变量,p指向数组0行0列元素a[0][0].在调用move函数时,将实参p的值&a[0][0]传递给形参pointer,在move函数中将a[i][j]与a[j][i]的值交换。由于a数组的大小时33,而数组元素是按行排列的,因此a[i][j]在a数组中是第(3i+j)个元素,例如a[2][1]是数组第7个元素。同理,a[i][j]的地址是(pointer+3j+i)。将(pointer+3i+j)和(pointer+3*j+i)互换即可。

运行结果在这里插入图片描述

下两篇将前面两道题的答案版写一下
下一篇 指针习题7答案版

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值