A. !!!跪求c语言实现矩阵运算(乘、求逆、转置、行列式)
求逆
main()
{char a[80],t;
int i,k;
gets(a);
k=strlen(a);
for(i=0;i<k;i++,k--)
{t=a[i];
a[i]=a[k];
a[k]=t;}
a[strlen(a)+1]='\0';
puts(a);
}其他的你自己做吧 做不好的查查书;都是差不多了
B. C语言小程序。转置行列式。
说明:
行数、列数必须要指定,测试数据可以自行输入,也可以由代码自动生成;
代码:
#include <stdio.h>
int main()
{
int iRow = 0;
int iCol = 0;
int iWantInput = 0;
int iTemp = 0;
printf("请输入矩阵的行、列数:\n");
scanf("%d %d", &iRow, &iCol);
int **pSrcData = new int*[iRow];
int **pDestData = new int*[iCol];
for (int r=0; r<iRow; ++r)
pSrcData[r] = new int[iCol];
for (int r=0; r<iCol; ++r)
pDestData[r] = new int[iRow];
// input
printf("请选择测试数据来源:\n1. 自行输入\n2. 程序自动生成\n");
scanf("%d", &iWantInput);
for (int r=0; r<iRow; ++r)
{
for (int c=0; c<iCol; ++c)
{
if (iWantInput != 1)
pSrcData[r][c] = ++iTemp;
else
scanf("%d", &pSrcData[r][c]);
}
}
// pre output
printf("转置前:\n");
for (int r=0; r<iRow; ++r)
{
for (int c=0; c<iCol; ++c)
{
printf("%-4d", pSrcData[r][c]);
}
printf("\n");
}
// reverse
for (int r=0; r<iCol; ++r)
{
for (int c=0; c<iRow; ++c)
{
pDestData[r][c] = pSrcData[c][r];
}
}
// post output
printf("转置后:\n");
for (int r=0; r<iCol; ++r)
{
for (int c=0; c<iRow; ++c)
{
printf("%-4d", pDestData[r][c]);
}
printf("\n");
}
printf("\n");
// release
for (int r=0; r<iRow; ++r)
{
delete []pSrcData[r];
pSrcData[r] = NULL;
}
delete []pSrcData;
pSrcData = NULL;
return 0;
for (int r=0; r<iCol; ++r)
{
delete []pDestData[r];
pDestData[r] = NULL;
}
delete []pDestData;
pDestData = NULL;
return 0;
}
测试结果:
// 自行输入测试数据:
// 程序自动生成测试数据:
C. 用C语言编程,使行列式转置,定好评
你好!解答如下:
#include <stdio.h>
int main()
{
int iRow = 0;
int iCol = 0;
int iWantInput = 0;
int iTemp = 0;
printf("请输入矩阵的行、列数:\n");
scanf("%d %d", &iRow, &iCol);
int **pSrcData = new int*[iRow];
int **pDestData = new int*[iCol];
for (int r=0; r<iRow; ++r)
pSrcData[r] = new int[iCol];
for (int r=0; r<iCol; ++r)
pDestData[r] = new int[iRow];
// input
printf("请选择测试数据来源:\n1. 自行输入\n2. 程序自动生成\n");
scanf("%d", &iWantInput);
for (int r=0; r<iRow; ++r)
{
for (int c=0; c<iCol; ++c)
{
if (iWantInput != 1)
pSrcData[r][c] = ++iTemp;
else
scanf("%d", &pSrcData[r][c]);
}
}
// pre output
printf("转置前:\n");
for (int r=0; r<iRow; ++r)
{
for (int c=0; c<iCol; ++c)
{
printf("%-4d", pSrcData[r][c]);
}
printf("\n");
}
// reverse
for (int r=0; r<iCol; ++r)
{
for (int c=0; c<iRow; ++c)
{
pDestData[r][c] = pSrcData[c][r];
}
}
// post output
printf("转置后:\n");
for (int r=0; r<iCol; ++r)
{
for (int c=0; c<iRow; ++c)
{
printf("%-4d", pDestData[r][c]);
}
printf("\n");
}
printf("\n");
// release
for (int r=0; r<iRow; ++r)
{
delete []pSrcData[r];
pSrcData[r] = NULL;
}
delete []pSrcData;
pSrcData = NULL;
return 0;
for (int r=0; r<iCol; ++r)
{
delete []pDestData[r];
pDestData[r] = NULL;
}
delete []pDestData;
pDestData = NULL;
return 0;
}
测试结果:
// 自行输入测试数据:
D. 求行列式的值,用C语言怎么写啊
行列式的值的源代码如下:
#include <stdio.h>
#include <stdlib.h>
void main()
{
int i,j,m,n,s,t,k=1;
double a[n][n],f=1,c,x,sn;
for (i=0;i<n;i++)
for (j=0;j<n;j++)
scanf ("%lf",&a[i][j]);
for (i=0,j=0;i<n&&j<n;i++,j++)
{
if (a[i][j]==0)
{
for (m=i;a[m][j]==0;m++);
if (m==n)
{
sn=0;
printf("deta=%lf ",sn);
exit(0);
}
else
for (n=j;n<n;n++)
{
c=a[i][n];
a[i][n]=a[m][n];
a[m][n]=c;
}
k*=(-1);
}
for (s=n-1;s>i;s--)
{
x=a[s][j];
for (t=j;t<n;t++)
a[s][t]-=a[i][t]*(x/a[i][j]);
}
for (i=0;i<n;i++)
f*=a[i][i];
sn=k*f;
printf ("deta=%lf ",sn);
}
(4)行列式转移c语言扩展阅读
1、每个C语言程序中main函数是有且只有一个。
2、C语言程序写完后,都是先编译,后连接,最后运行。(.c-->.obj-->.exe)这个过程中注意.c和.obj文件时无法运行的,只有.exe文件才可以运行
E. 用C语言写行列式运算程序
#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;
}
F. C语言 行列式互换
给你举个例子:矩阵a[2][3]=1 2 3
4 5 6
要求行列互换,那么b[3][2]=1 4
2 5
3 6
程序如下:
#include "stdio.h"
main()
{int a[2][3],i,j,b[3][2];
for(i=0;i<2;i++)
for(j=0;j<3;j++)
b[j][i]=a[i][j];//现a矩阵的行和列等于转换后b矩阵的列和行;
for(i=0;i<3;i++)
for(j=0;j<2;j++)
printf("%3d",b[i][j]);
printf("\n");
}
希望楼主能学会这个方法
G. C语言编程 关于行列式转置的问题
因为如果第二个也是3的话会重复,比如i=1时,j=3,会进行一次交换,然后,在j=1,i=3时又进行了一次交换
H. C语言 计算行列式
利用一定的固定方法把他化成上三角或者下三角,然后用一个新数组储存对角线上,连乘,得结果
I. 用C语言编一个3*3行列式的转置算法要用到参数.
你的程序语言没有错,但是逻辑错了。修改如下
#include"stdio.h"
int main()
{
void swap(int a[3][3],int i,int j);
int i,q,w;
int s[3][3];
i=1;
for(q=0;q<3;q++)
{
for(w=0;w<3;w++)
{s[q][w]=i;
i++;
printf("%d ",s[q][w]);
}
printf("\n");
}
for(q=0;q<3;q++)
{
for(w=0;w<q;w++)// 这里不应该是所有列都进行元素交换,到对角线元素就停止,你原来的写法把所有元素交换等于没交换。修改这里你的程序就对了。
swap(s,q,w);
}
for(q=0;q<3;q++)
{
for(w=0;w<3;w++)
printf("%d ",s[q][w]);
printf("\n");
}
return 0;
}
void swap(int a[3][3],int i,int j)
{
int t;
t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;
}