0 0

c程序求行列式的值的问题?5

#include <stdio.h>
#include <math.h>
#include <stdlib.h>

/*a为行列式,n为行列式的阶*/
int f(int **a,int n)
{
	int i,j,k;
	int len;/*子行列式的阶*/
	int s=0;

	len = n-1;

	/*按照定义,初始化一个子行列式数组的空间*/
	int **p = (int **)malloc(sizeof(int *)*len);
	for(i=0;i<len;i++)
		*(p+i) = (int *)malloc(len);
	
	/*阶为2,按照定义计算*/
	if( 2==n ) 
		return a[0][0]*a[1][1]-a[1][0]*a[0][1];

	for( k=0; k<n; k++)
	{
		for(i=0;i<len;i++)
			for(j=0;j<len;j++)
			{
				if(i<k)
					*(*(p+i)+j) = a[k][j+1];/*初始化子行列式的值*/
				if(i>k)
					*(*(p+i)+j) = a[k+1][j+1];
			}
		s += (int)pow(-1,i+j) * f(p,len);/*递归计算*/
	}

	free(p);
	return s;
}

void main()
{
	int a[3][3] = {1,2,4,5,7,9,12,11,8};
	int **p = a;
	printf("%d",f(p,3));
}

思路很清楚,就是按照定义求值,但调试总是出错,请大家指点下
问题补充:
一楼的童鞋,这里是二维数组,我想要体现维度
问题补充:
主要是要调试成功,并且有结果
C 
2009年10月24日 16:31

2个答案 按时间排序 按投票排序

0 0

采纳的答案

自己看吧:

#include <stdio.h>
#include <math.h>
#include <stdlib.h>

/*a为行列式,n为行列式的阶*/
int f(int **a,int n)
{
	int i,j,k;
	int len;/*子行列式的阶*/
	int s=0;

	len = n-1;

	/*按照定义,初始化一个子行列式数组的空间*/
	int **p = (int **)malloc(sizeof(int *)*len);
	for(i=0;i<len;i++)
		p[i] = (int *)malloc(sizeof(int)*len);
	
	/*阶为1,按照定义计算*/
	if( 1==n ) 
		return a[0][0];

	for( k=0; k<n; k++)
	{
		for(i=0;i<len;i++)
			for(j=0;j<len;j++)
			{
				if(i<k)
					p[i][j] = a[i][j+1];/*初始化子行列式的值*/
				if(i>=k)
				    p[i][j] = a[i+1][j+1];
			}
		s += (int)pow(-1,k) * a[k][0]* f(p,len);/*递归计算*/
	}
    for(i=0;i<len;i++) free(*(p+i));
	free(p);
	return s;
}

int main()
{
    int i;
	int a[3][3] = {1,2,4,5,7,9,12,11,8};
	int **p = (int **)malloc(sizeof(int *)*3);
    for(i=0;i<3;i++) p[i] = a[i];
	printf("%d",f(p,3));
    free(p);
}

2009年10月26日 16:27
0 0

第十五行:

int **p = (int **)malloc(sizeof(int *)*len*len);   


这样可以吗?

2009年10月24日 22:57

