写一个函数,使给定的一个矩阵数组转置,行列互换。 比如输入 1 2 3 4 5 6 7 8 9 输出 1 4 7 2 5 8 3 6 9

关于输入先输入一个正整数n代表矩阵式n行n列的n的大小不会超过100关于输出输出转置之后的矩阵。输出矩阵时行元素之间用\t隔开每行的最后一个行元素换行。... 关于输入
先输入一个正整数n代表矩阵式n行n列的
n的大小不会超过100

关于输出
输出转置之后的矩阵。
输出矩阵时行元素之间用\t隔开
每行的最后一个行元素换行。
展开
 我来答
My_Persistence
2017-12-22 · TA获得超过3467个赞
知道大有可为答主
回答量:1201
采纳率:81%
帮助的人:434万
展开全部
#include <stdio.h>
#include <stdlib.h>
void matrix_transpose(void *arr,int n)
{
int i,j,t;
int **pn=(int**)arr;
for(i=0;i<n;i++){
for(j=0;j<i;j++){
t=pn[i][j];pn[i][j]=pn[j][i];pn[j][i]=t;
}
}
}
int main()
{
int n,i,j;
int **pn;
scanf("%d",&n);
pn=(int**)malloc(n*sizeof(int*)); //动态分配n个int*的指针内存空间,用作二维数组的行指针
for(i=0;i<n;i++){
pn[i]=(int*)malloc(n*sizeof(int)); //动态分配n个int的内存空间,用于存放每行的n个数据
for(j=0;j<n;j++)
scanf("%d",pn[i]+j);  //输入数据
}
matrix_transpose(pn,n);
for(i=0;i<n;i++)
for(j=0;j<n;j++){
if(j == n-1)
printf("%d\n",*(pn[i]+j));
else
printf("%d\t",*(pn[i]+j));
}
//释放动态内存空间
for(i=0;i<n;i++)
free(pn[i]);
free(pn);
return 0;
}

//示例运行结果
F:\c_work>a.exe
3
1 2 3
4 5 6
7 8 9
1       4       7
2       5       8
3       6       9
cdyzxy
2017-12-22 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:85%
帮助的人:3751万
展开全部
#include<stdio.h>
#define N 100
void fun(int a[][N],int n) { int i,j,k;
  for ( i=0;i<n;i++ ) 
    for ( j=0;j<i;j++ ) {
      k=a[i][j];a[i][j]=a[j][i];a[j][i]=k;
    }
}
void main() { int a[N][N],n,i,j;
  scanf("%d",&n); if ( n>N ) n=N;
  for ( i=0;i<n;i++ ) for ( j=0;j<n;j++ ) scanf("%d",&a[i][j]);
  fun(a,n);
  for ( i=0;i<n;i++,printf("\n") ) for ( j=0;j<n;j++ ) printf("%d\t",a[i][j]);
}
追问
输出的答案还要修改一下,每一行最后一个数之后不能有空格,这怎么改啊?
追答
输出部分改写:
for ( i=0;i<n;i++ ) {
  for ( j=0;j<n;j++ )
    if ( j==0 ) printf("%d",a[i][j]);
    else printf("\t%d",a[i][j]);
  printf("\n");
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式