4.22 C语言练习(写一个行列互换函数,进行二维数组(3×3)转置)

【练习】

题目要求:
	写一个函数,使给定的一个二维数组(3×3)转置,即行列互换。

解法一(没有自写行列互换函数实现转置)

#include 

int main()
{
	int a[3][3]={0};              //定义 
	int i,j;
	
	for(i=0;i<3;i++)
	{
		for(j=0;j<3;j++)
		{
			scanf("%d",&a[j][i]); //键盘输入二维数组 
		}
	}
	
	for(i=0;i<3;i++)
	{
		for(j=0;j<3;j++)
		{
			printf("%d ",a[i][j]); //输出行列互换的二维数组 
		}
		printf("\n");              //输出三个换行 
	}
	
	return 0;
} 

解法二(通过解法一完善自写一个行列互换函数,运用到指针)

#include 
int main()
{
	void change(int (*p)[3]);      //函数声明
	 
	int a[3][3]={0};
	int i,j;
	
	for(i=0;i<3;i++)
	{
		for(j=0;j<3;j++)
		{
			scanf("%d",&a[i][j]);  //键盘输入 
		}
	}
	
	change(a);                     //调用二维数组转置函数 
	
	return 0;
 } 
 
 //形参p是指向包含3个int型元素的一维数组的指针变量 
  
 void change(int (*p)[3])          
 {
 	int x,y;
 	
	for(x=0;x<3;x++)
	{
		for(y=0;y<3;y++)
		{
			printf("%d ",p[y][x]);  //输出行列互换后的数组(下句也可) 
//			printf("%d ",*(*(p+y)+x));
		}
		printf("\n");
	}
 }

4.22 C语言练习(写一个行列互换函数,进行二维数组(3×3)转置)_第1张图片

你可能感兴趣的:(4.22 C语言练习(写一个行列互换函数,进行二维数组(3×3)转置))