Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用C语言打印和填充二维数组_C_Arrays_Random_2d_Multidimensional Array - Fatal编程技术网

用C语言打印和填充二维数组

用C语言打印和填充二维数组,c,arrays,random,2d,multidimensional-array,C,Arrays,Random,2d,Multidimensional Array,原始帖子: 好的,这是我做过的一个练习,我理解了它的工作原理,但是我有一个任务,我必须用随机数填充数组,然后打印出来,并且能够搜索数组中的特定数字(查询)并在输入的位置打印数字。 数组需要是5行10列,所以我知道在我的定义中,我需要相应地更改4和5。但是,我不知道如何在数组中的每个位置生成一个随机数。我知道必须在某个地方使用以下内容,但我不太确定它应该在代码中的什么位置或如何使用。我还必须使用函数…并生成一个菜单,供用户选择操作,一个用于填充、打印、查询和终止。我显然需要用一个变量替换数组中的位

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

编辑文章:

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

菜单

选择以下选项之一:

F.用随机数序列填充数组

p.打印数组

查询数组

Z.终止程序

最后是一个“M”来回忆菜单

一些参数:

--fill选项将填充50个整数的数组 具有 范围内的随机数 1…999

**每次执行fill选项时,它都会用一个新的 随机数系列

--打印阵列将数字打印到屏幕上

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

编辑代码:

/* 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
/*生成一个随机数排列*/
#包括
#包括
#定义ARY_尺寸20
//函数声明
void bldPerm(int randomNos[]);
void printData(int data[],int size,int lineSize);
内部主(空)
{
//本地声明
国际随机数字[ARY_大小];
//声明
printf(“开始随机数置换生成\n”);
bldPerm(randNos);
打印数据(randNos,ARY_尺寸,10);
返回0;
}//主要
/*==================================bldPerm======================*/
无效bldPerm(整数随机数[])
{
//劳工处
int oneRandNo;
int haveRand[ARY_SIZE]={0};
//声明
对于(int i=0;i=线宽)
{
printf(“\n”);
numPrinted=0;
}//如果
}//为了
printf(“\n”);
回来
}//打印数据

我认为这是一个不适合此类问题的论坛,但无论如何

第一次尝试:

1) 删除QuizCores的初始化 2) 使用srand(time(NULL))初始化种子;记住要包括时间 2) 使用rand()%100创建用于初始化元素的双for循环。这将给出0到100之间的随机数


对于这个菜单,我建议使用getchar()使用while look和query来查询操作。

以下是所有数组问题的简单开始。必须实现的菜单应该处理switch语句,然后处理其相应的函数调用

#include <time.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>

bool searchArray(int *A, int m, int n, int key){
    int i, j;
    for (i = 0; i < m; i++)
        for (j = 0; j < n; j++)
            if ( (*((A+i*n)+j)) == key )
                return true;
    return false;
}

void printArray(int *A, int m, int n){
    int i, j;
    for (i = 0; i < m; i++){
        for (j = 0; j < n; j++){
            printf("(%d) ", *((A+i*n)+j));
        }
        printf("\n");
    }
}

void fillArray(int *A, int m, int n){
    int i, j;
    time_t t;
    srand(time(&t));

    for (i = 0; i < m; i++)
        for (j = 0; j < n; j++)
            *((A+i*n)+j) = rand() % 100;
}

int main(){
    int m = 5, n = 10, key = 10, A[m][n];
    bool found = false;

    fillArray((int *)A, m, n);
    printArray((int *)A, m, n);
    found = searchArray((int *)A, m, n, key);

    if ( found == true ){
        printf("%d was in the array!\n", key);
    } else {
        printf("%d was not in the array!\n", key);
    }

    return 0;
}
#包括
#包括
#包括
#包括
布尔搜索数组(int*A、int-m、int-n、int-key){
int i,j;
对于(i=0;i
我对你的问题不是很清楚。听起来像是在问:如何生成随机数并用它们填充数组,以及如何将单个主函数分解为几个较小的函数。这些都是非常基本的任务,你有没有做过任何研究或尝试过其中任何一项?我发布了一些编辑过的代码,关于我现在所拥有的以及预期的内容,希望这能澄清一些问题。谢谢。@th3doormat如果可以填充数组,则可以搜索并打印整个数组。记住这一点。