主题:二维数组的问题
Gooluckd
[专家分:20] 发布于 2010-11-26 16:48:00
菜鸟请教大侠,怎么用
void sercet_draw() //头文件省略
{
srand(time(NULL));
int draw[2];
for(int i=0; i<2;i++)
{
draw[i]=rand()%4+6; //产生[6,9]随机数
}
}
生成的2个随机数声明一个二维数组?(draw[0]为行,draw[1]为列,需要添加头文件的话,有劳写一下),谢谢!
回复列表 (共4个回复)
沙发
cfj469933485 [专家分:950] 发布于 2010-11-26 17:36:00
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void sercet_draw(int p[][2]);
int main()
{
int p[1][2];
sercet_draw(p);
system("pause");
return 0;
}
void sercet_draw(int p[][2])
{
srand((unsigned)time(NULL));
for(int i = 0; i < 2; i ++)
{
p[0][i] = rand() % 4 + 6;
}
printf("%d %d\n", p[0][0], p[0][1]);
}
不知道楼主什么意思,就二个数而已,犯不着用二维数组吧?但是既然楼主要求,我就写了一个,不知道楼主满意不?
板凳
Gooluckd [专家分:20] 发布于 2010-11-26 18:07:00
可能是我表达得不清楚吧,你写的基本上不符合我的要求...但还是先谢谢你!
我的意思不是要两个数的二维数组,我是用sercet_draw()先生成二个随机数,再以第一个随机数为新二维数组的行,第二个随机数为列,声明新的二维数组,但是我每次声明都有错误,不知道为什么。。。
3 楼
强强 [专家分:4740] 发布于 2010-11-26 19:21:00
声明与定义是编译时做的工作,程序都运行了还声明个啥?用动态数组malloc,free或者new,delete
4 楼
cfj469933485 [专家分:950] 发布于 2010-11-28 15:37:00
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int p[1][2];
int **p1;
int i, j;
srand((unsigned)time(NULL));
//利用随机数函数生成两个随机数
for(i = 0; i < 2; i ++)
{
p[0][i] = rand() % 4 + 6;
}
//打印这两个随机数
printf("%d %d\n", p[0][0], p[0][1]);
//利用动态分配二维数组
p1 = (int **)malloc(sizeof(int *) * p[0][0]);//先分配第一维
for(i = 0; i < p[0][0]; i ++)//再分配第二维
{
p1[i] = (int *)malloc(sizeof(int) * p[0][1]);
}
//用随机数函数赋值给二维数组
for(i = 0; i < p[0][0]; i ++)
{
for(j = 0; j < p[0][1]; j ++)
{
p1[i][j] = rand() % 4 + 6;
}
}
//打印二维数组
for(i = 0; i < p[0][0]; i ++)
{
for(j = 0; j < p[0][1]; j ++)
{
printf(" %2d", p1[i][j]);
}
printf("\n");
}
printf("\n");
for(i = 0; i < p[0][0]; i ++)//先释放第二维
{
free(p1[i]);
}
free(p1);//再释放第一维
system("pause");
return 0;
}
//我根据楼主的意思编写了此函数,不知道这次符合要求没。
我来回复