|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 Fivk 于 2020-10-25 11:31 编辑
题目
- #include<stdio.h>
- int main()
- {
- int m,p,n;
- scanf("%d %d %d",&m,&p,&n);
- int a[m][p],b[p][n],c[m][n]={0};
- for(int i=0;i<m;i++)
- {
- for(int j=0;j<p;j++)
- {
- scanf("%d",&a[i][j]);
- }
- }
- for(int i=0;i<p;i++)
- {
- for(int j=0;j<n;j++)
- {
- scanf("%d",&b[i][j]);
- }
- }
- for(int i=0;i<m;i++)
- {
- for(int j=0;j<n;j++)
- {
- for(int k=0;k<p;k++)
- {
- c[i][j] +=a[i][k]*b[k][j];
- }
- }
- }
- for(int i=0;i<m;i++)
- {
- for(int j=0;j<n;j++)
- {
- printf("%d ",c[i][j]);
- }
- printf("\n");
- }
- return 0;
- }
复制代码
既然你说gcc支持,我就跑了一遍
确实gcc可以用变量定义数组长度
这又出现一个问题,题主对c数组初始化其实并没有起作用
因为长度为变量,这里初始化必须要用双循环
然后我运行是并没有报错,只有c数组初始化那里有个警告
改了初始化之后,在程序上已经没什么错误了
至于题目逻辑这一块
我输入的所有值都是2
输出为:
8 8
8 8
- int m,p,n;
- scanf("%d %d %d",&m,&p,&n);
- int a[m][p], b[p][n], c[m][n]; //={0};
- for (int i = 0; i < m; ++i)
- {
- for (int j = 0; j < n; ++j)
- {
- c[i][j] = 0;
- }
- }
- for (int i = 0; i < m; i++)
- {
- for (int j = 0; j < p; j++)
- {
- scanf("%d", &a[i][j]);
- }
- }
- for(int i=0;i<p;i++)
- {
- for(int j=0;j<n;j++)
- {
- scanf("%d",&b[i][j]);
- }
- }
- for(int i=0;i<m;i++)
- {
- for(int j=0;j<n;j++)
- {
- for(int k=0;k<p;k++)
- {
- c[i][j] +=a[i][k]*b[k][j];
- }
- }
- }
- for(int i=0;i<m;i++)
- {
- for(int j=0;j<n;j++)
- {
- printf("%d ",c[i][j]);
- }
- printf("\n");
- }
- return 0;
复制代码
|
|