weixin_39965936
2021-06-05 15:56
采纳率: 84.6%
浏览 47

C语言二维数组怎么转置数组?

我用的方法很笨,因为不让修改主程序的代码框架,所以有没有好的方法把我人为3*3赋值那块改成任意数组?

//阅读下面程序,完成下面三个函数,使给定的一个3×3的二维整型数组转置,即行列互换。请使用指针实现。
#include <stdio.h>
#define N 3
void inputmatrix(int *p)
{
	int i,j;
	for(i=0;i<3;i++){
		for(j=0;j<3;j++){
		scanf("%d",&*p);
		p++;	
		}//这个指针形式的二维数组的输入可以考虑考虑成三个一维数组。 
	}
     ///程序填空,请将该函数填写完整
}
void transpose(int *p)
{
	int i,j=0;
	int t[9];
	for(i=0,j=0;i<9;i++,j++){
		t[j]=*(p+j);
	}
	*p=t[0];
	*(p+1)=t[3];
	*(p+2)=t[6];
	*(p+3)=t[1];
	*(p+4)=t[4];
	*(p+5)=t[7];
	*(p+6)=t[2];
	*(p+7)=t[5];
	*(p+8)=t[8];	
	
	/*123
	456
	789
	
	147
	258
	369*/

     ///程序填空,请将该函数填写完整
}
void printmatrix(int *p)
{
	int i,j;
	for(i=0;i<3;i++){
		for(j=0;j<3;j++){
		printf("%d ",*p);	
		p++;
		}
	printf("\n");
	}
     ///程序填空,请将该函数填写完整
}
int main()
{
    int s[N][N], *p;
    p = &s[0][0];
    inputmatrix(p);
    transpose(p);
    printmatrix(p);
    return 0;
}
  • 好问题 提建议
  • 收藏

1条回答 默认 最新

  • 小P聊技术 2021-06-05 16:01
    #include<stdio.h>
    int main()
    {
    	int huan(int a[3][3]);
    	int num[3][3],i,j;
    	printf("请输入一个3*3的数组:\n");
    	for(i=0;i<3;i++)
    	{
    		for(j=0;j<3;j++)
    			scanf("%d",&num[i][j]);	
    	}
    	huan(num);
    	return 0;
    } 
    int huan(int a[3][3])//定义huan函数,含有一个数组
    {
    	int i,j,b[3][3];
    	for(i=0;i<3;i++)
    	{
    		for(j=0;j<3;j++)
    		{
    			b[j][i]=a[i][j];
    		}
    	}
    	for(i=0;i<3;i++)
    	{
    		for(j=0;j<3;j++)
    		{
    			printf("%d ",b[i][j]);
    		}
    		printf("\n");
    	}
    	return 0;
     } 
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题