Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.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 - Fatal编程技术网

C 创建幸运数字猜测游戏(将数组传递给函数/调用函数)

C 创建幸运数字猜测游戏(将数组传递给函数/调用函数),c,C,我在一个猜测游戏中遇到了一些问题,该游戏使用随机整数填充数组,然后让用户尝试猜测数组中的数字。我相信我大部分都是正确的,但程序不会超出“初始化幸运数字…”打印命令的范围,以检查我的功能是否正常工作。我相信问题要么在于我如何将数组传递给函数,要么在于我如何调用函数(可能是在它们的原型中?),任何帮助都将不胜感激。 这是我的第一篇文章,如果我不能正确地包含代码,我深表歉意。谢谢大家! #include <stdio.h> #include <conio.h> #include

我在一个猜测游戏中遇到了一些问题,该游戏使用随机整数填充数组,然后让用户尝试猜测数组中的数字。我相信我大部分都是正确的,但程序不会超出“初始化幸运数字…”打印命令的范围,以检查我的功能是否正常工作。我相信问题要么在于我如何将数组传递给函数,要么在于我如何调用函数(可能是在它们的原型中?),任何帮助都将不胜感激。 这是我的第一篇文章,如果我不能正确地包含代码,我深表歉意。谢谢大家!

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

/*
This program is a lucky number guessing game. A series of unique, random numbers 
will be generated and stored in an array. Users will have up to three chances to
guess a number stored in the array.*/

//Function Prototypes
int fillArray (int,int []);
int searchArray (int, int []);
int printArray (int, int []);

int main(){
 const int MAX = 25;
 int iArray[MAX]={0};
 int count;

 printf("Initializing lucky numbers...");
 //printf("%d", iArray[0]);
 //for(count=0;count<MAX;count++){
   //printf("%d ",iArray[count]);
 //}//end for loop
 fillArray(MAX,iArray);
 //ONLY TO CHECK ARRAY CONTENTS
 //printf("%d",iArray[0]);
 //for(count=0;count<MAX;count++){
 //  printf("%d ",iArray[count]);
 //}//end for loop
 //CARRY ON WITH PROGRAM
 searchArray(MAX,iArray);

 getch();
 return 0;   
}

//Function Definitions

//Fill Array Function
int fillArray(int max,int Array[]){
    int i;
    int j;
    int uniqueFlag;
    int random;
    srand(time(NULL));

    for(i = 0; i < max; i++) {
     /* Assume things are unique... we'll reset this flag if not. */
     uniqueFlag = 1;
     do {
        random = (rand() % 101);
        /* This loop checks for uniqueness */
        for (j = 0; j < i && uniqueFlag == 1; j++) {
           if (Array[j] == random) {
              uniqueFlag = 0;
           }//end if statement
        }//end for loop
     } while (uniqueFlag != 1);
     Array[i] = random;
}//end while
//ONLY TO CHECK ARRAY CONTENTS
printf("%d",Array[0]);
printf("\n%d\n",Array[1]);
for(i=0;i<max;i++){
  printf("%d ",Array[i]);
}//end for
}//end function

//Search Array Function
int searchArray(int max, int Array[]){
    int i;
    int guessCounter=0;
    int iGuess;
    do{
       printf("Please guess a number between 0 and 100: ");
       scanf("%d",&iGuess); 
       for(i=0;i<max&&guessCounter<3;i++){
          if(Array[i] == iGuess){
              printf("Correct");
              guessCounter = 3;
              }//end if
          else{
               printf("%d is not one of the lucky numbers.\n",iGuess);
               guessCounter++;
               }//end else
               }//end for
    }while(guessCounter < 3); //end do-while loop
    if(guessCounter==3){
        printf("Sorry! You lose!\n");
        printArray(max, Array);
        }//end if
}//end function   

