作者lovelu8888 (華小穎)
看板C_and_CPP
標題[問題] 二維陣列相乘
時間Mon Oct 3 21:37:43 2011
不好意思 我是新手
@@
先附上我的程式碼 就是八乘八的矩陣
#include <stdio.h>
int i,j,k;
int main(void)
{
float a[8][8]={3./4.,0,0,0,0,0,0,0,
0,(-3./4.),1./2.,0,1./2.,0,0,0,
0,1./2.,-3./4.,0,1./2.,0,0,0,
0,0,0,3./4.,0,1./2.,1./2.,0,
0,1./2.,1./2.,0,3./4.,0,0,0,
0,0,0,1./2.,0,(-3./4.),1./2.,0,
0,0,0,1./2.,0,1./2.,-3./4.,0,
0,0,0,0,0,0,0,3./4. };
float b[8][8]={1.,1.,1.,1.,1.,1.,1.,1.,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,};
float c[8][8]={0};
for(i=0;i<8;i++)
for(j=0;j<8;j++)
{
printf("a%d%d=%.2f\n" ,i+1,j+1,a[i][j]);
};
for(i=0;i<8;i++)
for(j=0;j<8;j++)
{
printf(" b%d%d= %f \n",i+1,j+1,b[i][j]);
};
for (i=0; i<8; i++)
{
for (j=0; j<8; j++)
{
for(k = 1; k<8; k++)
{
c[i][j] = c[i][j] +a[i][k] * b[k][j];
}
printf("%f ", c[i][j]);
}
printf("\n");
}
return 0;
}
~
為啥我的c陣列跑出都是0,@@
還有在C裡面可以二維陣列乘一維陣列嗎?
ex (8*8)*(8*1)=(8*1)
我剛剛自己試了好像是不行 所以八乘一的矩陣 就只能乖乖寫成八乘八的矩陣嗎?
感謝
不好意思是我擺錯了
我的b[8][8]={1.,0,0,0,0,0,0,0,
1.,0,0,0,0,0,0,0,
1.,0,0,0,0,0,0,0,
1.,0,0,0,0,0,0,0,
1.,0,0,0,0,0,0,0,
1.,0,0,0,0,0,0,0,
1.,0,0,0,0,0,0,0,
1.,0,0,0,0,0,0,0,
我大概知道意思了
那請問如何讓一維陣列
讓c語言認為是直行而不是一列的呢??
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.128.128.198
→ firejox:這就要看你怎麼寫了.... 10/03 21:47
→ tropical72:for(k = 0; k<8; k++) 10/03 21:49
→ lovelu8888:所以是可以有二維成一維嗎? 10/04 13:45
→ lovelu8888:T大 K改了 但他的值 都跑出一樣 = = 應該還是錯的 10/04 13:45
→ tropical72:全跑成 0.75, 很正常的答案.. 或,你想解釋你的原題意嗎 10/04 16:30
→ lovelu8888:不好意思是 是我擺錯了! 10/04 17:24
※ 編輯: lovelu8888 來自: 140.128.128.198 (10/04 17:28)