gpt4 book ai didi

c - 矩阵有什么问题?

转载 作者:太空宇宙 更新时间:2023-11-04 06:53:56 24 4
gpt4 key购买 nike

这段代码有什么问题?我的任务是:创建一个大小为 9x9 的整数方阵。用随机数填充矩阵。相对于垂直轴对称显示主对角线和侧对角线。预期结果的例子在这里:matrix

Matrix :

20 20 76 65 93 76 16 2 85

6 87 78 43 48 81 71 90 38

10 12 35 77 48 88 24 53 7

12 66 51 35 74 7 30 22 49

58 14 71 46 68 68 10 81 51

98 16 74 47 64 25 17 30 37

2 44 44 74 34 54 86 73 28

85 4 57 75 18 28 51 76 2

35 17 53 76 15 91 83 85 72

The main and side diagonal:

85 20 76 65 93 76 16 2 20

6 90 78 43 48 81 71 87 38

10 12 24 77 48 88 35 53 7

12 66 51 7 74 35 30 22 49

58 14 71 46 68 68 10 81 51

98 16 74 25 64 47 17 30 37

2 44 86 74 34 54 44 73 28

85 76 57 75 18 29 51 4 2

72 17 53 76 15 91 83 85 35

但实际上程序只打印带有随机数的主矩阵,然后停止。

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <Windows.h>
int main()
{
int a = 9;
int matrix[a][a];
int temp;
int i, j, n;
srand((unsigned)time(NULL));

printf("Matrix : \n\n");
for (i = 0; i < a; ++i) {
for (j = 0; j < a; ++j) {
matrix[i][j] = rand() % 100;
printf("%d\t", matrix[i][j]);
}
printf("\n\n");
}
printf("The main and side diagonal:\n\n");
for (i = 0; i < a; ++i) {
temp = matrix[i][i];
matrix[i][i] = matrix[i][(a - 1) - i];
matrix[i][(a - 1) - i] = temp;
}
for (i = 0; i < a; ++i) {
for (j = 0; j < a; ++j) {
printf("Result:", matrix[i][j]);
printf("\n\n\n");
system("pause");
return 0;
}
}
}

最佳答案

你回到了你不应该去的地方。 (在计算的中间)。您应该在完成 for 循环后返回。

for (i = 0; i < a; ++i) {
for (j = 0; j < a; ++j) {
printf("Result:", matrix[i][j]); <--- Not printing element
printf("\n\n\n");
system("pause");
return 0; <-----
}
}

应该是

for (i = 0; i < a; ++i) {
for (j = 0; j < a; ++j) {
printf("Result: %d ", matrix[i][j]); <----You forgot the
//format specifier
printf("\n\n\n");
system("pause");

}
}
return 0;<-----

这样的缩进会影响可读性。你从中实现了错误的逻辑。


  • OP 要求它在打印“结果”后停止,这是因为您忘记将格式说明符放入代码中。这就是没有打印任何元素的原因。

Op 想要打印相对于垂直轴对称的主对角线和侧对角线

现在这就是打印部分的全部内容。

现在我们必须找到一种方法来区分哪些是对角线元素,哪些不是。

令人惊讶的是,编写先前交换逻辑的人应该知道答案。 (虽然不清楚为什么 OP 交换了它)。

如果 p=qp+q=a-1,现在所有元素 matrix[p][q] 都将来自任一对角线>。 (注意 matrix 是一个方阵)。


但是OP的意思是打印矩阵


for (i = 0; i < a; ++i) {
if( i == 0) printf("The main and side diagonal : \n");
for (j = 0; j < a; ++j) {
printf("%d\t", matrix[i][j]);
}
printf("\n");
}
}

关于c - 矩阵有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47458389/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com