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;
}