编写一个模拟两个模具滚动的程序。然后应计算这两个值的总和并将其放在单下标数组中。打印阵列。还可以找到12次出现的次数。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 13
int main()
{
int face;
int arraysize=13;
int counter[13];
int frequency[ SIZE ]= {13};
for(int i=0; i<13; i++)
counter[i] = 0;
int die1;
int die2;
srand( time( NULL ) );
for ( int roll1 = 0; roll1 <=36000; roll1++ ) {
die1 = 1 + rand() % 6;
die2 = 1 + rand() % 6;
counter[die1+die2]++;
++frequency[ face ];
}
printf("%4s%17s\n","Sum of Values","Frequency");
for(int face=2; face<arraysize;face++)
{
printf("%8d%17d\n",face,frequency[ face ]);
}
system("PAUSE");
return 0;
}
PRİNT SCREEN Sum of Values Frequency 2 36001 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 11 0 12 0
什么不对???
答案 0 :(得分:5)
这一行
++frequency[ face ];
总是递增相同的位置,因为循环不会改变你应该做的事情face
的值
++frequency[die1+die2];
另外,我不知道为什么frequency
和counter
有什么区别?
编辑:就像有人指出的那样face
根本没有初始化(除非你删除了一些代码)。
答案 1 :(得分:2)
++frequency[ face ];
face
尚未初始化。
答案 2 :(得分:0)
您似乎没有初始化face
。
然后您反复访问frequency[ face ]
。
答案 3 :(得分:0)
face
尚未初始化。它总是将频率添加到相同位置,因此您只能得到两个骰子总和中的1个