English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

利用迴圈寫出高斯消去但是我ㄉ數值都會出錯請各位高手救救我
請各位高手明天七點以前給我答案唷
#include
#include
#define M 5
int main(void)
{
int i,j,k;
float a[M][M],n,det=1.;
printf("請輸入行列式的元素:\n");
for(i=0;i for(j=0;j {
printf("a[%d][%d]=",i,j);
scanf("%f",&a[i][j]);
}

printf("\n原有的行列式:\n");
for(i=0;i {
for(j=0;j {
printf("%7.2f",a[i][j]);
}
printf("\n");
}

/* 高斯消去法: */
for(i=0;i {
for(k=i+1;k {
n=-a[k][i]/a[i][i];
for(j=0;j {
a[k][j]=a[k][j]+n*a[i][j];
}
printf("\n");
}
}

printf("計算過的行列式:\n");
for(i=0;i {
for(j=0;j {
printf("a[%d][%d]=%7.2f\n",i,j,a[i][j]);
}

}

printf("\n");
for(i=0;i {
for(j=0;j {
printf("%7.2f",a[i][j]);
}
printf("\n");
}

printf("\n行列式的值為對角線相乘:\n");
for(i=0;i {
for(j=0;j {
if(i==j)
det*=a[i][j];
}
}
printf("%d階行列式值=%.2f\n",M,det);
}

2005-06-20 17:31:42 · 4 個解答 · 發問者 ? 2 in 電腦與網際網路 程式設計

4 個解答

我沒有把程式 run 過一遍,不過你的程式的第一個 for loop 好像少了大括號。
你可以試試看把第一個 for loop 的大括號補上,應該就會對了。

2005-06-20 21:16:39 · answer #1 · answered by 澎澎 2 · 0 0

高斯消去法我不懂...所以程式內容上我忘不了忙
如果你說是數值出錯的話這一定是run-time error
可能是變數overflow...試將int, float都轉成double看看

2005-06-25 13:14:30 · answer #2 · answered by Anonymous · 0 0

好像重複到某些數字會亂碼EX:123123123

2005-06-21 02:20:32 · answer #3 · answered by ? 2 · 0 0

能否把你的輸入值和正確答案刊出?

2005-06-21 01:46:08 補充:
澎澎,那個for loop不需要括號. 因為那個for loop要做的只是那個j loop.
撿骨狂人,你的程式看起來沒問題.且我試過3x3的矩陣:
2 -3 5
4 5 7
3 -6 9
得到的答案是正確的
2 -3 5
11 -3
1.09(24/22)

2005-06-21 07:54:50 補充:
能否把你輸入的值刊出來?

2005-06-20 21:00:24 · answer #4 · answered by 7 · 0 0

fedest.com, questions and answers