簡體   English   中英

在C中打印和填充2D數組

[英]Printing and filling a 2D array in C

原始帖子:
好的,這是我練習過的一個練習,並了解了它的工作原理,但是我要分配一個任務,我必須用隨機數填充數組,然后打印出來,並能夠在數組中搜索特定號碼(查詢)並在輸入的位置打印該號碼。
該數組需要為5行10列,因此我知道在定義中需要相應地更改4和5。 但是,我不確定如何在數組中的每個位置生成隨機數。 我知道以下內容必須在某個地方使用,但是我不太確定代碼應如何或在何處使用。 我還必須使用函數...並生成一個菜單,供用戶從中選擇操作,其中一個用於填充,打印,查詢和終止。 我顯然需要用變量替換數組中的位置,以使位置取決於隨機數生成器,同時仍要確保它們是隨機的並且不完全相同。 (0-999)

編輯后:

好的,現在我已經能夠使數組填充和存儲隨機數,我需要相應地調整值以使其與數組的尺寸和范圍相匹配,但這是一個開始。 但是,我現在需要創建一個菜單,以提示用戶輸入字符並執行諸如以下的任務:

菜單

選擇以下選項之一:

F.用隨機數序列填充數組。

P.打印陣列。

問:查詢數組。

Z.終止程序。

最后是一個“ M”來調用菜單

一些參數:

-fill選項將填充一個由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

我認為這是針對此類問題的錯誤論壇,但無論如何。

第一次嘗試:

1)刪除quizScores的初始化2)使用srand(time(NULL))初始化種子; 記住要包括time.h 2)創建一個double for循環,以使用rand()%100初始化元素。 這將給出0到100之間的隨機數。

通過菜單,我建議您使用一會兒外觀並使用getchar()查詢操作

這是所有陣列問題的簡單開始。 您必須實現的菜單應該處理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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM