如何解决我收到一个错误“导致程序无法正常运行的问题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;
,r1
,r2
,c1
的值。您应该看到类似
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]);
^^
以确保扫描成功。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。