1、判定方阵的正定与负定在 C 语言中写法#include#includeint input(int n);float count(int n,float a9999);main()int i,j,m,h,k,l,n=0;float x,a9999=0;printf(“这是一个判定方阵(100 以内包括 100)的正定与负定的程序:n“);while(1) /*实现多次运算*/n=input(n); /*输入方阵阶数*/for(i=0;i=0)i+;elsej+;elseif(x=0)h+;elsek+;if(x=0) /*m 确定各阶顺序主子式为零的次数*/m+;printf(“方阵的%d 阶顺
2、序主子式值为:%.2fn“,l+1,x);if(n%2=0) /*矩阵为偶数阶时*/if(i=n/2else if(j=0else if(i=n/2elseprintf(“该方阵为不定矩阵“);else /*矩阵为奇数阶时*/if(i=(n-1)/2else if(j=0else if(i=(n-1)/2elseprintf(“该方阵为不定矩阵“);printf(“nnn“);return 0;int input(int n)int i;printf(“请输入方阵阶数:“);scanf(“%d“,if(i100) /*确保方阵阶数输入正确*/printf(“输入错误,请重新输入!nn“);i=
3、input(i);return i;float count(int n,float a9999)float b9999,sum =0; /*定义数组 b 并初始化*/int i=0,j=0; /*i,j 为行与列,sum 为行列式的值*/int x=0,c=0,p=0; /*用 x 判断加与减,c,p 为中间变量*/if(n=1)return a00;for(i=0;in;i+) /*此处大循环实现将余子式存入数组 b 中*/for(c=0;cn-1;c+)for(j=0;jn-1;j+)if(ci) /*借助 c 判断每行的移动方法*/p=0; /*当 p=0 时,行列式只向左移,即消去对应的第一列的数*/else /*否则行列式左移后再上移*/p=1;bcj=ac+pj+1;if(i%2=0) /*i+j(此时 j=0,故只考虑 i)为偶数,加法预算*/x=1;else /*i+j 为奇数,减法运算*/x=(-1);sum+=ai0*count(n-1,b)*x; /*计算行列式的值*/return sum; /*将值返回*/运行时的简单结果