2015-10-10 26 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

相關問題