转置函数怎么用c语言,C语言转置

c语言 矩阵转置的编写

#include "stdio.h"

成都创新互联公司从2013年成立,是专业互联网技术服务公司,拥有项目成都网站设计、成都网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元舞钢做网站,已为上家服务,为舞钢各地企业和个人服务,联系电话:13518219792

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;i2;i++)

for(j=0;j3;j++)

{

scanf("%d",array[i][j]);

}

printf("\n");

zhuan(array,b);

printf("\n");

for(i=0;i3;i++)

{

for(j=0;j2;j++)

printf("%d",b[i][j]);

printf("\n");

}

}

void zhuan(int array[2][3],int b[3][2]) //转置函数逻辑错误,没那么麻烦,直接转就是了!

{

int i,j;

for(i=0;i2;i++)

for(j=0;j3;j++)

{

b[j][i]=array[i][j];

}

}

c语言编程题,编写一个函数,实现n阶方阵的转置(即行列互换)急急急!!!感谢

#include stdio.h

#include stdlib.h

int main()

{   int a[3][3]={1,2,3,4,5,6,7,8,9};

int j,i,temp;

for(i=0;i3;i++)

for(j=0;j3;j++)

scanf("%d",a[i][j]);

for(i=1;i2;i++)

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

{

temp=a[i][j];

a[i][j]=a[j][i];

a[j][i]=temp;

}

for(i=0;i3;i++)

for(j=0;j3;j++)

{

printf("%d ",a[i][j]);

if(j==2)printf("\n");

}

return 0;

}

扩展资料:

需要说明的是:

1、一个C语言源程序可以由一个或多个源文件组成。

2、每个源文件可由一个或多个函数组成。

3、一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。是整个程序的入口。

4、源程序中可以有预处理命令(包括include 命令,ifdef、ifndef命令、define命令),预处理命令通常应放在源文件或源程序的最前面。

5、每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号。结构体、联合体、枚举型的声明的“}”后要加“ ;”。

6、标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。

参考资料:

百度百科-二维数组

百度百科-c语言

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

#includelt;stdio.hgt;

int main()

{

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

for(i=*a;ilt;*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;ilt;3;i++)

for(j=0;jlt;i;j++)

{

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

}

for(i=0;ilt;3;i++,printf("\n"))

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

}

扩展资料:

C#中for语句的语法:

for(initialization;Boolean expression;update control variable)

statement

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

例子1:

static void Main(string[]args)

{

for(int i=0;ilt;10;i++)

{

Console.WriteLine(i);

Console.ReadLine();

}

}

例子2:

static void Main(string[]args)

{

int i=0;

for(;ilt;10;i++)

{

Console.WriteLine(i);

Console.ReadLine();

}

}

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

Pascal语言中的for循环

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

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

(1)递增型for语句格式

forlt;循环变量gt;:=lt;初值gt;tolt;终值gt;dolt;语句gt;;

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

forlt;循环变量gt;:=lt;初值gt;downtolt;终值gt;dolt;语句gt;;

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

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

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

转置函数 c语言

在转置函数中,第二个循环的约束条件应该是for(n=m;n5;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 malloc.h

int **getList(int row,int clo);//获取矩阵地址空间

void setNum(int **nList,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,**nListSave=NULL;

printf("输入矩阵行列数:");

scanf("%d%d",row,clo);

nList=getList(row,clo);

setNum(nList,row*clo);

printf("输入的矩阵为:\n");

prtList(nList,row,clo);

printf("转置后的矩阵为:\n");

nListSave=zz(nList,row,clo);

free(nList);

nList=nListSave;

prtList(nList,clo,row);

return 0;

}

int **zz(int **nList,int row,int clo)

{

int *nSave=NULL,**listSave=NULL,**listp=nList,*p=NULL,i,j;

nSave=(int *)malloc(sizeof(int)*row*clo);

listSave=(int **)malloc(sizeof(int*)*clo);//倒置后的矩阵

p=nSave;

for(j=0;jclo;j++)

{

for(i=0;irow;i++)

{

*p++=*listp[i];

listp[i]=listp[i]+1;

}

}

for(i=0;iclo;i++)

listSave[i]=nSave[i*row];

for(i=0;irow;i++)

free(nList[i]);//释放原矩阵行空间

return  listSave;

}

void prtList(int **nList,int row,int clo)

{

int i,j;

for(i=0;irow;i++)

{

for(j=0;jclo;j++)

printf("%d ",nList[i][j]);

printf("\n");

}

}

void setNum(int **nList,int n)

{

int *p=nList[0];

printf("填写矩阵中%d个数值:\n",n);

while(n--0)

scanf("%d",p++);

}

int **getList(int row,int clo)

{

int *nums,**nList,i;

nums=(int *)malloc(sizeof(int)*row*clo);

nList=(int **)malloc(sizeof(int*)*row);

for(i=0;irow;i++)

nList[i]=nums[i*clo];

return nList;

}


网站题目:转置函数怎么用c语言,C语言转置
当前链接:http://cdiso.cn/article/hcccgg.html

其他资讯