-1

C を使い始めたばかりでfor、bool を返す関数内でループする単純なループを取得できません。プログラムは単純な推測ゲームです。

これが私のコードです:

//standard input and output header
#include <stdio.h>
#include <conio.h>
#include <stdbool.h>

bool CheckGuess(int guess, int nums[]);

int main(void)
{
int nums[5];
int i;
int userGuess;

for (i = 0; i < sizeof(nums)/sizeof(int); i++)
{
    nums[i] = 1 + rand() % 5;
}

printf("Guessing Game\n\n");

printf("Guess a number between 1 and 5: ");
scanf("%d", &userGuess);

if (CheckGuess(userGuess, nums))
{
   printf("You win!");
}
else
{
    printf("You lose!\nThe correct numbers are:\n\n");
    for (i = 0; i < sizeof(nums)/sizeof(int); i++)
    {
        printf("%d\n", nums[i]);
    }
}

//get character, wait/pause
getch();
}

bool CheckGuess(int guess, int nums[])
{
 int z;
 for (z = 0; z < sizeof(nums)/sizeof(int); z++)
 {
     printf("%d\n", z); //z just stops at 0 all the time

    if (guess == nums[z])
    {
              return true;  
    }
  }
  return false;
}
4

1 に答える 1

4

CheckGuess() を記述するときは、次のようにする必要があります。

bool CheckGuess(int guess, int nums[], int numsCount)

そして、次のように呼び出します。

if (CheckGuess(userGuess, nums, sizeof nums / sizeof *nums)

Checkguess はサイズを「受け取っていません」。その関数内では、それは単なるポインターです。

于 2013-08-27T15:59:47.863 に答える