[英]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.