Ⅰ c語言如何通過定義函數來轉置矩陣
#include <stdio.h>
int main()
{ struct aaa
{ int x;
int y;
};
struct aaa t,a[3][3]= {0,0,0,1,0,2,1,0,1,1,1,2,2,0,2,1,2,2};
int i,j;
for(i=0; i<3; i++)
{ for(j=0; j<3; j++)
printf("[%d,%d] ",a[i][j].x,a[i][j].y);
printf(" ");
}
printf("after: ");
for(i=0; i<3; i++)
for(j=0; j<i; j++)
{ t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
for(i=0; i<3; i++)
{ for(j=0; j<3; j++)
printf("[%d,%d] ",a[i][j].x,a[i][j].y);
printf(" ");
}
return 0;
}
或:
#include <stdio.h>
struct aaa
{ int x;
int y;
};
void zhuan(struct aaa a[][3])
{ struct aaa t;
int i,j;
for(i=0; i<3; i++)
for(j=0; j<i; j++)
{ t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
}
void prt(struct aaa a[][3])
{ int i,j;
for(i=0; i<3; i++)
{ for(j=0; j<3; j++)
printf("[%d,%d] ",a[i][j].x,a[i][j].y);
printf(" ");
}
}
int main()
{ struct aaa a[3][3]= {0,0,0,1,0,2,1,0,1,1,1,2,2,0,2,1,2,2};
prt(a);
zhuan(a);
printf("after: ");
prt(a);
return 0;
}
Ⅱ 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語言實現矩陣轉置
//Transpose
#include <stdio.h>
#define MAX 20
int m,n;
void transpose(double a[][MAX],double b[][MAX])
{
int i,j;
for(i=0;i<MAX;i++)
for(j=0;j<MAX;j++)
b[i][j]=a[j][i];
}
void main()
{
int i,j;
double a[MAX][MAX],b[MAX][MAX];
puts("Please input the dimensions of the matrixe:");
puts("(in term of 「2 3」).");
scanf("%d %d",&m,&n);
puts("Enter the matrix:");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%lf",&a[i][j]);
transpose(a,b);
puts("The Transpose as follow:");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(b[i][j]-int(b[i][j])!=0)
printf("%lf ",b[i][j]);
else
printf("%d ",int(b[i][j]));
}
puts("");
}
}
//我這個能實現任意大小的,還有提示輸入輸出
Ⅳ C語言:要求對矩陣的轉置變換。 對於輸入的矩陣A,要求輸出A的轉置矩陣。
/*矩陣的行和列運行時輸入*/
#include <stdio.h>
#include <malloc.h>
#include <time.h>
#include <stdlib.h>
void rp(int** a,int r,int c)
{
int i,j;
int** ta=(int**)malloc(c*sizeof(int*));
for(i=0;i<c;i++)
{
ta[i]=(int*)malloc(r*sizeof(int));
}
for(i=0;i<c;i++)
{
for(j=0;j<r;j++)
{
ta[i][j]=a[j][i];
printf("%4d",ta[i][j]);
}
printf("\n");
}
for(i=0;i<c;i++)
{
free(ta[i]);
}
free(ta);
}
void main()
{
int r,c,i,j;
printf("輸入矩陣的行和列,用空格分開:");
scanf("%d%d",&r,&c);
int** as=(int**)malloc(r*sizeof(int*));
for(i=0;i<r;i++)
{
as[i]=(int*)malloc(c*sizeof(int));
}
srand((unsigned)time(0));
printf("轉置前:\n");
for(i=0;i<r;i++)
{
for(j=0;j<c;j++)
{
as[i][j]=rand()%100;
printf("%4d",as[i][j]);
}
printf("\n");
}
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 17
轉置後:
94 22 0 20 71
90 60 96 5 43
24 41 26 5 64
5 18 1 90 96
20 47 65 87 65
80 28 85 14 17
請按任意鍵繼續. . .
Ⅳ 將一個3x3的矩陣轉置,怎樣用c語言寫
#include<stdio.h>
int main()
{
int a[3][3];int*i;
for(i=*a;i<*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<3;i++)
for(j=0;j<i;j++)
{
t=*(*(p+i)+j);*(*(p+i)+j)=*(*(p+j)+i);*(*(p+j)+i)=t;//行列交換
}
for(i=0;i<3;i++,printf(" "))
for(k=*(p+i);k<*(p+i)+3;printf("%2d",*k++));//輸出轉置矩陣
}
(5)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<10;i++)
{
Console.WriteLine(i);
Console.ReadLine();
}
}
例子2:
static void Main(string[]args)
{
int i=0;
for(;i<10;i++)
{
Console.WriteLine(i);
Console.ReadLine();
}
}
例子2運算得到例子1相同的結果。
Pascal語言中的for循環
循環次數已知時,可以用for語句實現循環結構。
for語句有兩種格式:遞增型和遞減型。
(1)遞增型for語句格式
for<循環變數>:=<初值>to<終值>do<語句>;
(2)遞減型for語句格式,
for<循環變數>:=<初值>downto<終值>do<語句>;
其中,「循環變數"為一個有序類型的數據,
在第一種形式中,使用的是保留字to,循環變數則從「初值"開始逐一增加到「終值";
在第二種形式中,使用的是保留字downto,「循環變數"則從「初值"開始逐一遞減到「終值",每次執行一次循環體語句。