C++编程问题,高手请进。 编写程序,实现给定的二维数组(M*N)的转置(行列互换)。。。
RT,编写程序,实现给定的二维数组(M*N)的转置(行列互换)。。。不要限定了NM的大小,NM的数值是我们输入的...
RT,编写程序,实现给定的二维数组(M*N)的转置(行列互换)。。。
不要限定了N M的大小,N M的数值是我们输入的 展开
不要限定了N M的大小,N M的数值是我们输入的 展开
4个回答
展开全部
//当行列不相等时,不在在自身上进行转置的,只能将行列互换的结果存入另一数组。
#include<stdio.h>
#define M 4
#define N 5
void main()
{
int a[M][N]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20}};
int b[N][M];
int i,j;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
b[j][i]=a[i][j];
printf("reverse before:\n");
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
printf("%2d ",a[i][j]);
printf("\n");
}
printf("reverse after:\n");
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
printf("%2d ",b[i][j]);
printf("\n");
}
}
#include<stdio.h>
#define M 4
#define N 5
void main()
{
int a[M][N]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20}};
int b[N][M];
int i,j;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
b[j][i]=a[i][j];
printf("reverse before:\n");
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
printf("%2d ",a[i][j]);
printf("\n");
}
printf("reverse after:\n");
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
printf("%2d ",b[i][j]);
printf("\n");
}
}
展开全部
希望可以帮助你哈~~~~
#include<stdio.h>
#include<stdlib.h>
#define M 5
#define N 3
int main()
{
int i = 0;
int j = 0;
int array[M][N];
//数组的初始化
for(i = 0; i < M; ++i)
{
for(j = 0; j < N; ++j)
{
array[i][j] = i + j;//初始化工作
}
}
printf("转置前:\n");
for(i = 0; i < M; ++i)
{
for(j = 0; j < N; ++j)
{
printf("%-4d ", array[i][j]);
}
printf("\n");
}
printf("\n");
//数组的转置
for(i = 0; i < M; ++i)
{
for(j = 0; j < N; ++j)
{
array[j][i] = array[i][j];
}
}
printf("转置后:\n");
for(i = 0; i < N; ++i)
{
for(j = 0; j < M; ++j)
{
printf("%-4d ", array[i][j]);
}
printf("\n");
}
printf("\n");
return 0;
}
#include<stdio.h>
#include<stdlib.h>
#define M 5
#define N 3
int main()
{
int i = 0;
int j = 0;
int array[M][N];
//数组的初始化
for(i = 0; i < M; ++i)
{
for(j = 0; j < N; ++j)
{
array[i][j] = i + j;//初始化工作
}
}
printf("转置前:\n");
for(i = 0; i < M; ++i)
{
for(j = 0; j < N; ++j)
{
printf("%-4d ", array[i][j]);
}
printf("\n");
}
printf("\n");
//数组的转置
for(i = 0; i < M; ++i)
{
for(j = 0; j < N; ++j)
{
array[j][i] = array[i][j];
}
}
printf("转置后:\n");
for(i = 0; i < N; ++i)
{
for(j = 0; j < M; ++j)
{
printf("%-4d ", array[i][j]);
}
printf("\n");
}
printf("\n");
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int n, m;
int **a;
int i, j;
int **b;
printf("input n,m:");
scanf("%d,%d", &n, &m);
a = (int **)malloc(sizeof(int*)*n);
for (i = 0; i < m; ++i)
{
a[i] = (int*)malloc(sizeof(int)*m);
}
b = (int**)malloc(sizeof(int *)*m);
for (i = 0; i < m; ++i)
b[i] = (int*)malloc(sizeof(int)*n);
for (i = 0; i < n; ++i)
for (j = 0; j < m; ++j)
{
printf("Input a[%d][%d]:", i, j);
scanf("%d", &a[i][j]);
b[j][i] = a[i][j];
}
for (i = 0; i < m; ++i)
{
for (j = 0; j < n; ++j)
printf("%d ", b[i][j]);
printf("\n");
}
free(a);
free(b);
return 0;
}
#include <stdlib.h>
int main(void)
{
int n, m;
int **a;
int i, j;
int **b;
printf("input n,m:");
scanf("%d,%d", &n, &m);
a = (int **)malloc(sizeof(int*)*n);
for (i = 0; i < m; ++i)
{
a[i] = (int*)malloc(sizeof(int)*m);
}
b = (int**)malloc(sizeof(int *)*m);
for (i = 0; i < m; ++i)
b[i] = (int*)malloc(sizeof(int)*n);
for (i = 0; i < n; ++i)
for (j = 0; j < m; ++j)
{
printf("Input a[%d][%d]:", i, j);
scanf("%d", &a[i][j]);
b[j][i] = a[i][j];
}
for (i = 0; i < m; ++i)
{
for (j = 0; j < n; ++j)
printf("%d ", b[i][j]);
printf("\n");
}
free(a);
free(b);
return 0;
}
追问
看下去很接近了,但是运行有点问题?就是输出的结果好像有错误
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
作业不做了,我给你写,等一下哈!!!
分数留给我。
分数留给我。
更多追问追答
追问
呵呵,等你。。。不过要快点哦。。。
追答
//可以了,刚刚写完的。呵呵~~
//矩阵大小:行列1000以内随便你输。
#include
using namespace std;
#define N 1000
#define M 1000
int mix[N][M];
void Swap( int & a, int & b)
{
int temp = b;
b = a;
a = temp;
}
void Swap_mix( int mix[][M] , int & r, int & c )
{
int i,j,k;
for( i = 1; i >r>>c )
{
cout>mix[i][j];
}
}
cout<<"转置前 原始矩阵 :"<<endl;
Pnt( mix , r , c );
Swap_mix( mix , r , c );
cout<<"转置后 转置矩阵:"<<endl;
Pnt( mix , r , c );
cout<<"\n\t\t输入行数和列数,空格分开: ";
}
return 0;
}
//测试:
/*
输入行数和列数,空格分开: 2 4
输入相应的原始矩阵:
1 2 3 4
5 6 7 8
转置前 原始矩阵 :
------------------------------------
1 2 3 4
5 6 7 8
------------------------------------
转置后 转置矩阵:
------------------------------------
1 5
2 6
3 7
4 8
------------------------------------
输入行数和列数,空格分开:
*/
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询