該代碼應該接受輸入以形成一個 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
uj5u.com熱心網友回復:
給定行的對角線值在該行完全相乘之前會發生變化,因此一旦該列超過對角線,乘法將使用該對角線的新值而不是舊值。
您可以按如下方式修復它(并提高速度):
for (i = 0; i < R; i ) {
int tmp = a[i][i];
for (j = 0; j < R; j ) {
a[i][j] *= tmp;
}
}
另外,如前所述,i和j都應該是區域變數。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/534625.html
標籤:Cfor循环矩阵
上一篇:我代碼中的串列無法正常作業
