我编了一个矩阵求逆函数,试着运行,没有错误,但是黑框里什么都没有,不知道哪里出了问题。
#include<stdio.h>void inverse(int c[6][6]) //矩阵求逆
{
int i, j, h, k;
double p; //定义p作为一个比例系数
double q[6][12];
for (i = 0; i<6; i++) //构建高斯矩阵
for (j = 0; j<6; i++)
q[i][j] = c[i][j];
for (i = 0; i<6; i++)
for (j = 0; j<12; j++)
{
if (i + 6 == j)
q[i][j] = 1;
else
q[i][j] = 0;
}
for (h = k = 0; k<6; k++, h++) //消除对角线以下元素
for (i = k + 1; i<6; i++)
{
if (q[i][h] == 0)
continue;
p = q[k][h] / q[i][h]; //p作为一个比例系数,表示的是同一列相邻两行的数的比值,此处是下一行比上一行
for (j = 0; j <= 12; j++)
{
q[i][j] *= p;
q[i][j] -= q[k][j]; //把第i行第j列的数消为0
}
}
for (h = k = 5; k>0; h--, k--) //消除对角线以上元素
for (i = k - 1; i >= 0; i--)
if (q[i][h] == 0)
continue;
p = q[k][h]/q[i][h]; //p作为一个比例系数,表示的是同一列相邻两行的数的比值,此处是上一行比下一行
for (j = 0; j<12; j++)
{
q[i][j] *= p;
q[i][j] -= q[k][j];
}
for (i = 0; i<6; i++) //把对角线上的元素化为1
{
p = 1.0/q[i][i];
for (j = 0; j<12; j++)
q[i][j] *= p;
}
for (i = 0; i<6; i++) //提取逆矩阵
for (j = 0; j<6; j++)
c[i][j] = q[i][j + 6];
}
void main() //这里我想试着运行一下这个函数可以不可以
{
int i, j;
double a[6][6] = {1,2,1,2,1,2,2,1,1,1,2,2,1,2,2,1,2,1,1,1,1,2,2,2,1,1,1,1,1,1,2,1,1,2,1,1};
inverse(a);
for (i = 0; i<6; i++)
{
for (j = 0; j<6; j++)
printf("%d", a[i][j]);
printf("\n");
}
}
编译和连接都没有错误提示,但是运行时候的黑框框是没有任何结果的,如图: