解题思路:声明两个数组a[3][3],b[3][3],后者存放转置后的元素。先用for循环嵌套输入a数组元素,接着(关键点)是转置:我们把二维数组看成矩阵,或者说坐标系,这样就很容易想到,行列互换就是横纵坐标对应的元素互换。用代码描述就是b[j][i]=a[i][j]。最后输出b数组就行了。
注意事项:输出b数组时不能把for循环嵌套这部分放到main函数中,不然会输出9个奇怪的数。因为,b数组作用域在自定义函数内。
还有,自定义函数中不要对数组a再定义,否则会重定义;也不要把数组b放到main函数中,不然自定义函数缺少数组b的声明。
参考代码:
#include<stdio.h> void zhuanzhi(int a[3][3]) { int b[3][3]; int i,j; //转置 for(i=0; i<3; i++) { for(j=0; j<3; ++j) { b[j][i]=a[i][j]; } } //输出 for(i=0; i<3; i++) { for(j=0; j<3; j++) { printf("%d ", b[i][j]); } printf("\n"); } } int main() { int i,j; int a[3][3]; //输入 for(i=0; i<3; i++) { for(j=0; j<3; ++j) { scanf("%d", &a[i][j]); } } zhuanzhi(a); return 0; }
0.0分
40 人评分
#include<stdio.h> #define a 3 #define b 3 int main() { void transform(int array[a][b]){ for(int i=0;i<a;i++){ for(int j=0;j<b;j++){ printf("%d ",array[j][i]); } printf("\n"); } } int array[a][b]; for(int i=0;i<a;i++){ for(int j=0;j<b;j++){ scanf("%d ",&array[i][j]); } } transform(array); return 0; }
为什么要声明两个数组,只声名一个a【3】【3】,输入a[i][j],打印a[j][i]不就可以了吗
呵呵 2021-09-29 19:35:05 |
我这么搞的最后出来了一堆很奇怪的数字,但是不知道原因是什么
superks 2021-10-24 20:43:13 |
他要函数啊
冰雹追不上的男人 2021-12-31 09:52:13 |
#include<stdio.h> int main() { int a[3][3]; for(int i=0;i<3;i++) { for(int j=0;j<3;j++) { scanf("%d",&a[i][j]); } } for(int i=0;i<3;i++) { for(int j=0;j<3;j++) { int temp=i; i=j; j=temp; printf("%d",a[i][j]); } printf(" "); } return 0; }
冰雹追不上的男人 2021-12-31 09:54:35 |
这个为啥不行
这个·直接在自定义函数里面打印a[j][i]可以么,我写的话说格式不对
为什么我定义数组a[2][2]就不行,我用的方法和楼主的一样,我调试的时候,每次一到每行最后一个时,那个数都会自动加一,就是3会变成4储存,6会变成7储存,9会变成10储存,其他的又没变
【蟠桃记】 (C语言代码)浏览:2222 |
2006年春浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:819 |
C语言程序设计教程(第三版)课后习题6.11 (C语言代码)for循环浏览:1126 |
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:554 |
C语言程序设计教程(第三版)课后习题7.1 (C语言代码)浏览:1229 |
C语言训练-尼科彻斯定理 (C语言代码)浏览:469 |
WU-蓝桥杯算法提高VIP-企业奖金发放 (C++代码)浏览:1175 |
Hello, world! (C++代码)浏览:1744 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:531 |
【偶数求和】 (C语言代码)浏览:431 |