【发布时间】:2021-04-02 15:00:25
【问题描述】:
我正在尝试生成随机矩阵或由程序用户使用其中具有功能的开关盒填充它。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void randomly(int **matrix, int r, int c)
{
int i, j;
srand(time(NULL));
for(i=0; i<r; i++)
{
for(j=0; j<c; j++)
{
matrix[r][c] = rand() % 10;
}
}
}
void fill_normal(int **matrix, int r, int c)
{
int i, j;
printf("\nEnter matrix elements :\n");
for(i=0; i<r; i++)
{
for(j=0; j<c; j++)
{
printf("ENTER FOR --> [%d,%d] : ",i+1,j+1);
scanf("%d",&matrix[i][j]);
}
}
}
void print_matrix(int **matrix, int r, int c)
{
int i, j;
for(i=0; i<r; i++)
{
for(j=0; j<c; j++)
{
printf("%d\t",matrix[i][j]);
}
printf("\n"); /*new line after row elements*/
}
}
int main()
{
int r, c;
printf("Enter the rows and cols of matrix:\n");
scanf("%d%d", &r,&c);
int **matrix = malloc(r * c * sizeof(int));
int o;
printf("Enter 1 if you want to generate the numbers randomly:\n");
printf("Enter 2 if you want to enter the number by yourself:\n");
scanf("%d",&o);
printf("\n\n\n");
switch(o)
{
case 1:
randomly(matrix,r,c);
print_matrix(matrix,r,c);
break;
case 2:
fill_normal(matrix,r,c);
print_matrix(matrix,r,c);
break;
default:
printf("!!!WRONG OPERATOR!!!");
break;
}
free(matrix);
return 0;
}
对于案例 1:我什么也没看到,程序停止了,什么也没显示。 对于案例 2:我开始填充矩阵,但在 matrix[3][1] 程序崩溃 我不知道我能不能让功能中的人代码是正确的,但它们不起作用 提前谢谢!!!!
【问题讨论】:
-
将
matrix[r][c] = rand() % 10;更改为matrix[i][j] = rand() % 10; -
查看此链接了解二维数组的动态内存分配:google.com/amp/s/www.geeksforgeeks.org/…
标签: c multidimensional-array malloc