Ⅰ 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,“循环变量"则从“初值"开始逐一递减到“终值",每次执行一次循环体语句。