weixin_39965936 2021-06-05 15:56 采纳率: 68.8%
浏览 468
已结题

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;
     } 
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月1日

悬赏问题

  • ¥50 buildozer打包kivy app失败
  • ¥30 在vs2022里运行python代码
  • ¥15 不同尺寸货物如何寻找合适的包装箱型谱
  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复