写一个函数,使给定的一个矩阵数组转置,行列互换。 比如输入 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隔开
每行的最后一个行元素换行。 展开
先输入一个正整数n代表矩阵式n行n列的
n的大小不会超过100
关于输出
输出转置之后的矩阵。
输出矩阵时行元素之间用\t隔开
每行的最后一个行元素换行。 展开
展开全部
#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
展开全部
#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");
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询