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;
}