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

Python09

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函数提供不同的种子值,进而产生不同的随机数序列。

你的空间申请有问题,这是帮你改好后的,你可以运行看看。不着调是否帮上你了,如果OK还望采纳,和而后~~ #include <stdio.h>

#include <stdlib.h>void main()

{

int n,i=0,j=0

int **p

printf("?????????:")

scanf("%d",&n)

//p=(int**)malloc(sizeof(int)*n*n)

p=(int**)malloc(sizeof(int*)*n)

for(i=0i<ni++)

{

p[i]=(int*)malloc(sizeof(int)*n)for(j=0j<nj++)

{

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

//printf("%d",p[i][j])

}

}for(i=0i<ni++)

{

for(j=0j<nj++)

{

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

}

printf("\n")

}

system("pause")

}