我们的任务是编写一个代码,每掷骰子都会产生1-6范围内的随机数。将骰子“滚动” 50次,并记录骰子落在1-6的某个数字上的次数。
但是我们需要使用静态局部变量,而且我无法让该程序记录生成某个数字的次数。输出应该是每当生成一个数字(例如5)时,freq5等于1并在再次生成数字5时增加。
#include <stdio.h>;
void get_dice_face();
int main(void)
{
int i;
printf("주사위 던지기 시작합니다\n");
for (i = 0; i < 50; i++)
get_dice_face();
return 0;
}
void get_dice_face()
{
int face;
static int freq1 = 0, freq2 = 0, freq3 = 0, freq4 = 0, freq5 = 0, freq6 = 0;
face = 1 + rand() % 6;
printf("현재 주사위 면: %d\n", face);
printf("면 별 나온 횟수: \n");
switch (face)
{
case '1':
freq1++;
break;
case '2':
freq2++;
break;
case '3':
freq3++;
break;
case '4':
freq4++;
break;
case '5':
freq5++;
break;
case '6':
freq6++;
break;
}
printf("1: %d\t2: %d\t3: %d\t4: %d\t5: %d\t6: %d\n\n", freq1, freq2, freq3, freq4, freq5, freq6);
}
答案 0 :(得分:3)
在switch语句中,您正在将face
值与字符常量'1'
而不是整数值1
进行比较。只需更改为:
switch (face)
{
case 1:
freq1++;
break;
case 2:
freq2++;
break;
...
}
答案 1 :(得分:2)
只需删除转换案例中的引号即可。
您正在生成随机整数,但您的转换案例检查字符。您的问题与静态变量无关。
答案 2 :(得分:-4)
在每次调用get_dice_face()时,您都将freq1,freq2等设置为零,这就是为什么他们不记录您的50卷结果的原因