C语言编程,如何自动生成一个二维数组

Python017

C语言编程,如何自动生成一个二维数组,第1张

程序主要通过malloc函数动态生成数组,srand和rand函数配合生成随机数据,代码如下,//程序功能,实现自定义m*n二维数组,随机生成给定范围max-min的数组元素#include<stdio.h>#include <stdlib.h>#include <time.h>void main(){ int i=0,j=0int m=0,n=0//数组维数int max=0,min=0//数组数据范围 int **p=NULL//二维指针,存放m*n个元素int tmpprintf("请输入数组维数m和n:")scanf("%d %d",&m,&n)printf("请输入数组元素最大最小值max和min:")scanf("%d %d",&max,&min)if(max<min)//保证max大于min {tmp=maxmax=minmin=max}p=(int**)malloc(m*sizeof(int*))//先分配m个一维指针if(NULL==p)exit(1)for (i = 0i <n i++){p[i] = (int*)malloc(n*sizeof(int))//为m个一维指针分配n个整型大小的空间if (NULL==p[i])exit(1)}srand(time(NULL))for(i=0i<mi++)for(j=0j<nj++)p[i][j]=rand()%(max-min+1)+minprintf("%d*%d二维数组为:\n",m,n)for(i=0i<mi++){ for(j=0j<nj++)printf("%d\t",p[i][j])printf("\n") }for (i = 0i <ni++){free(p[i])p[i]=NULL}free(p)p=NULL}void *malloc( size_t size )如果分配成功则返回指向被分配内存的指针,指针指向一个大小为size的内存空间;如果错误发生返回NULL。一般srand和rand配合使用产生伪随机数序列。rand函数在产生随机数前,需要系统提供的生成伪随机数序列的种子,rand根据这个种子的值产生一系列随机数。如果系统提供的种子没有变化,每次调用rand函数生成的伪随机数序列都是一样的。srand(unsigned seed)通过参数seed改变系统提供的种子值,从而可以使得每次调用rand函数生成的伪随机数序列不同,从而实现真正意义上的“随机”。通常可以利用系统时间来改变系统的种子值,即srand(time(NULL)),可以为rand函数提供不同的种子值,进而产生不同的随机数序列。

int a[m][n]//就表示一个m行n列的整型二维数组

在c语言中数组的下标是从0开始的所以,数组a的元素个数可以表示为:a[0][0]-a[m-1][n-1]

例如:

#include<stdio.h>

int main()

{

int a[3][2],i,j//定义一个3行2列的整型二维数组a 

for(i=0i<3i++)//依次给二维数组赋值 

for(j=0j<2j++)

scanf("%d",&a[i][j])

printf("\n")

for(i=0i<3i++){//输出二维数组 

for(j=0j<2j++)

printf("%d ",a[i][j])

printf("\n")

}

return 0

 }

 /*

 运行结果:

1 2

3 4

4 5

1 2

3 4

4 5 

 */