c语言求一个矩阵的转置矩阵,怎么写都不对,矩阵是输入给出的。
2条回答 默认 最新
关注 源码
#include <stdio.h> #include <string.h> #define maxn 11 int mat[maxn][maxn]; void swap(int* a, int* b) { // (1) int tmp = *a; *a = *b; *b = tmp; } void maxtrixT(int n, int mat[][maxn]) { // (2) int i, j; for(i = 0; i < n; ++i) { for(j = i; j < n; ++j) { // (3) swap( &mat[i][j], &mat[j][i] ); // (4) } } } int main() { int n; int i, j; while(scanf("%d", &n) != EOF) { for(i = 0; i < n; ++i) { for(j = 0; j < n; ++j) { scanf("%d", &mat[i][j]); } } maxtrixT(n, mat); for(i = 0; i < n; ++i) { for(j = 0; j < n; ++j) { if(j) printf(" "); // (5) printf("%d", mat[i][j]); } puts(""); } } return 0; }
解析
( 1 ) (1)(1) 利用指针,实现了变量的交换。
( 2 ) (2)(2) 转置函数的定义,其中第二个参数是个矩阵,二维数组的高维(即第一维)可以不定义;
( 3 ) (3)(3) 注意,这里的 j必须从 i开始枚举,不能从 0 开始,如果不理解,可以试试改成 0 以后,程序的执行结果;
( 4 ) (4)(4) 利用 swap实现mat[i][j]和mat[j][i]的变量交换;
( 5 ) (5)(5) 空格作为矩阵输出时的分隔符,之所以这么些,是因为第一个数字之前不需要分隔符;本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥60 版本过低apk如何修改可以兼容新的安卓系统
- ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
- ¥50 有数据,怎么建立模型求影响全要素生产率的因素
- ¥50 有数据,怎么用matlab求全要素生产率
- ¥15 TI的insta-spin例程
- ¥15 完成下列问题完成下列问题
- ¥15 C#算法问题, 不知道怎么处理这个数据的转换
- ¥15 YoloV5 第三方库的版本对照问题
- ¥15 请完成下列相关问题!
- ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?