寫C語言碼令A,B,C為m n矩陣,使得CAB。寫函式mattAdd它通過指標計算給定A和B的和矩陣C

2021-05-18 08:35:14 字數 6219 閱讀 8018

1樓:水裡風

/*矩陣元素間用空格隔開,可以不換行,但是元素個數別錯了m,n表示行列值,自己修改

讀取儲存檔案預設在工程資料夾

*/#include

#define m 3//矩陣行

#define n 4//矩陣列

int main()

{void printfiles(float a[m][n]);

float *mattadd(float a[n],float b[n],float c[n]);

float a[m][n];//矩陣為floatfloat b[m][n];

float c[m][n];

float *p;//指標讀入和接收

int i,j;

file *fp;

fp = fopen("inputmata.txt", "r");

if(fp == null)return -1;

p=&a[0][0];

while(fscanf(fp, "%f", p) != eof)p++;

fclose(fp);//讀完a

fp = fopen("inputmatb.txt", "r");

if(fp == null)return -1;

p=&b[0][0];

while(fscanf(fp, "%f", p) != eof)p++;

fclose(fp);//讀完b

printf("a陣列:\n");

printfiles(a);

printf("b陣列:\n");

printfiles(b);

printf("c陣列:\n");

p=mattadd(a,b,c);

printfiles(c);

fp = fopen("outputmat.txt", "w+");

for(i=0;i

2樓:網友了了了

我能寫這個程式,你寫好了嗎,還需要不

c語言程式設計,已知三角形的三邊長a,b,c,計算求三角形面積的公式為:

3樓:丿

程式**如下:

#include

#include

int main()

擴充套件資料

三角形具有以下性質:

1、三角形任意兩邊之和大於第三邊,任意兩邊之差小於第三邊。

2、在平面上三角形的內角和等於180°(內角和定理)。

3、在平面上三角形的外角和等於360° (外角和定理)。

4、三角形的三條角平分線交於一點,三條高線的所在直線交於一點,三條中線交於一點。

5、三角形的任意一條中線將這個三角形分為兩個面積相等的三角形。

4樓:匿名使用者

1、公式:area = sqrt(s*(s-a)*(s-b)*(s-c))

2、**:

printf("依次輸入a,b,c(空格識別一個數):");

scanf("%f%f%f,",&a,&b,&c);

s=(float)0.5*(a+b+c);

area = (float)sqrt(s*(s-a)*(s-b)*(s-c));

printf("面積為:%f",area);

}擴充套件資料舉例:  a=3.67;b=5.43; c=6.21;

1、int main()

參考資料

5樓:匿名使用者

#include

int main()

else

}else

printf("\n");

return 0;}

6樓:bboy鶴

#include

#include

void main()

**如上 很簡單的 自己多動手

7樓:匿名使用者

#include

#include

int main ()

8樓:匿名使用者

這個問題不難的,還是自己思考下吧

用c語言實現兩個矩陣相乘怎麼做?

9樓:灩麗

1、程式執行輸入資料時,第一行為a矩陣的行列數和b矩陣的行列數,接著分別輸入a、b兩個矩陣的值。

2、首先,定義6個整型變數,儲存a、b矩陣的行和列,以及控制迴圈的變數,k則用於實現矩陣的乘法。

3、接著,定義三個整型二維陣列,儲存a、b和c矩陣的各元素。

4、輸入三個矩陣的行數和列數,儲存在變數a、b、c中。

5、輸入矩陣a的各元素,儲存在陣列x中。

6、輸入矩陣b的各元素,儲存在陣列y中。

7、將二維陣列z的各元素,初始化為0。

8、用兩層for迴圈,控制矩陣的乘法,並輸出乘法所得的結果。

9、計算a矩陣和b矩陣的乘法,結果儲存在陣列z中。

10、最後,輸出乘法所得的結果,即輸出z陣列中的所有元素。

11、執行程式,輸入矩陣a和b的行數和列數,以及a矩陣和b矩陣的所有元素,電腦就會計算出乘積c矩陣的所有元素,並輸出c矩陣。

10樓:匿名使用者

#include

#include

#define m 3

int main(void)

