用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如果可以填充数组,则可以搜索并打印整个数组。记住这一点。