求C语言 三阶矩阵的n次方计算

如题所述

第1个回答  2019-05-13
很遗憾,上面匿名的程序不正确。
比如n=2
输入:
3---7
2---1
得出错误结果。
而当输入n=3
0---1---3
3---0---2
5---2---0
时也会得出错误结果。
错误的原因有2:
1
是数据类型不对,匿名的程序是设定输入都是整数int,显然按照行列式的定义结果肯定是整数,但是他程序中使用了整型数的除法,结果是取整整数,虽然他使用了类型强制转换,但结果显然不同,有误差而且有时候这个误差很大形成错误。
2
是算法有点问题。小可很欣赏匿名的算法思路,简洁明快。不过有相当缺陷,这在程序中注明。
下面的程序是在匿名的程序思路上改写的。考虑到数据类型和精确度问题,程序中行列式数据使用double型。由于tc和win-tc是16位编辑器,对float型和double型数据支持不好,所以程序是在32位编辑器dev-c++下调试并通过的。
本题的一个完整的c程序如下,程序在dev-c++下都调试通过,结果正确。
/*
用c语言解决:求任意阶(n阶)矩阵的行列式值
*/
#include
#include
void
getarray(int
n);
void
showarray(int
n);
double
getresult(int
n);
double
array[10][10];/*设矩阵不超过10阶,可更改*/
int
main()
{
int
n;
double
result;
printf("\nplease
input
the
array
size
n:");
scanf("%d",&n);
getarray(n);
showarray(n);
result=getresult(n);
printf("\nresult=%f\n",result);
system("pause");
return
0;
}
void
getarray(int
n)
{
int
row,col;
for(row=0;row
评论
0
0
加载更多