编程求两个矩阵的乘积,主函数如下,请编写子函数multi(),output(),用指针处理。

编程求两个矩阵的乘积,主函数如下,请编写子函数multi(),output(),用指针处理。main(){inta[3][4],b[4][3],c[3][3];用循环对数... 编程求两个矩阵的乘积,主函数如下,请编写子函数multi(),output(),用指针处理。

main()

{ int a[3][4],b[4][3],c[3][3];

用循环对数组a赋值(用指针处理)

用循环对数组b赋值(用指针处理)

multi(a,b,c);

output(c);

}
展开
 我来答
郁_诗
2011-12-03 · TA获得超过493个赞
知道小有建树答主
回答量:155
采纳率:100%
帮助的人:210万
展开全部
呵呵,完全是依题意用指针操作喔,若哪里不懂就追问哈~

#include <stdio.h>

void multi(int a[][4],int b[][3],int c[][3]) { //注意数组只能省略第一维的大小
int *pa,*pb,*pc,sum,i,j,k;
for(pc = c[0], i = 0; i < 3; i++) { //c[0]为数组c的首地址
for(j = 0; j < 3; j++) {
pa = a[i]; //让pa指向数组a第i+1行开头
pb = &b[0][j]; //让pb指向数组b第j+1列开头
sum = 0;
for(k = 0; k < 4; k++) {
sum += (*pa) * (*pb);
pa++; //让pa指向该行第二个元素
pb += 3; //让pb指向该列第二个元素
} //for
*pc++ = sum;
} //for
} //for
} //multi

void output(int c[][3]) {
int i,*p;
printf("\n数组c:\n");
for(p = c[0], i = 0; i < 9; i++) {
((i + 1) % 3) ? printf("%d ",*p++) : printf("%d\n",*p++);
} //for
} //output

int main() {
int a[3][4],b[4][3],c[3][3],*p,i;
//对数组a赋值.注意a[0]是个一维指针,指向数组a的首地址,且该数组总长度为3*4即12
for(p = a[0], i = 0; i < 12; i++) {
scanf("%d",p++);
} //for
for(p = b[0], i = 0; i < 12; i++) { //对数组b赋值,其总长度为4*3即12
scanf("%d",p++);
} //for
printf("\n数组a:\n");
for(p = a[0], i = 0; i < 12; i++) {
((i + 1) % 4) ? printf("%d ",*p++) : printf("%d\n",*p++);
} //for
printf("\n数组b:\n");
for(p = b[0], i = 0; i < 12; i++) {
((i + 1) % 4) ? printf("%d ",*p++) : printf("%d\n",*p++);
} //for
multi(a,b,c);
output(c);
return 0;
} //main
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式