夕霆


私信TA

用户名:dotcpp0641811

访问量:150

签 名:

等  级
排  名 36397
经  验 420
参赛次数 0
文章发表 4
年  龄 0
在职情况 学生
学  校 华北电力大学
专  业

  自我简介:

解题思路:把二维数组转置,也就是把各个元素的列号和行号互换(如arr[1][2]转置后成为arr[2][1])。


注意事项:

  1. 这里不使用新的数组保存转置后的数组,然后再输出。但在函数中转置输出的数组并不改变原数组(因为没有用指针)。

  2. 数组作为函数参数时传递数组名即可(不用写change(arr[3][3])),数组长度可以另外作为参数传给函数。

  3. 代码中的  if(i<=j)  比较关键,这个条件使函数通过遍历上三角来转置矩阵。可以试试在该代码中去掉  if(i<=j)  ,那样有些元素会被转置两次(也就是没变),而导致输出错误。

    参考代码:

#define _CRT_SECURE_NO_WARNINGS 1	/*使VS可以用scanf而不是scanf_s*/
#include<stdio.h>
void change(int arr[3][3]);
int main()
{
	int arr[3][3], i, j;
	for (i = 0; i < 3; i++)
		for (j = 0; j < 3; j++)
			scanf("%d", &arr[i][j]);
	change(arr);
}
void change(int arr[3][3])
{
	int i, j, t;
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 3; j++)
		{
			if (i <= j)
			{
				t = arr[i][j];
				arr[i][j] = arr[j][i];
				arr[j][i] = t;
			}
			printf("%d ", arr[i][j]);
		}
		printf("\n");
	}
}


 

0.0分

0 人评分

  评论区

  • «
  • »