想要编一个自动生成转置矩阵的C语言程序,结果错了很多

2024-11-22 00:48:51
推荐回答(4个)
回答1:

#include 
#include 
#include

void print(int *,int,int);
void turn(int *,int,int);

int main(int argc, char *argv[])
{
    int r,c;
printf("please input the number of row,cow:");
scanf("%d,%d",&r,&c);
int *a=(int *)malloc(sizeof(int)*r*c);
for(int i=0;i scanf("%d",a+i);
print(a,r,c);
turn(a,r,c);
    system("pause");
    return 0;
}

void print(int *p,int r,int c)
{
for(int i=0;i {
for(int j=0;j printf("%d ",*(p+i*c+j));
printf("\n");
}
}

void turn(int *p,int r,int c)
{
int *d=(int *)malloc(sizeof(int)*r*c);
for(int i=0;i for(int j=0;j *(d+j*r+i)=*(p+i*c+j);
print(d,c,r);
}

运行效果如下:

不知道你要的是不是这个效果~~

回答2:

#include
using namespace std;
int main()
{
int row=10,col=10;
cout<<"输入矩阵行列数:"< cin>>row;
cin>>col;
int A[100][100];
int B[100][100];
cout<<"输入矩阵元素:"< for(int i=0;i for(int j=0;j {
cin>>A[i][j];
B[j][i]=A[i][j];
}
cout<<"原矩阵为:"< for(i=0;i { for(int j=0;j {
cout< }
cout< }
cout<<"转置后矩阵为:"< for(i=0;i { for(int j=0;j {
cout< }
cout< }
}

回答3:

#include
#define N 100
int r,c,a[N][N]; //数组定义时不能有变量
void print ();
void turn ();
void main()
{
printf("please input the number of row,cow:");
scanf("%d%d",&r,&c);
int i,j;
for(i = 0 ; i < r ; i++)
for(j = 0; j < c ; j++)
scanf("%d",&a[i][j]);
turn();
print();
}
void print()
{
int i;
int j;
for(i = 0 ; i < r ; i++)
{
for(j = 0 ; j < c ; j++)
printf("%d ",a[i][j]);
printf("\n");
}
}
void turn()
{
int i,j;
int b[N][N];
for(i = 0 ; i < r ; i++)
{
for(j = 0 ; j < c ; j++)
b[i][j] = a[i][j];
}
for(i = 0 ; i < r ; i++)
{
for(j = 0 ; j < c ; j++)
a[j][i] = b[i][j];
}
i = c;
c = r;
r = i;
}
//你的代码有太多语法错误,请你把基础知识掌握牢点。

回答4:

声明的时候没有指定数组的大小