这个代码应该接受输入,形成一个3x3矩阵,然后把每一项乘以该行的对角线元素,但是,由于某种原因,我不知道,当列索引大于行索引时,它乘以对角线元素两次。
#include <stdio.h>
#define R 3
int a[R][R], i, j;
int main(void) {
for (i = 0; i < R; i++) {
for (j = 0; j < R; j++) {
printf("\nInsira o n%i%i ", i, j);
scanf("%i", &a[i][j]);
}
}
for (i = 0; i < R; i++) {
for (j = 0; j < R; j++) {
a[i][j] = a[i][j] * a[i][i];
}
}
for (i = 0; i < R; i++) {
printf("\n");
for (j = 0; j < R; j++) {
printf("%i ", a[i][j]);
}
}
}
输入:
9 8 7
6 5 4
3 2 1
输出:
81 648 567
30 25 100
3 2 1
1条答案
按热度按时间tjvv9vkg1#
给定行的对角线值在该行完全相乘之前被更改,因此一旦列经过对角线,相乘将使用该对角线的 * 新 * 值,而不是旧值。
您可以按如下方式修复它(并提高速度):
此外,如前所述,
i
和j
都应该是局部变量。