//Print Array Function
int printArray(int max, int Array[]){
    int i;
    printf("Array contents: ");
    for(i=0;i<max;i++){
       printf("%d ",Array[i]);
    }//end for
}//end function
#包括
#包括
#包括
#包括
/*
这个程序是一个猜幸运数字的游戏。一系列唯一的随机数
将生成并存储在数组中。用户将有多达三次机会
猜测数组中存储的数字*/
//功能原型
int fillArray(int,int[]);
int搜索数组(int,int[]);
int打印数组(int,int[]);
int main(){
常数int MAX=25;
int iArray[MAX]={0};
整数计数;
printf(“初始化幸运数字…”);
//printf(“%d”,iArray[0]);

//为了(count=0;count
uniqueFlag
需要在您选择随机数时重置,而不仅仅是在
fillArray
的外部循环的开始处,我第一眼看不出
searchArray
是否有问题,所以您应该简化它。我建议将整个
uniqueFlag
部分移到它上面s自己的函数,
doesArrayContain
也许?

谢谢大家!对于任何正在检查或有类似问题的人,我已经包含了我的更正。我能够在一个名为checkArray的单独函数中检查唯一的数字,并通过从fillArray函数返回一个指针以及其他一些函数来解决我的fillArray问题(包括)调整

#包括
#包括
#包括
#包括
//功能原型
int fillArray(int,int[]);
int校验数组(int,int,int[]);
int搜索数组(int,int[]);
int打印数组(int,int[]);
int main(){
常数int MAX=25;
int iArray[MAX]={0};
整数计数;
printf(“初始化幸运数字…\n”);
fillArray(最大值,iArray);
searchArray(MAX,iArray);
getch();
返回0;
}
//函数定义
//填充数组函数
整数填充数组(整数最大值,整数数组[]){
整数;
int i=0;
国际唯一旗帜;
srand(时间(空));

while(我感谢你。我的循环技能仍然有点弱,这很有帮助。啊,谢谢你。这是一个很好的建议。把它分成更简单的部分来完成/检查会让它更容易!对不起,我是说“fillArray”。适当的缩进和更大的空格使用也会帮助避免我犯的这样的错误。更不用说“//结束函数”注释。。。
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>


//Function Prototypes
int fillArray (int, int []);
int checkArray (int, int, int []);
int searchArray (int, int []);
int printArray (int, int []);

int main(){
 const int MAX = 25;
 int iArray[MAX]={0};
 int count;

 printf("Initializing lucky numbers...\n");
 fillArray(MAX,iArray);
 searchArray(MAX,iArray);

 getch();
 return 0;   
}

//Function Definitions

//Fill Array Function
int fillArray(int max, int Array[]){
int number;
int i=0;
int uniqueFlag;
srand(time(NULL));

while(i<max){
     number = (rand() % 101);
     if(checkArray(max, number, Array)==0){ //passes to another function to check for uniqueness
          Array[i]=number;
          ++i;
     }//end if
}//end while
return *Array;
}//end function

//Check Array Function
int checkArray(int max, int number, int Array[]){
int i;
int uniqueFlag;
for(i=0;i<=max;i++){
     if(Array[i]==number){  //determines if random number has already been used in array
          uniqueFlag = 1;
          return uniqueFlag;
     }//end if
     else{
          uniqueFlag = 0;
     }//end else
}//end for
     return uniqueFlag;
}//end function

//Search Array Function
int searchArray(int max, int Array[]){
int i;
int x=0;
int guessCounter=0;
int iGuess;

while(x !=1 && guessCounter<3){
       printf("Please guess a number between 0 and 100: ");
       scanf("%d",&iGuess);
       for(i=0;i<max;i++){
            if(iGuess==Array[i]){
                 x = 1;
                 }//end if
       }//end for
       switch(x){
          case 1:
               printf("%d is one of the lucky numbers. Congratulations! You win!", iGuess);
               printArray(max, Array);
               getch();
               return 0;
          default:
               printf("%d is not one of the lucky numbers.\n",iGuess);
               ++guessCounter;
          }//end switch statement
          }//end while condition
if(guessCounter==3){   //condition limits to 3 guesses per run
          printf("Sorry! You lose!");
          printArray(max, Array);
          }//end if   
}//end function

//Print Array Function
int printArray(int max, int Array[]){
int i;
printf("\nArray contents: ");
for(i=0;i<max;i++){
   printf("%d ",Array[i]);
}//end for
//getch();
//return 0;
}//end function