{int i,j,k,matrix1[m][m],matrix2[m][m],row1=m ,col1=m ,row2=m,col2=m,matrix[m][m];

/*為需要相乘的兩個矩陣賦值:*/

printf("輸入第一個矩陣:\n");

for(i=0;i

11樓:育知同創教育

c語言實現矩陣相乘

問題描述:

編寫程式,可以實現m*n矩陣和n*p矩陣相乘。m,n,p均小於10,矩陣元素為整數。

分析:首先我們可以根據題意寫出函式頭。可以定為void matrixmutiply(int m,int n,int p,long lmatrix1[max][max],long lmatrix2[max][max],long lmatrixresult[max][max]),其中lmatrix1和lmatrix2分別是輸入的m*n矩陣和n*p矩陣,lmatrixresult是輸出的m*p矩陣。

因為m,n和p都是未知量,要進行處理的矩陣大小是變數。但我們可以定義比較大的二維陣列,只使用其中的部分陣列元素。

矩陣相乘的演算法比較簡單,輸入一個m*n矩陣和一個n*p矩陣,結果必然是m*p矩陣,有m*p個元素,每個元素都需要計算,可以使用m*p巢狀迴圈進行計算。

根據矩陣乘法公式:

可以用迴圈直接套用上面的公式計算每個元素。巢狀迴圈內部進行累加前,一定要注意對累加變數進行清零。

資料要求

問題中的常量:

#define max 10  /*矩陣最大行數和列數*/

問題的輸入:

int m,n,p;   /*相乘的兩個矩陣的行列數*/

long lmatrix1[max][max],lmatrix2[max][max]; /*相乘的兩個矩陣*/

問題的輸出:

long lmatrixresult[max][max];    /*矩陣相乘後得到的矩陣*/

初始演算法

1.輸入兩個矩陣的的行列數m,n,p;

2.輸入第一個矩陣的每個元素;

3.輸入第二個矩陣的每個元素;

4.呼叫函式進行乘法運算,結果放在lmatrixresult 中;

5. 列印輸出結果矩陣。

演算法細化

演算法的步驟4計算兩個矩陣的乘法演算法如下:

4.1 定義迴圈變數i,j,k;

4.2 巢狀迴圈計算結果矩陣(m*p)的每個元素。

程式**如下:

#define max 10

void matrixmutiply(int m,int n,int p,long lmatrix1[max][max],

long lmatrix2[max][max],long lmatrixresult[max][max])

}main()

/*輸入第二個矩陣的每個元素*/

printf("\nplease elements of matrix2(%d*%d):\n",n,p);

for(i=0;i

for(j=0;j

/*呼叫函式進行乘法運算,結果放在lmatrixresult 中*/

matrixmutiply(m,n,p,lmatrix1,lmatrix2,lmatrixresult);

/*列印輸出結果矩陣*/

printf("\nresult matrix: \n");

for(i=0;i

}程式執行結果如下:

please input m of matrix1:

3please input n of matrix1:

2please input p of matrix2:

3please elements of matrix1(3*2):

1 20 1

3 0please elements of matrix2(2*3):

1 2 0

3 1 1

result matrix:

7 4 2

3 1 1

3 6 0

12樓:匿名使用者

有c語言實現兩個句子呢相同的話我覺得這個在程式設計的時候只要把兩個句子兩個句子然後涉及到一個什麼可以了

13樓:匿名使用者

用c語言實現兩個矩陣相乘,編寫程式就行。

14樓:xc望心闖天下

#include

int main()

}for(i = 0;i < 3 ; i++)}for(i = 0; i < 3; i++)}for(i = 0;i < 3 ; i++)printf("\n");}}請採納

c語言:輸入一個2行3列的矩陣a和一個3行4列的矩陣b,計算兩矩陣的乘積

15樓:曉龍修理

解題過程如下:

#include ;#include

#define l 2,#define m 3,#define n 4

}printf("\n");}return;}int main(void)};

double b[m][n] = };double c[l][n] = };int i = 0, j = 0, k = 0;

printf("\ngenerate a[%d][%d]:\n", l, m);

genarr(&a[0][0], l, m);

printmatrix(&a[0][0], l, m);

printf("\ngenerate b[%d][%d]:\n", m, n);

}}printf("\ncalc c[%d][%d]:\n", l, n);

性質:矩陣相乘最重要的方法是一般矩陣乘積。它只有在第一個矩陣的列數(column)和第二個矩陣的行數(row)相同時才有意義  。

一般單指矩陣乘積時,指的便是一般矩陣乘積。一個m×n的矩陣就是m×n個數排成m行n列的一個數陣。由於它把許多資料緊湊地集中到了一起,所以有時候可以簡便地表示一些複雜的模型,如電力系統網路模型。

當矩陣a的列數(column)等於矩陣b的行數(row)時,a與b可以相乘。矩陣c的行數等於矩陣a的行數,c的列數等於b的列數。乘積c的第m行第n列的元素等於矩陣a的第m行的元素與矩陣b的第n列對應元素乘積之和。

當提及「矩陣相乘」或者「矩陣乘法」的時候,並不是指代這些特殊的乘積形式,而是定義中所描述的矩陣乘法。在描述這些特殊乘積時,使用這些運算的專用名稱和符號來避免表述歧義。

把給定的圖轉為鄰接矩陣,即a(i,j)=1當且僅當存在一條邊i->j。令c=a*a,那麼c(i,j)=σa(i,k)*a(k,j),實際上就等於從點i到點j恰好經過2條邊的路徑數(列舉k為中轉點)。

類似地,c*a的第i行第j列就表示從i到j經過3條邊的路徑數。同理,如果要求經過k步的路徑數,只需要二分求出a^k即可。

c語言中ab》c和ab》c中有啥子不同

一 a b c和a b c 是一樣的表達方式,先判斷b c是否成立,如果成立,用1和a比較,如果a 1,則整個表示式為1。1 若為真,a為1則該表示式為真,即該符合表示式的值為1。2 若為假,a不為0則該表示式為假,即該符合表示式的值為0。二 a b c和a b c 是一樣的表達方式,先判斷b c是...

關於C語言程式的問題,C語言上的問題abc1bc2的值a3,b4,c

setmem b,6 sizeof int 0 這個函式沒有定義 你這個函式是的意思應該是setmem,為b分配6個int長度的地址空間,並且每個偏移地址 回或是說b的元素 初答始為0了 void setmem int p int size,int value 你搜一下setmem這個函式宣告在哪個...

c語言程式設計已知agtbgtcgt0abc為整數且

s a c語言題 已知a b c 0 則 a b c 的值為?正確答案 1,0,0,1 要過程,謝謝 邏輯運算子並不是運算子兩邊的表示式一定都執行,就本例來說 a b c 0 d a b c 1 的優先順序比 高,注意優先順序是 結合優先順序 而不是 計算優先順序 所以整個表示式可以看做 a b c...