解题思路:声明两个数组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分
44 人评分
#include<stdio.h> int main() { int i,j; int x[3][3]; for(i=0;i<=2;i++) { for(j=0;j<=2;j++) { scanf("%d",&x[i][j]); } } for(i=0;i<=2;i++) { for(j=0;j<=2;j++) { printf("%d ",x[j][i]); } printf("\n"); } return 0; }
#include <stdio.h> int main() { int a[3][3]; int i,j; for(i=0;i<3;i++) { for(j=0;j<3;j++) { scanf("%d",&a[i][j]); } } for(i=0;i<3;i++) { for(j=0;j<3;j++) { printf("%d",a[j][i]); } printf("\n"); } return 0; }
小辣鸡 2023-11-30 14:50:21 |
你这个过了???
黄佳豪070 2023-12-05 18:42:23 |
#include <stdio.h> #define SIZE 3 void transpose(int arr[SIZE][SIZE]) { int i, j; int temp; for (i = 0; i < SIZE; i++) { for (j = i+1; j < SIZE; j++) { temp = arr[i][j]; arr[i][j] = arr[j][i]; arr[j][i] = temp; } } } int main() { int arr[SIZE][SIZE] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; int i, j; printf("Original array: "); for (i = 0; i < SIZE; i++) { for (j = 0; j < SIZE; j++) { printf("%d ", arr[i][j]); } printf(" "); } transpose(arr); printf("Transposed array: "); for (i = 0; i < SIZE; i++) { for (j = 0; j < SIZE; j++) { printf("%d ", arr[i][j]); } printf(" "); } return 0; }
黄小橘 2024-01-11 17:55:13 |
@dotcpp0702480 我没试没到2级不让测试
#include<stdio.h> int main() { int array[3][3]; int i, j; for(i=0; i<3; i++) for(j=0; j<3; j++) scanf("%d", &array[i][j]); int temp; for(i=0; i<3; i++) for(j=i+1; j<3; j++) { temp = array[i][j]; array[i][j] = array[j][i]; array[j][i] = temp; } for(i=0; i<3; i++) { for(j=0; j<3; j++) printf("%d ", array[i][j]); printf("\n"); } return 0; }
#include<stdio.h> int main() { int arr[3][3],i,j; for(i=0; i<=2; i++){ for(j=0; j<=2; j++){ scanf("%d",&arr[i][j]); } } for(i=0; i<=2; i++){ for(j=0; j<=2; j++){ printf("%d ",arr[j][i]); } printf("\n"); } return 0; }
#include<stdio.h> int main() { int i, j; char a[3][3]; char b[3][3]; for (i = 0;i < 3;i++) { for (j = 0;j < 3;j++) { scanf("%d", &a[i][j]); } } for (i = 0;i < 3;i++) { for (j = 0;j < 3;j++) { b[i][j] = a[j][i]; printf("%d ", b[i][j]); } printf("\n"); } return 0; } 大佬们 这个 为什么报错 Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted. 上网搜了一下说是越界了,但是我看不出来哪里越界了
void TransposeArray(int buff[][3]) { for(int i = 0;i < 3;i++) { for(int j = 0; j < 3;j++) { if(j > i) { int temp = buff[i][j]; buff[i][j] = buff[j][i]; buff[j][i] = temp; } } } for(int i = 0;i < 3;i++) { for(int j = 0; j < 3;j++) { printf("%d " , buff[i][j]); } printf("\n"); } }
#include <stdio.h> int main() { int syx[3][3]; int i,j; for(i=0;i<3;i++) { for(j=0;j<3;j++) { scanf("%d",&syx[i][j]); } } for(i=0;i<3;i++) { for(j=0;j<3;j++) { printf("%d ",syx[j][i]); } printf("\n"); } return 0; }
#include<stdio.h> int main(){ int a[3][3],b[3][3],i,j; for(i=0;i<3;i++){ for(j=0;j<3;j++){ scanf("%d",&a[i][j]); } } for(i=0;i<3;i++){ for(j=0;j<3;j++){ b[j][i]=a[i][j]; } } for(j=0;j<3;j++){ for(i=0;i<3;i++){ printf("%d\t",b[j][i]); } printf("\n"); } return 0; }
简单的a+b (C语言代码)浏览:765 |
简单的a+b (C语言代码)浏览:564 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:632 |
WU-小九九 (C++代码)浏览:1713 |
C语言程序设计教程(第三版)课后习题6.8 (C++代码)浏览:614 |
【计算两点间的距离】 (C语言代码)浏览:1522 |
1157题解浏览:769 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:1100 |
核桃的数量 (C语言代码)浏览:893 |
1035 题解浏览:875 |