2013-08-27 44 views
-1

我刚刚开始使用C,我无法得到一个简单的for循环内循环函数返回一个布尔。该计划是一个简单的猜谜游戏。for循环不会循环函数内部 - C

这里是我的代码:

//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; 
} 
+0

这个条件'sizeof(nums)/ sizeof(int)'看起来相当可疑。你能解释一下你想用这个做什么吗? – FrustratedWithFormsDesigner

+1

您是否尝试过打印sizeof(nums)?对于术语“阵列衰减”加上一个快速谷歌应该让你去。 – stonemetal

+0

[C编程语言中的数组的大小?](http://stackoverflow.com/questions/1975128/sizeof-an-array-in-the-c-programming-language) – Blastfurnace

回答

4

当你写CheckGuess(),你需要做的是这样的:

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

,然后用调用它:

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

Checkguess不是“接收”大小。在这个函数里面,它只是一个指针。

+1

+1,但是'numSize'对我来说至少是一个非常奇怪的名字。我知道它是“nums'的大小”,但我认为'numsLength'或'numsCount'或其他什么会更清楚。 – unwind

+0

也增加了原因'int nums []'不是函数参数中的数组 –

+0

@unwind - 我做了更改 – dcaswell