编写一个函数,使给定的一个3×3的二维整型数组转置,即行列互换

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编写一个函数,使给定的一个3×3的二维整型数组转置,即行列互换相关的知识,希望对你有一定的参考价值。

为什么执行出错说't' : undeclared identifier
#include<stdio.h>
#define N 3
int score[N][N];
int main()

void convert(int score[][3]);
int i,j;
printf("input array:\n");
for(i=0;i<N;i++)
for(j=0;j<N;j++)
scanf("%d",&score[i][j]);
for(i=0;i<N;i++)
for(j=0;j<N;j++)
printf("%d\t",score[i][j]);
printf("\n");

convert(score);
for(i=0;i<N;i++)

for(j=0;j<N;j++)
printf("%d\t",score[i][j]);
printf("\n");

return 0;

void convert()

int i,j,k;
for(i=0;i<N;i++)
for(j=i+1;j<N;j++)
t=array[i][j];array[i][j]=array[j][i];array[j][i]=t;

1、首先打开Eclipse。

2、新建一个新的Java工程。

3、新建一个Example8类文件。

4、创建2维数组。

5、创建一个输出2维数组的函数。

6、遍历数组,输出数组元素。

7、输出2维数组。

8、运行程序看看行列互换。

参考技术A #include<stdio.h>
#define N 3
int score[N][N];
int main()

void convert(int score[][3]);
int i,j;
printf("input array:\\n");
for(i=0;i<N;i++)
for(j=0;j<N;j++)
scanf("%d",&score[i][j]);
for(i=0;i<N;i++)
   for(j=0;j<N;j++)
printf("%d\\t",score[i][j]);
printf("\\n");

convert(score);
for(i=0;i<N;i++)

for(j=0;j<N;j++)
printf("%d\\t",score[i][j]);
printf("\\n");

return 0;

void convert(int array[][3])//注意形参

int i,j,t;//注意定义t而不是k
for(i=0;i<N;i++)
for(j=i+1;j<N;j++)
 t=array[i][j];array[i][j]=array[j][i];array[j][i]=t; 

 

参考技术B package com.minrisoft;public class wky public static void main(String[] args) int arr[][]= new int[][] 11,22,33,44,55,66,77,88,99 ; System.out.println("行列互换前: "); printArray(arr); int arr2[][]= new int [arr.length][arr.length]; for (int i=0;i<arr.length;i++) for (int j=0;j< arr[i].length;j++) arr2[i][j]=arr[j][i]; System.out.println("行列互换后: "); printArray(arr2); private static void printArray(int[][] arr) for(int i=0;i<arr.length;i++) for (int j = 0; j < arr.length; j++) System.out.print(arr[j][i] + " "); System. out .println(); 参考技术C 有两处错误,1处语法错误,1处逻辑错误
sort(a[3][3]);修改成sort(a);就可以
但是你运行一下,你可以发现他没有转置

因为 for(i=0;i<3;i++)
for(j=0;j<3;j++)把所有的元素都循环了,例如a[1][2]对换了,然后a[2][1]也对换了,实际上没有作用了就,你可以改成for(i=0;i<3;i++)
for(j=i;j<3;j++)
这样就不会重复对换,就可以实现转置的目的了

写一个函数,使给定的一个3*3的二维整型数组转置,即行列互换

写一个函数,使给定的一个3X3的二维整型数组转置,即行列互换

题目解析:

进行数组的行列互换,其关键在于数组互换的表达式 ar[i] [j] = ar[j] [i];其次在循环的时候,内层循环不能到达最大列,需要根据此时是第几行的交换来决定循环的次数,否则有可能数组行列交换之后最后又交换回原来的形状了。

代码示例

#include<stdio.h>

void PrintArray(int ar[3][3])
{
	for(int i=0; i<3; ++i)
	{
		for(int j=0; j<3; ++j)
		{
			printf("%d ", ar[i][j]);
		}
		printf("\\n");
	}
}

void ReverseArray(int ar[3][3])
{
	int tmp;
	for(int i=0; i<3; ++i)
	{
		for(int j=0; j<i; ++j)
		{
			if(i != j) //中间数不发生变化
			{
				//交换两个数
				tmp = ar[i][j];
				ar[i][j] = ar[j][i];
				ar[j][i] = tmp;
			}
			
		}
	}
}

int main()
{
	int array[3][3] = 
	{
		{1,2,3},
		{4,5,6},
		{7,8,9}
	};

	printf("转置前:\\n");
	PrintArray(array);

	//进行数组转置
	ReverseArray(array);

	printf("转置后:\\n");
	PrintArray(array);

	return 0;
}

运行结果:

写一个函数,使给定的一个3*3的二维整型数组转置,即行列互换

以上是关于编写一个函数,使给定的一个3×3的二维整型数组转置,即行列互换的主要内容,如果未能解决你的问题,请参考以下文章

写一个函数,使给定的一个3X3的二维整型数组转置,即行列互换。

编写一函数,将一个3×3的整型二维数组行列互换

数组的shape属性与矩阵转置的区别在哪里?

C语言中 指针做函数参数传递二维数组

《程序设计基础》实验题目1 二维数组 冒泡排序

二维数组求最大值的问题