原题链接:[编程入门]二维数组的转置
解题思路:把二维数组转置,也就是把各个元素的列号和行号互换(如arr[1][2]转置后成为arr[2][1])。
注意事项:
这里不使用新的数组保存转置后的数组,然后再输出。但在函数中转置输出的数组并不改变原数组(因为没有用指针)。
数组作为函数参数时传递数组名即可(不用写change(arr[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 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复