1

编写一个模拟两个模具滚动的程序。然后应计算两个值的总和并将其放置在单下标数组中。打印数组。还要找出 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;
}
打印屏幕
值总和频率
       2 36001
       3 0
       4 0
       5 0
       6 0
       7 0
       8 0
       9 0
      10 0
      11 0
      12 0

怎么了 ???

4

4 回答 4

5

这条线

 ++frequency[ face ];

总是增加相同的位置,因为循环不会改变face你应该做的事情

++frequency[die1+die2];

另外我不知道你为什么两者都有frequency,有counter什么区别?

编辑:就像有人指出的那样,face根本没有初始化(除非您删除了一些代码)。

于 2012-05-02T19:42:39.963 回答
2
++frequency[ face ];

face尚未初始化。

于 2012-05-02T19:43:23.110 回答
0

您似乎没有初始化face.

然后你反复访问frequency[ face ]

于 2012-05-02T19:44:20.533 回答
0

face尚未初始化。它总是将频率添加到同一位置,因此您只得到两个骰子总和的 1 的计数

于 2012-05-02T19:45:13.837 回答