用高斯消去法求解线性方程组,代码运行不出来,请问要怎么改
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define N 10
int main(int argc, char* argv[])
{
int n = atoi(argv[1]);
double x[N] = { 0 };
int i, j, k;
double equs[N][N] = { {1,2,6,3,5,23,14,6,21,14},
{2,8,6,10,21,3,14,21,15,23},
{6,6,9,21,14,23,6,54,1,14},
{21,1,2,32,2,36,21,4,2,15},
{2,23,54,3,32,11,12,1,44,1},
{21,12,14,1,23,24,14,21,12,11},
{1,24,3,36,6,21,4,5,12,21},
{21,41,45,12,32,21,41,12,4,6},
{6,12,32,21,14,21,4,5,6,21},
{21,12,41,8,18,32,16,14,7,17}
};
double B[N] = { 2,4,6,2,41,21,21,4,6,27 };
for (k = 0; k < n; k++) {
for (i = k + 1; i < n; i++) {
double f = equs[i][k] / equs[k][k];
for (j = k + 1; j < n; j++) {
equs[i][j] = equs[i][j] - f * equs[k][j];
}
B[i] = B[i] - f * B[k];
}
}
x[n - 1] = B[n - 1] / equs[n - 1][n - 1];
for (k = n - 2; k >= 0; k--) {
double sum = B[k];
for (j = k + 1; j < n; j++) {
sum = sum - equs[k][j] * x[j];
}
x[k] = sum / equs[k][k];
}
printf("x=");
for (i = 0; i < n; i++) {
printf("%f ", x[i]);
}
return 0;
}
我试了以下可以,你是 argv[1] 没有输入
崩了吗?
或者你可以试试用 scanf
int n;
printf("输入 n:");
scanf("%d", &n);
不知道你这个问题是否已经解决, 如果还没有解决的话:1.程序必须载入内存中。在有操作系统的环境中,载入由操作系统完成。在独立的环境中,载入到内存必须由手工安排。
2.程序的执行开始。调用main函数。
3.开始执行代码。这个时候程序将使用一个运行时堆栈,存储函数的局部变量和返回地址。同时也就可以使用静态内存。
4.终止程序。正常终止main,也可能是异常终止。