gpt4 book ai didi

c - 矩阵乘法程序

转载 作者:太空宇宙 更新时间:2023-11-04 07:47:51 25 4
gpt4 key购买 nike

下面的代码显示了段错误。
错误占上风
尝试了很多改变但没有用

#include<conio.h>
#include<stdio.h>
void main()
{
static int a[100][100],b[100][100],c[100][100]={0};
int m,n,p,i,j,k;
printf("Enter no pf rows and colums for matrix A");
scanf("%d%d",&m,&n);
for(i=0;i<=m-1;i++)
{
for(j=0;j<=n-1;j++)
{
printf("enter no.");
scanf("%d",&a[i][j]);
}
}
printf("Enter no. of column for matrix b");
scanf("%d",&p);
for(i=0;i<=n-1;i++)
{
for(j=0;j<=p-1;j++)
{
printf("enter no.");
scanf("%d",&b[i][j]);
}
}
for(i=0;i<=m-1;i++)
{
for(j=0;i<=p-1;j++)
{
c[i][j]=0;
for(k=0;k<=n-1;k++)
{
c[i][j]=c[i][j]+a[i][k]*b[k][j];
}
}
}
printf(" The resultant matrix is");
for(i=0;i<=m-1;i++)
{
for(j=0;j<=p-1;j++)
{
printf("%d\t",c[i][j]);
}
printf("\n");
}

getch();
}

在 Turbo C++ 上试过

错误 139段错误

最佳答案

Error 139 Segmentation error

这是因为

     for(j=0;i<=p-1;j++)

必须是

    for(j=0;j<=p-1;j++)

目前 j 无限增加所以 c[i][j]=0;并且其他访问超出了具有未定义行为的数组(您的段错误)


其他备注:

  • 要做 for(j=0; j < p; j++)是与例如 size_t 兼容的更好选择with 是索引的正确类型

  • 我强烈建议您检查一下您的scanf 是否成功,例如,目前您不知道是否输入了有效数字

    if (scanf("%d%d",&m,&n)!= 2)
    fprintf(stderr, "invalid numbers");
    else {
  • 必要时还要检查输入值 > 0,行数和列数必须是这种情况

关于c - 矩阵乘法程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55780881/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com