相关推荐

    C语言编写的求行列式程序

    本文将深入探讨一个由C语言编写的求解行列式值的程序,该程序不仅体现了C语言的强大功能,还展示了如何通过递归算法计算行列式的值。 ### 行列式的概念与重要性 行列式是线性代数中的一个重要概念,它是一种特殊的...

    JAVA编写n阶行列式求值程序

    首先,该程序定义了一个名为`hanglieshi`的类,其中包含了一个名为`HLS`的方法用于计算行列式的值。该方法接收一个二维整型数组作为参数,表示行列式的各个元素。 ```java public class hanglieshi { public int ...

    用C#求行列式的值的程序源代码

    ### C#程序实现任意行列式的值的计算 #### 一、程序概述 本文将详细介绍一个使用C#编写的控制台应用程序,该程序能够计算任意大小的行列式的值。行列式在数学领域有着广泛的应用,特别是在线性代数中。通过本程序...

    C语言计算行列式 4 段程序

    本资源提供了四种不同的C语言程序,用于计算行列式的值。这些程序都使用了高斯消元法来计算行列式,但是在消元之前,先把绝对值最大的元素进行适当的位置调整。 程序1: 第一个程序使用了数学库中的fabs函数来计算...

    VB行列式计算器,可以计算行列式的值经典算法

    行列式是线性代数中的一个基本概念,它在矩阵理论、方程组求解、特征值问题等领域有着广泛的应用。VB(Visual Basic)是一种面向对象的编程语言,由微软公司开发,它提供了友好的图形用户界面(GUI)设计工具和强大...

    行列式按键扫描程序(汇编)

    ### 行列式按键扫描程序(汇编) #### 关键知识点概述 在计算机硬件与软件交互领域,按键扫描是实现用户输入的关键技术之一。对于资源有限的系统,如早期的微处理器,采用行列式按键扫描可以高效地检测多个按键...

    任意阶数矩阵递归求求行列式

    本篇文章将详细讲解如何使用C/C++编程语言,通过递归算法来求解任意阶数矩阵的行列式,并提供一个简单的程序示例。 行列式是一个在数学中用于表示矩阵特性的数值,它具有很多有用的性质,如能够判断矩阵是否可逆,...

    用高斯列主元消去法求行列式的值

    本项目涉及的是在Linux环境下,通过编程实现高斯列主元消去法来求解行列式的值。这是一种经典的数值计算方法,常用于解决线性方程组和计算矩阵的行列式。 高斯列主元消去法是一种逐步将系数矩阵转化为上三角形或下...

    N阶行列式计算器(附源程序)

    行列式是线性代数中的一个基本概念,它在解决线性方程组、确定矩阵的逆、计算特征值和特征向量等问题中扮演着重要角色。VB(Visual Basic)是一种常用的编程语言,用于开发图形用户界面(GUI)应用程序。本项目是一...

    线性代数行列式求值实现源码

    行列式是衡量一个方阵性质的关键指标,它在解线性方程组、判断矩阵可逆性以及计算矩阵特征值等方面扮演着至关重要的角色。对于一个\(n \times n\)的方阵\(A\),其行列式\(\det(A)\)的值可以揭示矩阵的几何意义和代数...

    C语言求行列式的逆 子程序

    最后,`main`函数中计算了矩阵a的行列式值(determinant,记为y),如果行列式值为0,则矩阵没有逆,因为非奇异矩阵的行列式必须不为零。如果行列式存在,那么可以通过将矩阵b除以行列式值得到逆矩阵,并输出结果。 ...

    C++编写一个只含正数的行列式程序

    行列式(Determinant)是一个重要的数学概念,通常用于线性代数领域,它对于解决线性方程组、求解特征值问题等具有重要意义。行列式的计算方法有很多种,其中一种常用的方法是通过高斯消元法将原矩阵转换为上三角...

    行列式计算程序 c语言 code:block通过

    行列式计算程序是计算机科学中一个基础且重要的概念,它主要应用于线性代数领域。...实际编写代码时,你可能会遇到各种问题,但通过不断学习和实践,你将能够掌握这些技能并成功编写出一个完整的行列式计算程序。

    行列式计算&求逆矩阵

    行列式是一个标量值,用于表示矩阵的特定特性。对于一个n阶方阵A,其行列式记为det(A)或|A|,它是通过一系列加减乘法操作计算得到的。行列式的计算通常采用拉普拉斯展开或 cofactor 扩展的方法。在Visual C# 2010 ...

    计算N阶行列式的若干方法

    这种方法可以将某些问题转换为已知的行列式类型,便于求解。 8. **数学归纳法**: 对于与阶数有关的行列式,可以使用数学归纳法证明。首先验证基础情况,即n=2的情况,然后假设n=k时的结论成立,推导n=k+1时的情况...

    线性代数 工具包求逆矩阵 求行列式的值

    在这个场景中,我们关注的是利用线性代数工具包来求解逆矩阵和计算行列式的值,这些都是线性代数中的核心概念。 首先,让我们详细了解一下行列式。行列式是一个与方阵相关联的标量值,对于一个n阶方阵A,其行列式记...

    VB编写行列式的计算

    4. **结果展示**:计算完成后,将行列式的值显示在一个Label或者新的TextBox中。 5. **错误处理**:考虑用户可能输入非数字字符或非方阵的情况,需要添加适当的错误检查和处理机制,如提示用户输入有效数据。 在...

    行列式计算 C++实现

    行列式是线性代数中的一个基本概念,它在解决线性方程组、研究矩阵性质、计算几何等问题中起到至关重要的作用。本教程将详细阐述如何使用C++编程语言来实现行列式的计算,尤其强调如何处理分数形式的输出。 首先,...

    hanglieshi.rar_hanglieshi_行列式_行列式计算

    标题“hanglieshi.rar_hanglieshi_行列式_行列式计算”暗示我们讨论的是一个与行列式计算相关的资源包,可能包含一个软件或程序,用于快速、直接地计算行列式的值。这种工具对于处理大型或复杂的行列式非常有帮助,...

    行列式计算器

    标签“解行列式”表明这个程序专注于行列式的求解,对于学习线性代数的学生或者需要处理矩阵问题的专业人士来说,这样的工具非常实用。它可以帮助快速准确地计算行列式,节省大量手动计算的时间,提高工作效率。 总...

Global site tag (gtag.js) - Google Analytics