2015-10-10 23 views
-1

我正在做一个学校作业,不知道如何进行,而不知道如何去做我在标题中提出的问题。我被授予了代码(由我的教授)来运行并打印掷骰子(1-6)。如何将我从函数获得的值分配给c中的整数?

void showDice (int num) { 
    int diceRoll; 
    srand(time(NULL)); 
    diceRoll = (rand() %6) +1; 
    printf("%d\n", diceRoll); 
    } 

我知道如何调用它的主要功能(showDice(0);),并且打印出来。但我需要知道如何将它作为一个int(或另一个变量),以便我可以将它添加到总计(或计数器)变量。

谢谢

+4

由于它的功课,我不会为你做,但你的函数需要返回的东西。这应该指向正确的方向 – dman2306

+0

另一种方法是将指针传递给'num',以便在原始地址处的值得到更新。 (即'void showDice(int * num);')然后在函数'* num = diceRoll;'的末尾。然后你将''''中的'diceRoll'的值返回到'main()'中。 –

+1

[srand() - 为什么只调用它一次](http://stackoverflow.com/q/7343833/995714) –

回答

1

您可以简单地返回它。喜欢的东西,

int showDice (int num) { 
    int diceRoll; 
    srand(time(NULL)); 
    diceRoll = (rand() % 6) + 1; 
    printf("%d\n", diceRoll); 
    return diceRoll; 
} 

另外,如果您打算num是边数,

int showDice (int num) { 
    int diceRoll; 
    srand(time(NULL)); 
    diceRoll = (rand() % num) + 1; 
    printf("%d\n", diceRoll); 
    return diceRoll; 
} 

最后,你应该只调用srand一次(在程序启动时)。

+0

如果我只是简单地返回它,我怎么会在主函数中调用它?就像其他任何整数一样?所以我会做一些像showdice(0); printf(“%d”,diceRoll); –

+0

类似于'int roll = showDice(6); printf(“%d \ n”,roll);' –

+0

会给我一个随机数吗?或只是6? –

0

您可以只返回它(而不是打印出来):

int rollDice(int num) { 
    int diceRoll; 
    srand(time(NULL)); 
    diceRoll = (rand() %6) +1; 
    return diceRoll; 
} 

删除一些多余的东西,如果num是边数:

int rollDice(int num) { 
    srand(time(NULL)); 
    return (rand() % num) + 1; 
} 
+2

'srand'调用应该(重新)移动。 – 5gon12eder

0

你能做些什么将函数的类型更改为int,以便您可以返回值,并在函数结尾处简单地返回diceRoll:

int showDice(int num) { 
int diceRoll; 
diceRoll = (rand() %6) +1; 
printf("%d\n", diceRoll); 
return (diceRoll); 
} 

然后,你可以调用你的函数类似这样(注意函数srand只应调用一次):

int main() { 
int rollDice; 
srand(time(NULL)); 
rollDice = showDice(0); 
} 
+1

'srand'调用应该(重新)移动。 – 5gon12eder

+0

是真的,我错过了。 – Guillaume

相关问题