C代码问题

C代码问题,c,C,当我为J变量输入一个值时,我收到了错误 #include<stdio.h> int main(void) { int num[0][0]; int ave, i, j; int a ,b; int sum = 0; printf("Enter numbers of row for i"); scanf ("%d", a); printf("Enter numbers of column for j"); scanf ("%d", b); printf("Input matr

当我为J变量输入一个值时,我收到了错误

#include<stdio.h>


int main(void)
{

int num[0][0];
int ave, i, j;
int a ,b;
int sum = 0;

printf("Enter numbers of row for i");
scanf ("%d", a);
printf("Enter numbers of column for j");
scanf ("%d", b);

printf("Input matrix elements :");
for (i = 0; i < a; i++) {
for (j = 0; j < b; j++) {

  printf("\nInput element [%d][%d] : ", i, j);
  scanf("%f", &num[i][j]);
}
}


printf("Your numbers are: \n");
for(i = 0; i < a; i++)
for(j = 0; j < b; j++)
printf("%4d",num[i][j]);




system("pause");
return 0;
}
谢谢,

什么错误

无论如何,你的问题在这里:

printf("Enter numbers of row for i");
scanf ("%d", a);
printf("Enter numbers of column for j");
scanf ("%d", b);
应该是

scanf ("%d", &a);
scanf ("%d", &b);

另外,num矩阵是0乘0。尝试将其变大或在读取a、b之后分配。

您没有为num[]分配足够或任何内存。您需要为它分配一些内存,例如

int num[100][100];
当然,在这种情况下,还必须确保i或j不大于100

使用scanf时,您需要传递指向要扫描到的变量的指针,因此应该是:

 scanf("%d", &a);
等等

另外,您没有包括,因此我认为您不应该使用系统功能

int num[0][0];
问题出在这里。您希望矩阵包含多少行和多少列?把它放在括号里

scanf ("%d", &a);
scanf ("%d", &b);
如果希望2D数组具有可变大小,则需要对其进行malloc。例如:

int **num;
num = malloc(a * sizeof(int *));
int i;
for(i = 0; i < a; i++)
    num[i] = malloc(b * sizeof(int));

你收到了什么具体的错误?我猜它将是一个segfault。我很惊讶它甚至可以编译。我认为这是一个老掉牙的Turbo C。@Paul:Turbo C版本2.01,带有所有默认选项,在int num[0][0]行中出现错误:结构或数组的大小在函数main中未知:D@pmg当前位置似乎我欠Borland一个道歉-显然,这是一个更糟糕的C编译器-@保罗R:是的,但这可能是程序停止工作的地方。