C语言输入N*N的矩阵,输出它的转置矩阵.矩阵的转置操作,即把矩阵的行元素变为列元素,

如题所述

第1个回答  2012-11-29
#include<stdio.h>
#include<math.h>
void main()
{ int a[100][100];
int n,i,j,t;

printf("--------");
scanf("%d",&n);
printf("--------");

for(i=0;i<n;i++)

for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}

for(i=0;i<n;i++){ for(j=0;j<n;j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
for(i=0;i<n;i++)

for(j=0;j<n;j++)
{
t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;

}
for(i=0;i<n;i++)
{ for(j=0;j<n;j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
}追问

你的不行
错了

本回答被网友采纳
第2个回答  2012-11-29
#include <stdio.h>
void main()
{
int n=0;
printf("输入矩阵大小n:\n");
scanf("%d", &n);
int *a = new int[n*n];
int *t = new int[n*n];
printf("输入矩阵元素:\n");
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
scanf("%d", a+i*n+j);
}

for(i=0;i<n;i++) //将数组a中的列元素分别赋值给数组t中的行元素
{
for(int j=0;j<n;j++)
*(t+i*n+j) = *(a+j*n+i);
}
for(i=0;i<n*n;i++) //更新数组a中的数据
{
*(a+i) = *(t+i);
}
for(i=0;i<n;i++) //打印数组元素
{
for(int j=0;j<n;j++)
{
printf("%d ", *(a+i*n+j));
}
printf("\n");
}
delete[] a;
delete[] t;
}追问

老师我交上去系统说编译错误
怎么改啊

追答

什么错误信息

追问

加我Q吧787209826
我跟你说详细
就是我们学校的平台上的
代码要求相当严格
你的这个代码过不了

本回答被网友采纳
第3个回答  2012-11-29
用双层循环,把a[ j ][ i ] = a[ i ][ j ]就好啦。追问

求完整代码谢谢
来不及了

追答

看你这么急,http://zhidao.baidu.com/question/67662186.html ,这有一个人家编的。

第4个回答  2018-05-25

第5个回答  2012-11-29
QQ我1041715176,详谈。追问

我Q787209826

C语言编程:N*N方阵的转置
int main(){ int n,t,a[100][100],i,j; scanf("%d",&n);for(i=0;i<n;i++)for(j=0;j<n;j++) scanf("%d",&a[i][j]);printf("转换后:\\n");for(i=0;i<n;i++)for(j=0;j<n;j++){ for(i=0;i<n;i++){ for(j=0;j<n;j++){ if(j==0)printf("%d",...

用C语言编写一个矩阵转置的函数,矩阵的行数和列数在程序中由用户输入...
int n);\/\/填写数值void prtList(int **nList,int row,int clo);\/\/打印矩阵int **zz(int **nList,int row,int clo);\/\/转置函数int main(){ int row,clo,**nList=NULL,*

编写一个函数,使给定的一个n*n矩阵转置,即行列互换。
include <stdio.h>#include <stdlib.h>void input(int **p,int m,int n) {int i,j;printf("请输入数组%d×%d:\\n",m,n);for(i = 0;i < m;i++)for(j = 0;j < n;j++)scanf("%d",&p[i][j]);}void output1(int **p,int m,int n) {int i,j;for(i = 0;i < ...

C语言编程 关于行列式转置的问题
在C语言编程中,处理行列式的转置是一个常见的任务。对于这个问题,首先需要理解矩阵转置的基本概念。矩阵转置是指将一个矩阵的行变成列,列变成行,从而生成一个新的矩阵。如果原始矩阵是 A,则其转置矩阵用符号 \\(A^T\\) 表示。具体到编程实现,可以使用两层循环来完成矩阵转置的操作。外层循环负责遍...

C语言(指针): 编写一个函数实现n*n矩阵转置。在主函数中用scanf输入...
也只能对上三角元素操作,是因为a[][]数组本身空间的限制,如果采用指针的话:令p=a;其他注意是对内容**p之类操作即可。不过如果采用引入矩阵b来操作可以完美解决上述问题:void fun( float a[][],float b[][]){ int i,j;for(i=0;a[i][0];i++)for(j=0;a[i][j];j++){b[j][i]=a[i][j]...

c语言编程m行n列的矩阵转置
include<stdio.h> main(){ int a[4][4],b[4][4]; int i,j,m,n,k; printf("请为数组赋值:\\n"); for(i=0;i<4;i++) for(j=0;j<4;j++) scanf("%d",&a[i][j]); \/*输出a*\/ for(i=0;i<4;i++) { for(j=0;j<4;j++) printf("%3...

编写程序,实现矩阵的转置,即将一个n×m的矩阵行和列互换。
printf("\\n");for(i=0;i<3;i++){ for(j=0;j<3;j++)printf("%d ",Arr[i][j]);printf("\\n");} } void main(){ int Arr[3][3],i,j;printf("请输入3阶矩阵\\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&Arr[i][j]);printf("转置为:");Turn(Arr...

n阶矩阵求转置矩阵 c语言
include <stdio.h> define MAX 100 int Array[MAX][MAX];int n;void takePlace(){ int i,j,t;for(i=0;i<n;i++)for(j=i;j<n;j++){ t=Array[i][j];Array[i][j]=Array[j][i];Array[j][i]=t;} } int main(){ int i,j;printf("please size of matrix:\\n");scanf...

C语言:要求对矩阵的转置变换。 对于输入的矩阵A,要求输出A的转置矩阵...
printf("转置后:\\n");rp(as,r,c);for(i=0;i<r;i++){ free(as[i]);} free(as);} 输入矩阵的行和列,用空格分开:5 6 转置前:94 90 24 5 20 80 22 60 41 18 47 28 0 96 26 1 65 85 20 5 5 90 87 14 71 43 64 96 65...

n阶矩阵求转置矩阵c语言
为了实现n阶矩阵的转置矩阵,本程序利用了C语言进行编写。程序首先定义了一个二维数组Array,其大小为MAX*MAX,用于存储矩阵数据。数组的大小MAX被定义为100,以适应较大的矩阵。接下来,通过函数takePlace()对矩阵进行转置操作。在函数内部,采用双重循环进行遍历,循环变量i和j分别代表矩阵的行和列。通过...

相似回答