c语言 矩阵转置的编写

#include "stdio.h"
void main()
{
void zhuan(int array[2][3],int b[3][2]);
int array[2][3],b[3][2]; int i,j;
printf("input:\n");
for(i=0;i<2;i++)
for(j=0;j<3;j++)
{
scanf("%d",&array[i][j]);
}
printf("\n");
zhuan(array,b);
printf("\n");
for(i=0;i<3;i++)
{
for(j=0;j<2;j++)
printf("%d",b[i][j]);
printf("\n");
}
}
void zhuan(int array[2][3],int b[3][2]) //转置函数逻辑错误,没那么麻烦,直专接转就是了!属
{
int i,j;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
{
b[j][i]=array[i][j];
}
}

⑵ c语言数组转置

//try it 试试看
#include <stdio.h>
void transpose( int a[6][6],int n)
{
int i,j,temp;
for(i=0;i<n;i++)
for (j=0;j<i;j++)
{temp=a[i][j];a[i][j]=a[j][i];a[j][i]=temp;}

}
void main()
{
int i,j,a[6][6],n;
printf("please input the 维度<1-6>:");
scanf("%d",&n);
printf("请输入数组元素:\n");
for (i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
transpose(a,n);
printf("操作后的数组为:\n");
for (i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%d ",a[i][j]);printf("\n");
}

⑶ 转置函数 c语言

在转置函数中,第二个循环的约束条件应该是for(n=m;n<5;n++){.....}。因为转置只是把上内三角和下三角中的值容调换,只用执行上三角交换就好了,如果你把上线都交换了,那就等于没有交换。这属于逻辑错误。
正确程序如下:
void transpose(int a[5][5] )
{
int temp = 0,m,n;
for(m = 0;m < 5;m++)
{
for(n = m;n < 5;n++)
{
temp = a[m][n];
a[m][n] = a[n][m];
a[n][m] = temp;
}
}
}

⑷ c语言 任意输入一个矩阵 求它的转置(用指针)

#include <stdio.h> #include <stdlib.h> void Transpose(int **p,int **q,int m,int n); void main() { int i,j, m,n,**p,**q; printf("Input lie and hang:\n"); scanf("%d%d",&m,&n); p=(int**)malloc(m*sizeof(int*)); for(i=0; i<m; i++) { p[i]=(int*)malloc(n*sizeof(int)); } printf("Input %d yuansu:\n",m*n); for(i=0; i<m; i++) { for(j=0; j<n; j++) { scanf("%d",&p[i][j]); } } for(i=0;i<m;i++) { for(j=0;j<n;j++) { printf("%4d",p[i][j]); } printf("\n"); } q=(int**)malloc(n*sizeof(int*)); for(i=0; i<n; i++) { q[i]=(int*)malloc(m*sizeof(int)); } Transpose(p,q,m,n); printf("Transpose....:\n"); for(i=0;i<n;i++) { for(j=0;j<m;j++) { printf("%4d",q[i][j]); } printf("\n"); } } //函数功能: 将矩阵转置 //函数参数: 指针,矩阵的行数和列数 //函数返回值:无 void Transpose(int **p,int **q,int m,int n) { int i,j; for(i=0;i<n;i++) { for(j=0;j<m;j++) { q[i][j]=p[j][i]; } } }

⑸ C语言求转置矩阵

代码看起来没什么问题
检查一下是不是你项目里面加了其它文件
或者重建一个project

⑹ C语言编程:N*N方阵的转置

#include<stdio.h>

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("转换后: ");

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",a[j][i]); else printf(" %d",a[j][i]);

}

printf(" ");

}}}

(6)c语言转置扩展阅读:

C语言书写规则:

1、一个说明或一个语句占一行。

2、用{} 括起来的部分,通常表示了程序的某一层次结构。{}一般与该结构语句的第一个字母对齐,并单独占一行。

3、低一层次的语句或说明可比高一层次的语句或说明缩进若干格后书写。以便看起来更加清晰,增加程序的可读性。在编程时应力求遵循这些规则,以养成良好的编程风格。

网络-c语言

⑺ 将一个3x3的矩阵转置,怎样用c语言写

#include&lt;stdio.h&gt;

int main()

{

int a[3][3];int*i;

for(i=*a;i&lt;*a+9;scanf("%d",i++));//输入矩阵

void trans(int(*p)[3]);//声明转换函数

trans(a);

}

void trans(int(*p)[3])

{

int i,j,t,*k;

for(i=0;i&lt;3;i++)

for(j=0;j&lt;i;j++)

{

t=*(*(p+i)+j);*(*(p+i)+j)=*(*(p+j)+i);*(*(p+j)+i)=t;//行列交换

}

for(i=0;i&lt;3;i++,printf(" "))

for(k=*(p+i);k&lt;*(p+i)+3;printf("%2d",*k++));//输出转置矩阵

}

(7)c语言转置扩展阅读:

C#中for语句的语法:

for(initialization;Boolean expression;update control variable)

statement

其中,statement(语句)是for循环主体,要么是一个语句,要么是用大括号{}封闭的代码块。[3]

例子1:

static void Main(string[]args)

{

for(int i=0;i&lt;10;i++)

{

Console.WriteLine(i);

Console.ReadLine();

}

}

例子2:

static void Main(string[]args)

{

int i=0;

for(;i&lt;10;i++)

{

Console.WriteLine(i);

Console.ReadLine();

}

}

例子2运算得到例子1相同的结果。

Pascal语言中的for循环

循环次数已知时,可以用for语句实现循环结构。

for语句有两种格式:递增型和递减型。

(1)递增型for语句格式

for&lt;循环变量&gt;:=&lt;初值&gt;to&lt;终值&gt;do&lt;语句&gt;;

(2)递减型for语句格式,

for&lt;循环变量&gt;:=&lt;初值&gt;downto&lt;终值&gt;do&lt;语句&gt;;

其中,“循环变量"为一个有序类型的数据,

在第一种形式中,使用的是保留字to,循环变量则从“初值"开始逐一增加到“终值";

在第二种形式中,使用的是保留字downto,“循环变量"则从“初值"开始逐一递减到“终值",每次执行一次循环体语句。

⑻ C语言 ,求转置矩阵

根据数学定义可以知道,对于矩阵P,其第m行n列上的元素,是其转置矩阵的n行m列元版素。

从此权可以得出程序如下:

#defineM10
#defineN5
//以10行5列为例,可以任意修改。
voidconvert(inta[M][N],intb[N][M])//求a的转置矩阵,结果存于b中。
{
inti,j;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
b[j][i]=a[i][j];//转置运算。
}

⑼ 怎么用C语言求转置矩阵(一维数组)

设数组是MxN

int transpos(const int from[M*N], int to[M*N])
{
for (int i=0;i<M;i++) for (int j=0;j<N;j++)
to[j*N+i]=from[i*N+j];
return 1;
}