有人可以指出我的代码中的错误吗

Could someone please point out the error in my code

#include<stdio.h>
int main()
{
    setbuf(stdout,NULL);
    int p,q,r,s,a[p][q],b[r][s],i,j,k,u,v,res[u][v],sum=0;
    printf("Enter the number of rows and columns of the 1st matrix: ");
    scanf ("%d%d",&p,&q);
    printf("Enter the number of rows and columns of the 2nd matrix: ");
    scanf ("%d%d",&r,&s);
    printf("Enter the elements of matrix1: ");
    u=p;
    v=s;
    for(i=0;i<p;i++)
    {
        for(j=0;j<q;j++)
        {
            scanf("%d",&a[i][j]);
        }
    }
    printf("Enter the elements of matrix2: ");
    for(i=0;i<r;i++)
    {
        for(j=0;j<s;j++)
        {
            scanf("%d",&b[i][j]);
        }
    }
    for(i=0;i<p;i++)
    {
        for(j=0;j<s;j++)
        {
            for(k=0;k<r;k++)
            {
                sum+=a[i][k]*b[k][j];
            }
            res[i][j]=sum;
            sum=0;
        }
    }
    printf("The resultant matrix is: ");
    for(i=0;i<p;i++)
    {
        for(j=0;j<s;j++)
        {
            printf("%d\t",res[i][j]);
        }
        printf("\n");
    }
return 0;
}

**我正在尝试编写一个程序来执行矩阵乘法。代码没有被执行……它只是终止,我真的找不到错误。当我在网上尝试 运行 时,我得到了“总线错误(代码转储)错误 135”...但是在我的系统中,程序只是在没有错误的情况下终止。请帮我找出我遗漏的错误或概念这里.. **

在代码中

 int p,q,r,s,a[p][q],b[r][s],i,j,k,u,v,res[u][v],sum=0;

您正在使用未初始化的 pqrsuv 的值。因为它们有自动存储(本地范围)并且类型 int 可以有陷阱表示,并且变量 uv 永远不会使用它们的地址,它会调用 undefined behaviour.即使对于 uv 以外的其他变量,其值也是不确定的,导致实际代码无效。

要解决此问题,请在将值扫描到要用作数组维度的相应变量后定义 VLA。