#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define COL 20
#define ROW 20
void PopulateArray2DUnique(int [][COL], int, int , int , int );
void DisplayArray2D(int [][COL], int, int );
int main()
{
int matrix[ROW][COL], r ,c ,i , j;
int max = 400;
int min = 0;
printf("Enter the amount of rows and cols you would like\n Must be under 20!\n");
scanf("%d%d\n",&r,&c);
PopulateArray2DUnique(matrix,r,c,min,max);
DisplayArray2D(matrix,r,c);
return 0;
}
void PopulateArray2DUnique(int matrix[][COL], int r,int c, int min, int max)
{
int i, j;
srand(time(NULL));
for(i = 0; i<r; i++)
{
for(j = 0; j<c; j++)
{
matrix[i][j] = rand() % (max + min)+min;
}
}
}
void DisplayArray2D(int matrix[][COL], int r,int c)
{
int i,j;
for(i = 0; i < r; i++)
{
for(j = 0; j < c; j++)
{
printf("%4d ", matrix[i][j]);
}
printf("\n");
}
}
这个程序所做的(到目前为止)是要求用户输入矩阵的大小,然后函数 PopulateArray2DUnique 为矩阵生成随机值!
要求我输入两次行和列的大小
最佳答案
srand(time(NULL));
for(i = 0; i < rowsize; i++)
{
for(j = 0; j < colsize; j++)
{
matrix[i][j] = (rand() % (max-min)) + min;
}
}
给定 rand() % N
将生成从 0
到 N-1
的数字,因此不要使用 max
我们可以使用 (max+1)
来使其包含在内,我们需要生成从 min
到 max
的数字,首先我们减去min
获取从 min-min
到 max-min
的数字,这将产生从 0
到 的数字>max-min
,然后将 min
添加到结果中,以获得从 min
到 max
(rand() % ((max+1)-min)) + min
最后以表格方式打印矩阵
for(i = 0; i < rowsize; i++)
{
for(j = 0; j < colsize; j++)
{
printf("%4d ", matrix[i][j]);
}
printf("\n");
}
读取用户的输入应该像这样,不断询问直到有效输入
r=20;
while (r <= 0 || r >= 20)
{
printf("Enter how many rows (under 20) then press Enter: ");
scanf("%d", &r);
}
c=20;
while (c <= 0 || c >= 20)
{
printf("Enter how many columns (under 20) then press Enter: ");
scanf("%d", &c);
}
关于c - 在 c 中将随机数放入我的矩阵中时丢失了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35301003/