【发布时间】:2021-11-25 22:19:59
【问题描述】:
基本上,我已经编写了一些代码来转置一个矩阵,并且对于某些输入它可以工作,对于某些它不能,我不知道我在哪里犯了错误。
这是代码
#include <stdio.h>
int main() {
int WIDTH, HEIGHT, i, j;
int matrix[100][100];
do {
printf("Enter height and width: ");
scanf("%d %d", &HEIGHT, &WIDTH);
if ((WIDTH > 100 || HEIGHT > 100) || (WIDTH < 1) || (HEIGHT < 1))
printf("Dimensions incorrect!\n");
else
break;
} while (1);
int vel = WIDTH * HEIGHT;
printf("Enter elements: ");
for (i = 0; i < HEIGHT; i++)
for (j = 0; j < WIDTH; j++)
scanf("%d", &matrix[i][j]);
int temp;
for (i = 0; i < HEIGHT; i++) {
for (j = i; j < WIDTH; j++) {
temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
printf("Transposed matrix: \n");
for (i = 0; i < WIDTH; i++) {
for (j = 0; j < HEIGHT; j++)
printf("%5d", matrix[i][j]);
printf("\n");
}
return 0;
}
我对维度 3 2,元素 {1,2,3,4,5,6} 的输出:(示例 1)
1 3 0
2 4 0
想要的输出:(示例 1)
1 3 5
2 4 6
我对维度 5 1、元素 {1,2,3,4,5} 的输出: (示例 2)
1 0 0 0 0
想要的输出:(示例 2)
1 2 3 4 5
【问题讨论】: