#include <iostream>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
void move(int* matrix,int row,int col)
{
int i,j,k;
int *b=new int[row*col];
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
*(b+j*row+i)=*(matrix+i*col+j);
}
}
for(i=0;i<col;i++)
{
for(j=0;j<row;j++)
{
*(matrix+i*row+j)=*(b+i*row+j);
}
}
delete[]b;
}
int main(int argc, char** argv) {
int row,col,i,j;
int *p;
cout<<"请输入行数和列数"<<endl;
cin>>row>>col;
p=new int[row*col];
cout<<"输入矩阵元素"<<endl;
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
cin>>p[i*row+j];
}
}
cout<<"转置前的矩阵为"<<endl;
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
cout<<p[i*row+j]<<" ";
}
cout<<endl;
}
move(p,row,col);
cout<<"转置后的矩阵为"<<endl;
for(i=0;i<col;i++)
{
for(j=0;j<row;j++)
{
cout<<p[i*col+j]<<" ";
}
cout<<endl;
}
return 0;
}
为什么运行结果不对,代码哪里错了?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 蔡能教授,网站特聘专家 2020-04-12 15:41关注
#include <iostream> using namespace std; /* run this program using the console pauser or add your own getch, system("pause") or input loop */ void move(int* matrix,int row,int col) { int i,j,k; int *b=new int[row*col]; for(i=0;i<row;i++) { for(j=0;j<col;j++) { *(b+j*row+i)=*(matrix+i*col+j); } } for(i=0;i<col;i++) { for(j=0;j<row;j++) { *(matrix+i*row+j)=*(b+i*row+j); } } delete[]b; } int main(int argc, char** argv) { int row,col,i,j; int *p; cout<<"请输入行数和列数"<<endl; cin>>row>>col; p=new int[row*col]; cout<<"输入矩阵元素"<<endl; for(i=0;i<row;i++) { for(j=0;j<col;j++) { cin>>p[i*col +j]; } } cout<<"转置前的矩阵为"<<endl; for(i=0;i<row;i++) { for(j=0;j<col;j++) { cout<<p[i*col+j]<<" "; } cout<<endl; } move(p,row,col); cout<<"转置后的矩阵为"<<endl; for(i=0;i<col;i++) { for(j=0;j<row;j++) { cout<<p[i*col+j]<<" "; } cout<<endl; } return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报