因此,我有一些我無法解決的課堂工作。我可以讓代碼部分工作,但現在它只是沒用。它要麼凍結(沒有完成運行),要麼會在第一行給我幾個inf。高斯 - 喬丹消除在C
#include <stdio.h>
#include <math.h>
int main()
{
double a[10][11]={
{3.55618, 5.87317, 7.84934, 5.6951, 3.84642, 9.15038, -1.68539, 5.03067, 7.63384, -1.75626, -1.92193},
{-4.82893, 8.38177, -0.301221, 5.10182, -4.1169,-6.09145, -3.95675, -2.33365, 1.3969, 6.54555, -2.35262},
{-7.64196, 5.66605, 3.20481, 1.55619, -1.19814, 9.79288, 5.35547, 5.86109, 4.95544, -9.35749, 2.27709},
{-2.95914, -9.16958, 7.3216, 2.39876, -8.1302, -7.55135, -2.37718, 7.29694, 5.9867, 8.5401, -2.67493},
{-8.42043, -0.369407, -5.4102, -8.00545, 9.22153, 3.96454, 5.38499, 0.438365, 0.419677, 4.17166, 1.84756},
{6.02952, 4.57728, 5.46424, 3.52915, -1.01135, -3.74686, 8.14264, -8.86961, -2.88114, 1.29821, 4.154126},
{0.519819, -6.16655, 1.13216, 2.75811, -1.05975, 4.20286, -3.45764, 0.763558, -0.281287, -9.76168, -.93387},
{5.15737, -9.67481, 9.29904, -3.93334, 9.12785, -4.25208, -6.1652, 2.5375, 0.139195, 2.00106, -1.28356},
{-4.30784, 1.40711, -6.97966, -9.29715, 5.17234, 2.42634, 1.88818, -2.05526, -3.7679, 3.3708, -3.46841},
{-4.65418, 7.18118, 6.51338, 3.13249, 0.188456, -16.85599, 7.21435, -2.93417, 1.06061, 1.10807, -2.61529}};
int i, j, k, l;
double b[10][11];
i=0;
while(i<10)
{
j=0;
l=i;
while(l<10)
{
j=0;
l++;
while(j<11)
{
下面的代碼工作正常。當單獨使用,它會變成所有的對角線值到1
b[i][j]=a[i][j]/a[i][i];
此代碼下面用來部分工作,設置的第一列等於0,但現在它是無用的。我試圖通過將0作爲k,並在while代碼中使用k ++來操縱它,以避免所有值,但如果我將它放在i ++中,它將返回分段代碼;或總線錯誤被放置在第j = 0的前面,和它只是凍結程序,如果我置於i。在0。現在它是無用的,我恢復爲默認
b[l][j]=a[l][j]-b[i][j]*a[l][0];
j++;
}
}
i++;
}
j=0;
i=0;
while(i<10)
{
while(j<11)
{
printf("%lf\t", b[i][j]);
j++;
}
printf("\n");
i++;
j=0;
}
return 0;
}
如何我在我的C程序中解決所有這些問題?
你已經將你的代碼劃分到了多個框中,這使得很難看到它們如何組合在一起。除此之外,我給你提供了「調試器中的單步執行,並查看它橫向的位置。」標準回答「爲什麼它不起作用?」 –
爲了保持智力完整性,我建議用for()'循環替換所有'while()'循環。這不僅會提高可讀性,還會減少出錯的機率。 – wildplasser