您的位置:

c语言矩阵指针,C语言函数指针

本文目录一览:

c语言矩阵转置 运用二维数组和指针

形参int (*a)[N]和int a[][N]在编译时都被解释为“a是指向长度为N的一维数组的指针”,所以函数体内的操作可以二者完全一样。就是说如果你这个函数是正确的的话,把第一个形参改为int (*a)[N],其余不变就是完全正确的。所以这没有什么新的意义,这里就不费笔墨了。至于改为形参int *a,那得稍费周折,因为int *a是个一级指针,不能接受二维数组的全部信息,要在函数中作点预处理;调用的地方也要做点处理。举例如下:

#include "stdio.h"

#define N 10

void Transpose(int *a,int n){

    int i,j,b[N][N],*p[N];

    for(j=i=0;iN;p[i++]=a+j,j+=n);//处理一下指针,以便操作方阵

    for(i=0;in;i++){

        for(j=0;jn;j++){

            scanf("%d",p[i][j]);//输入矩阵a

            b[j][i]=p[i][j];//转置为b

        }

    }

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

    for(i=0;in;i++){

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

            printf("%d ",p[i][j]=b[i][j]);//改写a为转置后的矩阵

        printf("\n");

    }

}

int main(void){

int a[N][N],n;

    printf("输入转置矩阵的n=");

    scanf("%d",n);

    printf("请输入一个%dx%d的矩阵\n" ,n,n);

    Transpose((int *)a,n);//这里对指针a要强制为与函数形参类型一致

    return 0;

}

c语言如何用指针写一个5*5的矩阵

//要定义一个二级指针,动态申请内存

#include stdio.h

#include stdlib.h

#define ROW 5

#define COL 5

int main(void)

{

int i, j;

int **arr = NULL;

arr = (int **) malloc (sizeof(int *));

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

{

arr[i] = (int *) malloc (COL * sizeof(int));

}

printf("请输入5X5矩阵:\n");

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

{

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

{

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

}

}

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

{

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

{

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

}

printf("\n");

}

}

C语言中怎么用指针实现两矩阵的相加

void MatrixAdd(int *a,int *b,int *result,int n)//a,b两个n阶矩阵相加,结果保存在矩阵result中(指针a,b,result分别用来接收三个二维数组的首地址)

int i;

for(i=0;in*n;i++)*(reslut+i)=*(a+i)+*(b+i);

}

c语言编写函数,用指针实现矩阵相加,并且将结果矩阵的指针作为函数返回值

#include "stdio.h"

#include "stdlib.h"

int **matrixAdd(int x1[][3],int x2[][3],int row,int col)

{

   int **a=NULL;

   int i,j;

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

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

    a[i]=(int *)malloc(col*sizeof(int));

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

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

     a[i][j]=x1[i][j]+x2[i][j];

   return a;

}

int main()

{

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

   int b[2][3]={{11,12,13},{14,15,16}};

   int ** result=NULL;

   int i,j;

   result=matrixAdd(a,b,2,3);

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

   {

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

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

        printf("\n");

   }

   free(result);

   result=NULL;

}

结果:

怎么C语言中怎么用指针的方法将4*4的矩阵转置

1、打开vs2015,新建一个Windows Form窗体程序或者控制台都可以。

2、 定义一个名为array1的数组并赋值:double[,] array1 = new double[3, 3] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };下面求该矩阵转置矩阵。

3、右键解决方案下的项目名,添加-类,创建一个名为“turnzhi”的类。

4、转置类的代码。

5、在主程序调用转置类,用两个for循坏将转置后的数组(array)输出来;并将结果显示在textbox中。

6、转置后的结果正确,这样我们就实现了c#矩阵的转置运算。