簡體   English   中英

初學者編寫 C 代碼來編寫一輪 yahtzee,function 來保存骰子值?

[英]Beginner writing C code to program a round of yahtzee, function to hold dice values?

我剛開始學習 C 代碼,我的作業有一些問題。 我需要一個 function 來保存骰子值。 我已經為它編寫了代碼,但是一旦我嘗試將它放入一個函數(keepArray)中,它似乎對我不起作用。 這是我到目前為止所擁有的。 如果沒有 function,它似乎可以工作。 當我將它放入 function 時,沒有保存任何值。

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

int main(void) {
  const int NUM_ELEMENTS = 4;

  int diceArray[NUM_ELEMENTS];
  int keepArray[NUM_ELEMENTS];

  int i = 0;

  for (i = 0; i <= NUM_ELEMENTS; i++) {
    diceArray[i] = (rand() % 6) + 1;
    printf("%d ", diceArray[i]);
  }
  printf("\n");

  for (i = 0; i <= NUM_ELEMENTS; i++) {
    scanf("%d", &keepArray[i]);
    if (keepArray[i] == 1) {
      keepArray[i] = diceArray[i];
    }
    if (keepArray[i] == 0) {
      keepArray[i] = (rand() % 6) + 1;
    }
  }

  for (i = 0; i <= NUM_ELEMENTS; i++) {
    diceArray[i] = keepArray[i];

    printf("%d ", diceArray[i]);
  }

  return 0;
}

所以我出於沮喪刪除了我的功能,但我一開始並沒有走得太遠。 這是我的功能可能是什么樣子的嘗試。 它主要是上述代碼的復制粘貼。

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


  const int NUM_ELEMENTS = 5;



  int diceArray[NUM_ELEMENTS];



  int keepArray[NUM_ELEMENTS];


  int i = 0;

void

Roll(){
  for (i = 0; i < NUM_ELEMENTS; i++)


    {



      diceArray[i] = (rand () % 6) + 1;



      printf ("%d ", diceArray[i]);

}

    }



Reroll(){


for (i = 0; i < NUM_ELEMENTS; i++)

    {

      scanf ("%d", &keepArray[i]);
      if (keepArray[i] == 1)
    {
      keepArray[i] = diceArray[i];
    }
      if (keepArray[i] == 0)
    {
      keepArray[i] = (rand () % 6) + 1;
    }
    }
  for (i = 0; i < NUM_ELEMENTS; i++)
    {
      diceArray[i] = keepArray[i];

      printf ("%d ", diceArray[i]);

}
    }
    int main(void)
    {
        Roll();
        Reroll();
}

我之前確實弄亂了我的函數,得到了某種 output,但我認為它仍然是基於不正確的代碼。 For the code now, I get and error "main.c:9:7: error: variably modified 'diceArray' at file scope int diceArray[NUM_ELEMENTS]; ^~~~~~~~~ main.c:13:7 :錯誤:在文件 scope int keepArray[NUM_ELEMENTS] 中可變地修改了“keepArray”;^~~~~~~~~~ main.c:40:1:警告:返回類型默認為“int”[-Wimplicit-int] Reroll (){ ^~~~~~"

const int NUM_ELEMENTS = 5; 不能用於 C 中的靜態尺寸 arrays。 當將其用作數組大小時,它會嘗試創建“可變長度數組”(文件 scope 中不允許,因為錯誤告訴您)。
您可以通過將其設為“真實”常量來解決此問題,例如:

  #define NUM_ELEMENTS 5;
  int diceArray[NUM_ELEMENTS];
  int keepArray[NUM_ELEMENTS];

或者,

  enum  { NUM_ELEMENTS = 5 };
  int diceArray[NUM_ELEMENTS];
  int keepArray[NUM_ELEMENTS];

你也忘了為你的 Reroll Reroll添加一個返回類型,它應該是void Reroll(void)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM