我收到一个错误“导致程序无法正常运行的问题Windows将关闭程序并在找到解决方案时通知您”

问题描述

我在两个矩阵的乘积上有一个书面的ac程序。我编译时没有发现错误,但运行时发现了上述错误。我尝试了youtube视频建议的多种解决方案。我的电脑上安装了盗版Windows 10副本。我在 codeblocks 20.03 上运行该程序 这是程序:

#include<stdio.h>
int main()
{
    int r1,r2,c1,c2,a[r1][c1],b[r2][c2],c[r1][c2],sum=0;
    printf("Enter the rows and columns Of matrix a and b(r1,c2):");
    scanf("%d%d%d%d",&r1,&c1,&r2,&c2);
    printf("Input matrices elements");
    int i,j;
    printf("Input elements of matrix a:");
    for(i=0;i<r1;i++){
        for(j=0;j<c1;j++)
        scanf("%d",&a[i][j]);
    }
    printf("Input elements of matrix b:");
    for(i=0;i<r2;i++){
        for(j=0;j<c2;j++)
        scanf("%d",b[i][j]);
    }
    printf("Matrix a is:\n");
    for(i=0;i<r1;i++){
        for(j=0;j<c1;j++)
        printf("%d ",a[i][j]);
    }
    printf("Matrix b is:\n");
    for(i=0;i<r2;i++){
        for(j=0;j<c2;j++)
        printf("%d ",b[i][j]);
    }
    if(c1==r2)
    printf("\nMatrix multiplication is possible.....\n");
    else
    return 0;

    for(i=0;i<r2;i++){
        sum=0;
        for(j=0;j<c2;j++)
        sum+=a[i][j]*b[j][i];
        c[i][j]=sum;
    }
    printf("\nProduct of matrices is:\n");
    for(i=0;i<r1;i++){
        for(j=0;j<c2;j++)
        printf("%d ",c[i][j]);
        printf("\n");
    }

    return 0;
}

注意:我的程序可能不正确,我只想运行该程序,然后我会对其进行调试。

解决方法

尝试使用clang -Weverything -Wno-vla进行编译:

c.c:17:20: warning: format specifies type 'int *' but the argument has type 'int' [-Wformat]
        scanf("%d",b[i][j]);
               ~~  ^~~~~~~
c.c:4:27: warning: variable 'c1' is uninitialized when used here [-Wuninitialized]
    int r1,r2,c1,c2,a[r1][c1],b[r2][c2],c[r1][c2],sum=0;
                          ^~
c.c:4:17: note: initialize the variable 'c1' to silence this warning
    int r1,sum=0;
                ^
                 = 0
c.c:4:23: warning: variable 'r1' is uninitialized when used here [-Wuninitialized]
    int r1,sum=0;
                      ^~
c.c:4:11: note: initialize the variable 'r1' to silence this warning
    int r1,sum=0;
          ^
           = 0
c.c:4:37: warning: variable 'c2' is uninitialized when used here [-Wuninitialized]
    int r1,sum=0;
                                    ^~
c.c:4:20: note: initialize the variable 'c2' to silence this warning
    int r1,sum=0;
                   ^
                    = 0
c.c:4:33: warning: variable 'r2' is uninitialized when used here [-Wuninitialized]
    int r1,sum=0;
                                ^~
c.c:4:14: note: initialize the variable 'r2' to silence this warning
    int r1,sum=0;
             ^
              = 0

您使用垃圾值大小初始化所有矩阵,因为1.没有初始化变量,并且2.在同一行上声明了VLA ==>导致垃圾大小。

首先从用户读取值,然后声明VLA。 (尽管使用malloc和Co.会更好)。

,

您遇到的主要问题

press_me = driver.find_element_by_xpath("//a[@class='my-class']").click()
get_me_text = driver.find_element_by_xpath("//a[@class='my-class']").text

在不确定的位置(即未初始化或分配)使用 int r1,sum=0; r1r2c1的值。您应该看到类似

的一些编译器警告
c2

如果看不到它们,请使用编译器标志启用警告。

要解决此问题:您需要先扫描值,然后将它们用作数组维。

然后,下一个问题:您有错字

warning: ‘r1’ is used uninitialized in this function [-Wuninitialized]
warning: ‘c2’ is used uninitialized in this function [-Wuninitialized]
warning: ‘r2’ is used uninitialized in this function [-Wuninitialized]

应该是

 scanf("%d",b[i][j]);

也就是说,在使用扫描值之前,请始终检查返回值 scanf("%d",&b[i][j]); ^^ 以确保扫描成功。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...