读书人

C程序书中一个列题中的一个else不明

发布时间: 2012-05-20 16:03:12 作者: rapoo

C程序书中一个列题中的一个else,不明其用意,大家帮忙看一下!!谢
while循环中的的else是书中原有的,经我调试,有没有else执行的结常都正常,请问一下这个else还有其他含意吗?(刚学函数不长时间)




//模拟掷双骰子游戏
# include <stdio.h>
# include <stdlib.h>
# include <time.h>

int rollDice (void);
/*
{
int worksum, die1, die2;

die1 = 1 + (rand()%6);
die2 = 1 + (rand()%6);
worksum = die1 + die2;
printf("Player rolled %d + %d = %d\n", die1, die2, worksum);

return worksum;

}
*/

int main (void)
{
int gameStatus, sum, myPoint;

srand (time (NULL));
sum = rollDice ();//第一次投掷

switch (sum){
case 7: case 11://第一次投掷就赢了
gameStatus = 1;
break;
case 2: case 3: case 12: //第一次投掷就输了
gameStatus = 2;
break;
default: //记下点数
gameStatus = 0;
myPoint = sum;
printf("Point is %d\n", myPoint);
break;

}

while(gameStatus == 0){//继续投掷
sum = rollDice ();
if (sum == myPoint)//因为投出自己的点数,所以赢了
gameStatus = 1;
else
if (sum == 7)//因为投出了7,所以输了
gameStatus =2;

}

if (gameStatus == 1)
printf("Player wins\n");
else
printf("Player loses\n");


return 0;
}


int rollDice (void)
{
int worksum, die1, die2;

die1 = 1 + (rand()%6);
die2 = 1 + (rand()%6);
worksum = die1 + die2;
printf("Player rolled %d + %d = %d\n", die1, die2, worksum);

return worksum;

}


[解决办法]
投出自己的点数为7时, 不加else会判输
[解决办法]

C/C++ code
while(gameStatus == 0){     //继续投掷sum = rollDice ();if (sum == myPoint)     //因为投出自己的点数,所以赢了gameStatus = 1;else  //sum!=myPoint时,在这里有不有else区别不大,只是在sum == myPoint时又多做了一次判断sum == 7。if (sum == 7)     //因为投出了7,所以输了gameStatus =2;}
[解决办法]
只是减少一次判断,可以增加效率而已,对程序运行结果没有影响的
[解决办法]
对程序没影响 两个if只会进一个的

读书人网 >C++

热点推荐