我想確定爲什麼向數組寫入隨機值導致問題。爲什麼在向數組寫入值時出現錯誤?
其實我問[R and()
1至10個之間產生的數字(rand() %10 +1
,與srand(time(NULL))
前)和第一個值始終高於10:這是一個隨機過,我真的不知道該怎麼10和20之間。以解決這個問題,因爲它看起來像是rand
和srand
函數的問題。不過這是我的代碼:
編輯:正確的代碼,現在
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZEA 100
#define SIZEFREQ 10
int main()
{
int a[SIZEA]={0},frequency[SIZEFREQ]={0};
int i,temp,gothrough;
srand(time(NULL));
for(i=0;i<=SIZEA-1;i++)
{
a[i]=rand() %10 +1;
++frequency[a[i]-1];
}
printf("These are the elements in the vector:\n");
for(i=0;i<=SIZEA-1;i++)
{
printf("%3d,",a[i]);
}
printf("\nLet's try to put them in order\n");
for(gothrough=0;gothrough<=SIZEA-1;gothrough++)
{
for(i=0;i<=SIZEA-2;i++)
{
if (a[i]>a[i+1])
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
}
for(i=0;i<=SIZEA-1;i++)
{
printf("%3d,",a[i]);
}
printf("\n\nValue Frequency\n");
for(i=0;i<=SIZEFREQ-1;i++)
{
printf("%5d%10d\n",i+1,frequency[i]);
}
return 0;
}`
'rand()%10 + 1'可以返回'[1; 10]'區間之外的值。我已經運行了你的代碼,它似乎工作得很好。 – NPE
最後一個循環將輸出未定義行爲的頻率[11]。這可能是你困惑的根源嗎? – 2011-11-27 16:36:34
當您添加新代碼*爲什麼*您保留了不正確的版本?如果任何人想看看曾經在那裏的東西,他們可以看看編輯歷史記錄(點擊它表示「已編輯的時間戳」的時間)。 – dmckee