我試圖以隨機順序生成數字1-7並將它們添加到數組。我的代碼應該生成數字,檢查生成的數字是否已經在數組中,如果沒有,則將數字添加到數組中。唯一沒有正常工作的陣列位置是n [0]。我一直在努力解決問題,但我卡住了,任何幫助將不勝感激。最後3次,我跑我的程序:程序正在比較和正常工作,除了陣列[0]
3, 1, 5, 2, 3, 4, 7
6, 1, 3, 7, 5, 2, 6
5, 1, 7, 3, 6, 2, 5
這裏是產生一個隨機數
int * randomize()
{
static int n[7];
int i = 0;
int j = 0;
int check = 0;
int check2;
srand((unsigned)time(NULL));
for(i = 0; i < 7; i++)
{
check = (rand() % 7);
check += 1;
for(j = 0; j < 7; j++)
{
check2 = (int) n[j];
if(check == check2)
{
check = (rand() % 7);
check += 1;
j = 0;
}
}
n[i] = check;
j = 0;
}
return n;
}
代碼這裏是代碼來調用從主功能和打印陣列
int *r;
r = randomize();
for(i = 0; i < 7; i++){
printf("%i\n", *(r + i));
}
附註:通常只需要使用1-7填充數組並且比shuffle更好,對於少數條目填充最後幾個元素也不會永遠佔用......下面是C#示例http:// stackoverflow。 com/questions/1150646/card-shuffling-in-c-sharp,但對於任何遠程感知c風格語法的人來說,答案應該是可讀的。 –
與你的問題無關,但爲什麼在這裏強制轉換check2 =(int)n [j];'? –
我包含check2 =(int)n [j]部分是我在嘗試排除問題時包含的內容。我想也許它只是不準確地比較事情,因爲我試圖比較不兼容的類型。之後,我縮小了它與n [0]的問題,但並沒有改變它。 – Shaine