解题思路:把二维数组转置,也就是把各个元素的列号和行号互换(如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++代码)100以内质数直接打表就好了浏览:1322 |
C语言程序设计教程(第三版)课后习题6.10 (C语言代码)浏览:677 |
C语言训练-排序问题<1> (C++代码)浏览:632 |
C语言训练-计算:t=1-1/(2*2)-1/(3*3)-...-1/(m*m) (C语言代码)浏览:799 |
C语言程序设计教程(第三版)课后习题5.5 (C语言代码)浏览:577 |
WU-输入输出格式练习 (C++代码)浏览:1133 |
WU-拆分位数 (C++代码)浏览:819 |
简单的a+b (C语言代码)浏览:572 |
川哥的吩咐 (C语言代码)浏览:663 |
母牛的故事 (C语言代码)浏览:625 |