C语言:输入一个2*3的整数矩阵和一个3*2的整数矩阵,使用指针数组实现这两个矩阵的相乘。程序如下:

问题:1.运行结构有错误
2.输入第一个矩阵时为什么可以输入7个数据?
#include <stdio.h>
main()
{
int i,j,n,*tem[3];
int p[2][3],q[3][2],r[2][2];
tem[0]=p[0];tem[1]=q[0];tem[2]=r[0];
printf("请输入第1个矩阵:\n");
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
scanf("%d\t",tem[0]+3*i+j);
}
}

printf("请输入第2个矩阵:\n");
for(i=0;i<3;i++)
{
for(j=0;j<2;j++)
{
scanf("%d\t",tem[1]+2*i+j);
}
}

printf("请输入2个矩阵相乘得到的矩阵");
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
{
for(n=0;n<3;n++)
{
r[i][j]+=(*(tem[0]+3*i+n))*(*(tem[1]+2*n+j));
}
}
}
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
{
printf("%d\t",*(tem[3]+i*2+j));
}
}
getch();
}

//正确的程序如下:
#include <stdio.h>
void main()
{
int i,j,n,*tem[3];
int p[2][3],q[3][2],r[2][2];
tem[0]=p[0];tem[1]=q[0];tem[2]=r[0];
printf("请输入第1个矩阵:\n");
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
{
r[i][j]=0;
}
}
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
scanf("%d",tem[0]+3*i+j);
}
}

printf("请输入第2个矩阵:\n");
for(i=0;i<3;i++)
{
for(j=0;j<2;j++)
{
scanf("%d",tem[1]+2*i+j);
}
}

printf("输出2个矩阵相乘得到的矩阵:\n");
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
{
for(n=0;n<3;n++)
{
r[i][j]+=(*(tem[0]+3*i+n))*(*(tem[1]+2*n+j));
}
}
}
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
{
printf("%d\t",*(tem[2]+i*2+j));
}
printf("\n");
}
getch();
}
温馨提示:内容为网友见解,仅供参考
无其他回答

C语言:输入一个2*3的整数矩阵和一个3*2的整数矩阵,使用指针数组实现这...
C语言:输入一个2*3的整数矩阵和一个3*2的整数矩阵,使用指针数组实现这两个矩阵的相乘。程序如下: 问题:1.运行结构有错误 2.输入第一个矩阵时为什么可以输入7个数据? #include <stdio.h> main() { int i,j,n,*tem[3]; int p[2][3],q[3][2],r[2][2]; tem[0]=p[0];tem[1]=q[0];te...

C语言中怎么用指针实现两矩阵的相加(矩阵的行数与列数不相等 比如说是...
最简单的 约定矩阵的行列 然后用二维数组存储矩阵 在加法的时候 转换成一维数组 然后按顺序相加就可以了 比如 int a[2][3], b[2][3];\/\/input values add((int *)a, (int *)b, 2*3);...void add(int * a, int *b, int size){ int i;for(i = 0; i < size; i ++)a[i...

用C语言编程序:用指针方法处理。 写一函数,将一个3×3的整型矩阵转置...
define N 3 int main (void){ int ar[N][N],arr[N][N];int i,m;printf("输入九个数.\\n");for(i=0;i<N;i++)for(m=0;m<N;m++)scanf("%d",*(ar+i)+m);\/*输出数组*\/ for(i=0;i<N;i++){ for(m=0;m<N;m++)printf("%d ",*(*(ar+i)+m));putchar('\\n'...

如何用C语言编一个程序,输入一个二维数组,然后以一个矩阵的方式输出...
void main(){ int array[3][3], (*pArr)[3], *p[3], i, j, sum;srand(time(NULL));for(i=0; i<3; i++)for(j=0; j<3; j++)array[i][j] = rand()%100+0;pArr = array;for(i = 0; i < 3; i++)for(j = 0; j < 3; j++){ printf("%d\\t", pArr[i][...

c语言 任意输入一个3×3的矩阵,用函数实现求上三角矩阵并输出。
void shangsan(int (*p)[3]){ for(int i=0;i<3;i++){ for(int j=0;j<3;j++){ if(i==1&&j==0)printf("%c",32);else if(i==2&&(j==0||j==1))printf("%c",32);else printf("%d",(*(p+i))[j]); } printf("\\n");} } void main(){ int s[3][3...

用C语言编写一个矩阵转置的函数,矩阵的行数和列数在程序中由用户输入...
矩阵行指针初值指向每行首地址,迭代依次取所有行指针指向值组成新行,所有行指针自增。最终组合新的矩阵。include <stdio.h>#include <malloc.h>int **getList(int row,int clo);\/\/获取矩阵地址空间void setNum(int **nList,int n);\/\/填写数值void prtList(int **nList,int row,int clo);\/...

c语言用指针求矩阵转置~
在C语言中,矩阵转置问题通过指针解决的方法有很多。首先,定义一个指针数组 int*p1[N],这里的N代表矩阵的行数。然而,当您传入参数a时,实际上传入的是一个指针,而非一个数组。这种参数类型不一致,导致了后续操作的错误。同时,转置函数trans()没有正确返回转置后的矩阵,使得main()函数中打印的...

从键盘输入一个m*n维矩阵,用指针完成数组
可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。 键盘输入 n维 矩阵 指针 数组 搜索资料 本地图片 图片链接 代码 提交回答 匿名 回答自动保存中 你的回答被采纳后将获得: 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏5(财富值+成长值)为...

...函数实现n*n矩阵转置。在主函数中用scanf输入矩阵元素;将数组名作为...
C语言(指针): 编写一个函数实现n*n矩阵转置。在主函数中用scanf输入矩阵元素;将数组名作为函数实参。 lincoln1355 | 浏览1390 次 |举报 我有更好的答案推荐于2017-12-16 18:15:18 最佳答案 好吧,简单说下:void fun( float a[][]){ int i,j,float t;for(i=0;a[i][0];i++) for(j=i;a[...

编写函数,利用指针数组实现一个n*n矩阵(或行列式)的转置。
int a[N][N]; int* ptr_a[N][N]; int n,i,j,temp; scanf("%d",&n);\/\/输入矩阵的大小n*n for(i=0;i<n;i++) for(j=0;j<n;j++) scanf("%d",&a[i][j]); for(i=0;i<n;i++) for(j=0;j<n;j++) ptr_a[i][j]=&a[i][j]; for(i=0;i<n;...

相似回答