gpt4 book ai didi

c - program.exe 已停止工作...请发现错误?

转载 作者:行者123 更新时间:2023-11-30 20:53:49 24 4
gpt4 key购买 nike

#include<stdio.h>
void main(){
int m,n,m1,n1,a[m][n],b[m1][n1],s=0,i,j,c[m][n1],i1,j1;
printf("Enter no. of rows...& no. of columns..of 1st matrix");
scanf("%d",&m);
scanf("%d",&n);
printf("Enter no. of rows...& no. of columns..of 2nd matrix");
scanf("%d",&m1);
scanf("%d",&n1);
if(n!=m1){
printf("Matrix multiplication can't be performed.Please check the order
of the matrices.");
}
else{
for(i=1;i<=m;i+=1){
for(j=1;j<=n;j+=1){
s+=a[i][j]*b[j][i];
}
for(i1=1;i1<=m;i1+=1){
for(j1=1;j1<=n1;j1+=1){
c[i1][j1]=s;
printf("%d",c[i1][j1]);
}
printf("\n");
}
}

}



}

当我构建它时..它没有显示错误但在运行代码时显示 .exe 已停止工作请指出我的代码中的错误......我之前在codeblocks ide中运行的程序已经正确执行......

最佳答案

目前您的代码如下所示(我已经减少了变量的数量以使其更易于阅读)。

int m,n;
int a[m][n];
printf("Enter no. of rows...& no. of columns..of 1st matrix");
scanf("%d",&m);
scanf("%d",&n);

当您声明数组 a 时,mn 的值未定义 - 它们可以是任何适合的值转换为 int。例如,它们可能为 0,这意味着您已将 a 声明为 a[0][0]。然后您将获得 mn 的值,到了这个阶段就为时已晚了。无论哪种方式,您的代码都将遭受未定义的行为。

一种可能的解决方案是为这样的矩阵分配内存......

int m,n;
int **a;
printf("Enter no. of rows...& no. of columns..of 1st matrix");
scanf("%d",&m);
scanf("%d",&n);
a=malloc(sizeof(*a)*m);
for(i=0;i<m;i++)
{
a[i]=malloc(sizeof(*a[i])*n);
}

您需要记住在使用完分配的内存后free()释放它。

关于c - program.exe 已停止工作...请发现错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45078620/

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