c语言编写二阶逆矩阵给定的二阶矩阵(2*2),求其逆矩阵;输出一个大小为2*2的距阵,矩阵每一行相邻的的两个数字之间由一个空格隔开.输入:2 01 1输出:0.500000 0.000000 -0.500000 1.000000
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/26 23:29:15
c语言编写二阶逆矩阵给定的二阶矩阵(2*2),求其逆矩阵;输出一个大小为2*2的距阵,矩阵每一行相邻的的两个数字之间由一个空格隔开.输入:2 01 1输出:0.500000 0.000000 -0.500000 1.000000
c语言编写二阶逆矩阵
给定的二阶矩阵(2*2),求其逆矩阵;
输出一个大小为2*2的距阵,矩阵每一行相邻的的两个数字之间由一个空格隔开.
输入:
2 0
1 1
输出:
0.500000 0.000000
-0.500000 1.000000
c语言编写二阶逆矩阵给定的二阶矩阵(2*2),求其逆矩阵;输出一个大小为2*2的距阵,矩阵每一行相邻的的两个数字之间由一个空格隔开.输入:2 01 1输出:0.500000 0.000000 -0.500000 1.000000
#include
int ScanDMatrix(double matrix[][2]);
void PrintDMatrix(double matrix[][2]);
int InverseDMatrix(double matrix[][2]);
int main(void)
{
double matrix[2][2];
printf("Input the matrix this way\n");
printf("A B\nC D\n:\n");
if (! ScanDMatrix(matrix))
{
printf("Are you kidding me?\n");
return 0;
}
printf("The matrix you input is:\n");
PrintDMatrix(matrix);
if (InverseDMatrix(matrix))
{
printf("The inverse of the matrix is:\n");
PrintDMatrix(matrix);
printf("\n");
}
else
{
printf("Oh, what a pitty, it does not have an inverse one.\n");
}
return 0;
}
int ScanDMatrix(double matrix[][2])
{
return scanf("%lf%lf", &matrix[0][0], &matrix[0][1]) == 2
&& scanf("%lf%lf", &matrix[1][0], &matrix[1][1]) == 2;
}
void PrintDMatrix(double matrix[][2])
{
printf("%10g\t%10g\n", matrix[0][0], matrix[0][1]);
printf("%10g\t%10g\n", matrix[1][0], matrix[1][1]);
}
int InverseDMatrix(double matrix[][2])
{
double dDiv, dTmp;
dDiv = matrix[0][0] * matrix[1][1] - matrix[0][1] * matrix[1][0];
if (! dDiv)
return 0;
dTmp = matrix[0][0];
matrix[0][0] = matrix[1][1] / dDiv;
matrix[1][1] = dTmp / dDiv;
matrix[0][1] = -matrix[0][1] / dDiv;
matrix[1][0] = -matrix[1][0] / dDiv;
return 1;
}