二维数组作业,矩阵相乘。我错哪里了?
本帖最后由 Fivk 于 2020-10-25 11:31 编辑#include<stdio.h>
int main()
{
int m,p,n;
scanf("%d %d %d",&m,&p,&n);
int a,b,c={0};
for(int i=0;i<m;i++)
{
for(int j=0;j<p;j++)
{
scanf("%d",&a);
}
}
for(int i=0;i<p;i++)
{
for(int j=0;j<n;j++)
{
scanf("%d",&b);
}
}
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
for(int k=0;k<p;k++)
{
c +=a*b;
}
}
}
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
printf("%d ",c);
}
printf("\n");
}
return 0;
} 本帖最后由 yuxijian2020 于 2020-10-25 11:42 编辑
首先你定义的m, p, n都是变量,变量是不可以定义数组长度的
后面的代码已经无关紧要了这里就已经报错了
你可以用vector嘛 什么年代了就模板库就完事儿了
c的话那就用二级指针吧0.0 yuxijian2020 发表于 2020-10-25 11:36
首先你定义的m, p, n都是变量,变量是不可以定义数组长度的
后面的代码已经无关紧要了这里就已经报错了
...
你说的应该不对,C99标准,C的数组大小是可以变长的。这个应该是DevC++,默认用的是gcc,支持C99的。 shooan 发表于 2020-10-25 12:33
你说的应该不对,C99标准,C的数组大小是可以变长的。这个应该是DevC++,默认用的是gcc,支持C99的。
既然你说gcc支持,我就跑了一遍
确实gcc可以用变量定义数组长度
这又出现一个问题,题主对c数组初始化其实并没有起作用
因为长度为变量,这里初始化必须要用双循环
然后我运行是并没有报错,只有c数组初始化那里有个警告
改了初始化之后,在程序上已经没什么错误了
至于题目逻辑这一块
我输入的所有值都是2
输出为:
8 8
8 8
int m,p,n;
scanf("%d %d %d",&m,&p,&n);
int a, b, c; //={0};
for (int i = 0; i < m; ++i)
{
for (int j = 0; j < n; ++j)
{
c = 0;
}
}
for (int i = 0; i < m; i++)
{
for (int j = 0; j < p; j++)
{
scanf("%d", &a);
}
}
for(int i=0;i<p;i++)
{
for(int j=0;j<n;j++)
{
scanf("%d",&b);
}
}
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
for(int k=0;k<p;k++)
{
c +=a*b;
}
}
}
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
printf("%d ",c);
}
printf("\n");
}
return 0; {:10_254:}{:10_254:} yuxijian2020 发表于 2020-10-25 13:00
既然你说gcc支持,我就跑了一遍
确实gcc可以用变量定义数组长度
这又出现一个问题,题主对c数组初始化其 ...
我用一维数组的时候可以像我这上面 Fivk 发表于 2020-10-25 13:08
我用一维数组的时候可以像我这上面
你可以实验一下,依然不可以
因为是变量定义的数组长度
初始化应该是只能用循环赋值 yuxijian2020 发表于 2020-10-25 13:14
你可以实验一下,依然不可以
因为是变量定义的数组长度
初始化应该是只能用循环赋值
可以帮我修改一下吗? yuxijian2020 发表于 2020-10-25 13:14
你可以实验一下,依然不可以
因为是变量定义的数组长度
初始化应该是只能用循环赋值
这个定义数组是正确的 Fivk 发表于 2020-10-25 13:15
这个定义数组是正确的
不懂你说的,改什么?
本帖的初始化已经改过了就在我之前回复中贴的代码上 yuxijian2020 发表于 2020-10-25 13:18
不懂你说的,改什么?
本帖的初始化已经改过了就在我之前回复中贴的代码上
我这个结果好像不对 shooan 发表于 2020-10-25 12:33
你说的应该不对,C99标准,C的数组大小是可以变长的。这个应该是DevC++,默认用的是gcc,支持C99的。
程序运行没错啊。
你那里报什么错了? sunrise085 发表于 2020-10-25 13:29
程序运行没错啊。
你那里报什么错了?
我并没有去运行代码,我只是指出了C99标准,是可以用变长数组这种东西的。 Fivk 发表于 2020-10-25 13:24
我这个结果好像不对
我按你例子中给出的数组输入了一遍,输出是正确的
不知道你的结果不对是啥意思 shooan 发表于 2020-10-25 13:37
我并没有去运行代码,我只是指出了C99标准,是可以用变长数组这种东西的。
哦,不好意思。回复错人了,我以为你是楼主。。
页:
[1]