C语言 计算行列式

如何用C语言编一个能计算行列式的程序,代码怎么写?... 如何用C语言编一个能计算行列式的程序,代码怎么写? 展开
 我来答
团长你好吗
推荐于2017-09-27 · TA获得超过597个赞
知道小有建树答主
回答量:422
采纳率:20%
帮助的人:128万
展开全部
#include <stdio.h>
#include <stdlib.h>
void fun3(float *,int);
float fun4(float *,int);
void main()
{
int i,j,n;
float *a,answer;
for(i=0;i<3;i++)
printf("<----------------------------------------------------------------------------->\n");
printf(" 欢迎进入*雒森*行列式计算程序,请准确输入以便我为您正确计算! \n");
for(i=0;i<3;i++)
printf("<----------------------------------------------------------------------------->\n");
do
{
printf("请输入您要计算的行列式的行数或列数n(n>1):");
scanf("%d",&n);
}while(n<2);
a=(float *)malloc(n*n*sizeof(float));
for(i=0;i<n;i++)
{
printf("请输入您要计算的行列式的:\n");
for(j=0;j<n;j++)
{
printf("第%d行%d列:",i+1,j+1);
scanf("%f",&a[i*n+j]);
}
}
fun3(a,n);
answer=fun4(a,n);
printf("您要计算的行列式的值为:%.3f\n\n\n",answer);
for(i=0;i<3;i++)
printf("<----------------------------------------------------------------------------->\n");
printf(" 欢迎进入*雒森*行列式计算程序,请准确输入以便我为您正确计算! \n");
for(i=0;i<3;i++)
printf("<----------------------------------------------------------------------------->\n");
}
void fun3(float a[],int n)
{
int i,j,d,f;
float m=1,w;
for(j=0;j<n;j++)
{
for(i=0;i<n;i++)
{
if(a[j*n+j]==0)
{
for(d=j+1;d<n;d++)
{
if(a[d*n+j]!=0)
break;
}
for(f=j;f<n;f++)
a[j*n+f]+=a[d*n+f]*m;
}
if(i!=j)
{
w=-(a[i*n+j]/a[j*n+j]);
for(f=j;f<n;f++)
a[i*n+f]+=a[j*n+f]*w;
}
}
}
}
float fun4(float a[],int n)
{
int i;
float answer=1;
for(i=0;i<n;i++)
answer*=a[i*n+i];
return answer;
}
Jack5s
2014-05-24 · TA获得超过349个赞
知道小有建树答主
回答量:306
采纳率:0%
帮助的人:234万
展开全部
/*用递推法求行列式的值*/
#include<stdio.h>
#include<math.h>
#define N 2/*N为行列式行数或列数*/
int det(int a[][N],int);
void yvzishi(int a[][N],int _i,int _j,int b[][N],int n);
void main()
{
int a[N][N],i,j,s;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
scanf("%d",&a[i][j]);
s=det(a,N);
printf("%d\n",s);
}
int det(int a[][N],int n)
{
int t,b[N][N],i,j;/*b[][]存放余子式*/
int s=0;
if(n==1)return a[0][0];
if(n>=2)
for(t=0;t<n;t++)
{
yvzishi(a,0,t,b,n);
s+=a[0][t]*(int)pow(-1,t)*det(b,n-1);
}
return s;
}
void yvzishi(int a[][N],int _i,int _j,int b[][N],int n)
{
int i,j,ib,jb;
for(i=0,ib=0;i<n;i++,ib++)
{
if(i==_i)i++;
for(j=0,jb=0;j<n;j++,jb++)
{
if(j==_j)j++;
b[ib][jb]=a[i][j];
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
图丁丁
2008-03-11 · 超过32用户采纳过TA的回答
知道答主
回答量:79
采纳率:0%
帮助的人:0
展开全部
# include <stdio.h>
# define N 2 /*用N表示行列式的行列数*/
main()
{
int i,j,k=0,m,n;
float a[N][N],sum=1;
printf("Please input the rang:\n");
for(i=0;i<N;i++)
for(j=0;j<N;j++)
scanf("%d",&a[i][j]);

for(i=k;i<N;i++)
for(j=k;k<N;j++)
{
for(m=k+1;m<N;m++)
for(n=k;n<N;n++)
a[m][n]=a[m][n]-a[m-1][n]*a[k+1][k]/a[k][k];
}

for(i=0;i<N;i++)
sum=sum*a[i][i];
printf("The product is: %d\n",sum);
getch();
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友13880d5
2021-09-15
知道答主
回答量:1
采纳率:0%
帮助的人:445
展开全部
#include <stdio.h>
#include<malloc.h>
#include<stdlib.h>
int main()
{
int n,i,j,k;
float sum=1,y;
int x;
float **array;
printf("请输入行列式的阶数\n");
scanf("%d",&n);
//******************************//
array=(float**)malloc(n*sizeof(float*));//先创建一维
for(i=0;i<n;i++)
array[i]=(float*)malloc(n*sizeof(float));//再创建二维
//******************************//动态创建二维指针
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%f",&array[i][j]);//输入行列式的元素
//******************************//
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
{
if(array[i][i]==0)
{
for(k=i+1;k<n;k++)
if(array[k][i]!=0)
break;
if(k==n)
{
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%5.2f ",array[i][j]);
printf("\n");
}
printf("0\n");
exit(0);
}
else
{
for(x=0;x<n;x++)
array[i][x]+=array[k][x];
j--;
continue;
}
}
else
{
y=array[j][i]/array[i][i];
for(x=0;x<n;x++)
array[j][x]-=y*array[i][x];
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%5.2f ",array[i][j]);
printf("\n");
}
for(i=0;i<n;i++)
sum*=array[i][i];
printf("%.2f\n",sum);
//******************************//
for(i=0;i<n;i++)
free(array[i]);//释放第二维指针
free(array);//释放第一维指针
//******************************//释放二维指针
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友801b91b
2008-03-11 · TA获得超过8071个赞
知道大有可为答主
回答量:1152
采纳率:100%
帮助的人:1680万
展开全部
用数组呀
你没感觉数组和行列式形式上一样吗?

兴起个例子吧:
main()
{
int a[3][3]={{3,4,5},{3,4,5},{3,4,5}};
int F;
F=a[0][0]*a[1][1]*a[2][2]+a[0][1]*a[1][2]*a[0][2]+a[0][2]*a[1][0]*a[2][1]-a[0][0]*a[1][2]*a[2][1]-a[0][1]*a[1][0]*a[2][2]-a[0][2]*a[1][1]*a[2][0];
prinft("%d",F);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式