tc指针的指针,急!

lcaamtb 2003-10-20 01:45:53
编了一个tc程序,求助!
输入一个n×(p+1)矩阵,要求输出其转置矩阵,并且转置用函数实现!

#include "stbio.h"
//矩阵转置函数
zhuanzhi(int **x,int n,int m)
int **y,i,j;
{
//为y分配m×n的内存空间;

//转置
for(i=0;i<m;i++)
for(j=0;j<n;j++)
y[i][j]=x[j][i];
return(y);
free(y);
}
main()
int **x,**x_zhuanzhi;
{
//输入n,p
scanf("%d%d",&n,&p);
//为x,x_zhuanzhi分配内存空间
x=(int**)malloc(sizeof(int*)*n);
for (i=0;i<n;i++)
{
x[i]=(int *)malloc(sizeof(int)*(p+1));
}
x_zhuanzhi=(int**)malloc(sizeof(int*)*(p+1));
for(i=0;i<=p;i++)
x_zhuanzhi[i]=(int*)malloc(sizeof(int)*n);

//输入矩阵x;
for(i=0;i<n;i++)
for(j=0;j<=p;j++)
scanf("%d",&x[i][j]);

//求矩阵x的转置矩阵;
x_zhuanzhi=zhuanzhi(x,n,(p+1));

//输出转置矩阵
free(x);
free(x_zhuanzhi);
}

请告诉我错在哪里,并且输入矩阵x时候,如果矩阵元素不是int型,而是double型,应该如何分配空间,我有试过直接将int修改为double但是输入x的时候会出错!

...全文
117 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lcaamtb 2003-10-21
  • 打赏
  • 举报
回复
wyd124(鱼日) 多谢了,可以了!再问一下,可否把你的联系方式给我,真想好好谢谢你!
wyd124 2003-10-21
  • 打赏
  • 举报
回复
行了,,程序如下::
#include "stdio.h"
#include <stdlib.h>
#include <malloc.h>
#include "time.h"
//矩阵转置函数
double **zhuanzhi(double **x,int n,int m)

{ double **y;
int i,j;
//为y分配m×n的内存空间;
y=(double **)malloc(sizeof(double*)*m);
for (i=0;i<m;i++)
{
y[i]=(double *)malloc(sizeof(double)*(n)); ////
}
//转置
for(i=0;i<m;i++)
for(j=0;j<n;j++)
y[i][j]=x[j][i];
return(y);
free(y);
}
void main()

{
double **x,**x_zhuanzhi;
// double x[2][2];
int n,p; //输入n,p
scanf("%d%d",&n,&p);
//为x,x_zhuanzhi分配内存空间
x=(double**)malloc(sizeof(double*)*n);
for (int i=0;i<n;i++)
{
x[i]=(double *)malloc(sizeof(double)*(p+1));
}
x_zhuanzhi=(double**)malloc(sizeof(double*)*(p+1));
for(i=0;i<=p;i++)
x_zhuanzhi[i]=(double*)malloc(sizeof(double)*n);

//输入矩阵x;
float a; ////////此处********************************************
for(i=0;i<n;i++)
for(int j=0;j<=p;j++)
{
scanf("%f",&a);
x[i][j]=(double)a; //**************************************此处
//进行数据类型转换
}
for (i=0;i<n;i++)
{for(int j=0;j<=p;j++)
printf("%f",x[i][j]);
printf("\n");}
//求矩阵x的转置矩阵;
x_zhuanzhi=zhuanzhi(x,n,(p+1));

//输出转置矩阵
for (int k=0;k<=p;k++)
{for (int l=0;l<n;l++)
printf("%1.1f ",x_zhuanzhi[k][l]);
printf("\n");}
free(x);
free(x_zhuanzhi);



}
ghyd 2003-10-21
  • 打赏
  • 举报
回复
你这个函数头有问题吧????
zhuanzhi(int **x,int n,int m)
int **y,i,j;

应该改成:
zhuanzhi(int **x,int n,int m)
int **x,n,m;

或者:
zhuanzhi(x, n, m)
int **x,n,m;
wyd124 2003-10-21
  • 打赏
  • 举报
回复
可能和scanf("%d",&x[i][j]);中输入控制有关,,把double换成float,读入语句写成:
scanf("%f",&x[i][j]);程序可以执行??
lcaamtb 2003-10-20
  • 打赏
  • 举报
回复
哪位熟悉的人可否提醒一下,如何输入double型的矩阵?
wyd124 2003-10-20
  • 打赏
  • 举报
回复
输入double好像不行
wyd124 2003-10-20
  • 打赏
  • 举报
回复
把你的程序修改如下,可以在vc下执行。你的矩阵的坐标有问题,仔细看看。double型也可。


#include "stdio.h"
#include <stdlib.h>
#include <malloc.h>
//矩阵转置函数
double **zhuanzhi(double **x,int n,int m)

{double **y;
int i,j;
//为y分配m×n的内存空间;
y=(double **)malloc(sizeof(double*)*m);
for (i=0;i<m;i++)
{
y[i]=(double *)malloc(sizeof(double)*(n)); ////
}
//转置
for(i=0;i<m;i++)
for(j=0;j<n;j++)
y[i][j]=x[j][i];
return(y);
free(y);
}
void main()

{
double **x,**x_zhuanzhi;
int n,p; //输入n,p
scanf("%d%d",&n,&p);
//为x,x_zhuanzhi分配内存空间
x=(double**)malloc(sizeof(double*)*n);
for (int i=0;i<n;i++)
{
x[i]=(double *)malloc(sizeof(double)*(p+1));
}
x_zhuanzhi=(double**)malloc(sizeof(double*)*(p+1));
for(i=0;i<=p;i++)
x_zhuanzhi[i]=(double*)malloc(sizeof(double)*n);

//输入矩阵x;
for(i=0;i<n;i++)
for(int j=0;j<=p;j++)
scanf("%d",&x[i][j]);

//求矩阵x的转置矩阵;
x_zhuanzhi=zhuanzhi(x,n,(p+1));

//输出转置矩阵
for (int k=0;k<=p;k++)
{for (int l=0;l<n;l++)
printf("%d",x_zhuanzhi[k][l]);
printf("\n");}
free(x);
free(x_zhuanzhi);
}

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