回 帖 发 新 帖 刷新版面

主题:二维数组的问题

菜鸟请教大侠,怎么用
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个回复)

沙发

#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]);
}
不知道楼主什么意思,就二个数而已,犯不着用二维数组吧?但是既然楼主要求,我就写了一个,不知道楼主满意不?

板凳


  可能是我表达得不清楚吧,你写的基本上不符合我的要求...但还是先谢谢你!
  我的意思不是要两个数的二维数组,我是用sercet_draw()先生成二个随机数,再以第一个随机数为新二维数组的行,第二个随机数为列,声明新的二维数组,但是我每次声明都有错误,不知道为什么。。。

3 楼

声明与定义是编译时做的工作,程序都运行了还声明个啥?用动态数组malloc,free或者new,delete

4 楼

#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;
}
//我根据楼主的意思编写了此函数,不知道这次符合要求没。

我来回复

您尚未登录,请登录后再回复。点此登录或注册