我正在尝试制作一个程序,生成两个相同行数和列数的矩阵(由用户给出。矩阵上的数字也会生成),然后另一个矩阵填充用户给出的数字。
例如,如果我要求包含3行和3列的矩阵,程序有时可以正常工作,有时却没有。在任何一种方式中,程序总是在最后崩溃。我试过调试,但没有任何线索。可能是编译器?这就是我所拥有的:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int index, i, j, random, k, l;
srand(time(NULL));
printf("How many colums/lines?\n");
scanf("%d", &index);
int(*matrix1)[index]=malloc(sizeof(int[index][index]));
if(matrix1 == NULL)
{
printf("Error\n");
}
for(i=1; i<=index; i++)
{
for(j=1; j<=index; j++)
{
random = rand()%10;
matrix1[i][j]=random;
printf("%d ", matrix1[i][j]);
}
printf("\n");
}
printf("\n\n");
int(*matrix2)[index]=malloc(sizeof(int[index][index]));
if(matrix2 == NULL)
{
printf("Error\n");
}
for(k=1; k<=index; k++)
{
for(l=1; l<=index; l++)
{
random = rand()%10;
matrix2[k][l]=random;
printf("%d ", matrix2[k][l]);
}
printf("\n");
}
int(*matrix3)[index]=malloc(sizeof(int[index][index]));
printf("Input the numbers for the third matrix.\n");
for(i=1; i<=index; i++)
{
for(j=1; j<=index; j++)
{
printf("Fill the position %d%d\n", i, j);
scanf("%d", &matrix3[i][j]);
}
}
free(matrix1);
free(matrix2);
free(matrix3);
return 0;