在C中打印和填充2D阵列

时间:2014-04-15 14:46:10

标签: c arrays random 2d multidimensional-array

原始邮件:
好的,所以这是我练习的一个练习并理解它是如何工作得很好的,但是我有一个任务,我必须用随机数填充一个数组然后打印出来,以及能够搜索数组特定数字(查询)并在输入的位置打印数字 数组需要5行10列,所以我知道在我的定义中我需要相应地更改4和5。但是,我不知道如何在数组中每个位置生成一个随机数。我知道必须在某处使用以下内容,但我不太确定它应该在代码中的位置和位置。我还必须使用函数...并生成一个菜单供用户选择操作,一个用于填充,打印,查询和终止。我显然需要用变量替换数组中的位置,以使位置依赖于随机数生成器,同时仍然确保它们是随机的而不是全部相同。 (0-999)

编辑后:

好的,所以我现在能够让数组填充并存储随机数,我需要相应地调整它们以使它们与数组的大小和范围相匹配,但它是一个开始。但是,我现在需要创建一个菜单,我可以提示用户输入字符并执行以下任务:

  

MENU

     

选择以下选项之一:

     

F。用随机数字序列填充数组。

     

P上。打印阵列。

     

Q值。查询数组。

     

ž。终止程序。

最终是一个' M'召回菜单

一些参数:

- 填充选项将填充50个整数的数组 同 范围内的随机数 1 ... 999。

**每次执行填充选项时,它都会用新的填充数组 随机数系列。

- 打印数组会将数字打印到屏幕上。

- 查询将要求用户输入位置(索引),然后打印该号码 在那个位置。如果用户输入无效位置,则会打印一条消息 这样说。

编辑代码:

/* Generate a random number permutation.*/

 #include < stdio.h >

 #include < stdlib.h >

 #define ARY_SIZE 20

//Function Declarations

void bldPerm (int randomNos[]);

void printData (int data[], int size, int lineSize);

int main(void)

{

//Local Declarations

    int randNos[ARY_SIZE];

//Statements

    printf("Begin Random Numbers Permutation Generation\n");

    bldPerm (randNos);

    printData (randNos, ARY_SIZE, 10);

    return 0;
}//main

/*=====================bldPerm======================*/


void bldPerm(int randNos[])

{

//LD's

    int oneRandNo;

    int haveRand[ARY_SIZE] = { 0 };


//Statements

    for (int i = 0; i < ARY_SIZE; i++)

        {

        do

            {
            oneRandNo = rand() % ARY_SIZE;

        } while (haveRand[oneRandNo] == 1);

        haveRand[oneRandNo] = 1;

        randNos[i] = oneRandNo;

    } //for

    return;

}//bldPerm

/*=====================printData======================*/

void  printData(int data[], int size, int lineSize)

{

//LD's

    int numPrinted = 0;

//Statements

    printf(" \n ");

    for (int i = 0; i < size; i++)

        {

        numPrinted++;

        printf(" %2d ", data[i]);

        if (numPrinted >= lineSize)

            {

            printf(" \n ");

            numPrinted = 0;

            }//if

        }//for

    printf(" \n ");

    return;

}//printData

2 个答案:

答案 0 :(得分:0)

我认为这是这类问题的错误论坛,但无论如何。

首先尝试:

1)删除quizScores的初始化 2)使用srand(time(NULL))初始化种子;记得包括time.h 2)使用rand()%100进行双循环以初始化元素。这将给出0到100之间的随机数。

使用菜单,我建议使用getchar()

稍微查看和查询操作

答案 1 :(得分:0)

这是您所有阵列问题的简单开始。您必须实现的菜单应该处理switch语句,然后处理相应的函数调用。

class template MyClass<float>