c中的switch case语句没有给出结果

时间:2017-07-11 17:33:46

标签: c switch-statement selection

编辑:游戏的名称是掷骰子游戏,而不是废话。 感谢所有试图提供帮助的人,我忘了将ctrl = 1赋值放入for循环中。

我无法从这个垃圾游戏中得到想要的结果。这是代码:

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int rolldice();

int main() {
srand(time(NULL));
int n;
float winrate;
float lossrate;
long int i;
long int ctrw,ctrloss;
ctrw= 0;
ctrloss= 0;
int ctrl= 1;
for(i=0;i<100000;i++) {
    while(ctrl!=0) {
        n= rolldice();
        switch(n) {
            case 7:
            case 11:
            ctrw++;
            ctrl= 0;
            break;
            case 2:
            case 3:
            case 12:
            ctrloss++;
            ctrl= 0;
            break;
            default:
            ctrl= 1;
            break;
        }
    }
}
winrate= (float)ctrw/i * 100.0;
lossrate= (float)ctrloss/i * 100.0;
printf("Win rate is %.2f, loss rate is %.2f.",winrate,lossrate);
system("pause");
return 0;
}

int rolldice() {
    int a= (rand()%6)+1;
    int b= (rand()%6)+1;
    return a+b;
}

如图所示,我试图通过播放100000次来计算此游戏的输赢率。但打印的是:赢率为0.00,损失率为0.00。 可能是一个简单的错误,但我找不到,也不想失去更多的时间。

1 个答案:

答案 0 :(得分:3)

您需要更改此

for(i=0;i<100000;i++) {
    while(ctrl!=0) {

for(i=0;i<100000;i++) {
    ctrl = 1;             // Restart the game
    while(ctrl!=0) {

以这种方式重启游戏。如果你没有在游戏第一次成功完成游戏后结束游戏。