【发布时间】:2017-02-17 13:03:51
【问题描述】:
我为矩阵运算编写了一个 C 代码。行和列的值应该是用户定义的。当我尝试运行代码时,会出现一个显示“matrix_addition.exe has stopped working”的弹出窗口。为什么会这样?构建代码时没有错误。
#include <stdio.h>
int main ()
{
int r,c,i,j,a_matrix[r][c],b_matrix[r][c];
printf("Enter the number of rows and columns of matrix\n");
scanf("%d %d", &r, &c);
printf("enter the elements of the first matrix \n");
for(i=0;i<r;i++)
{
for(j=0;j<c;j++)
{
printf("a_matrix[%d][%d]:",i,j);
scanf("%d",&a_matrix[i][j]); //array input
}
}
printf("\n enter the elements of the second matrix \n");
for(i=0;i<r;i++)
{
for(j=0;j<c;j++)
{
printf("b_matrix[%d][%d]:",i,j);
scanf("%d",&b_matrix[i][j]); //array input
}
}
return 0;
}
【问题讨论】:
-
您是否期望
a_matrix和b_matrix在r和c被分配有效值后神奇地增长到适当的大小?一般来说,C 不是这样工作的。 -
为了便于阅读和理解:1) 遵循公理:每行只有一个语句,并且(最多)每条语句一个变量声明。 2) 变量名称应表明
content或usage(或更好,两者兼有)。 -
变量
r和c的值必须在使用它们声明数组之前赋值:a_matrix[r][c]和b_matrix[r][c] -
在调用任何
scanf()系列函数时,始终检查返回值(而不是参数值)以确保操作成功。
标签: c arrays matrix codeblocks