C程序书中一个列题中的一个else,不明其用意,大家帮忙看一下!!谢

A1041595779 2012-05-17 12:53:35
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;

}
...全文
171 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
A1041595779 2012-05-17
  • 打赏
  • 举报
回复
嗯,谢了![Quote=引用 5 楼 的回复:]
对程序没影响 两个if只会进一个的
[/Quote]
A1041595779 2012-05-17
  • 打赏
  • 举报
回复
嗯谢了[Quote=引用 4 楼 的回复:]
只是减少一次判断,可以增加效率而已,对程序运行结果没有影响的
[/Quote]
A1041595779 2012-05-17
  • 打赏
  • 举报
回复
嗯,谢了[Quote=引用 3 楼 的回复:]
C/C++ code

while(gameStatus == 0){ //继续投掷
sum = rollDice ();
if (sum == myPoint) //因为投出自己的点数,所以赢了
gameStatus = 1;
else //sum!=myPoint时,在这里有不有else区别不大,只是在sum == myPoint时又多做了一次判断sum == 7……
[/Quote]
从头来过 2012-05-17
  • 打赏
  • 举报
回复
对程序没影响 两个if只会进一个的
DyanWang 2012-05-17
  • 打赏
  • 举报
回复
只是减少一次判断,可以增加效率而已,对程序运行结果没有影响的
sundayX 2012-05-17
  • 打赏
  • 举报
回复

while(gameStatus == 0){ //继续投掷
sum = rollDice ();
if (sum == myPoint) //因为投出自己的点数,所以赢了
gameStatus = 1;
else //sum!=myPoint时,在这里有不有else区别不大,只是在sum == myPoint时又多做了一次判断sum == 7。
if (sum == 7) //因为投出了7,所以输了
gameStatus =2;

}
A1041595779 2012-05-17
  • 打赏
  • 举报
回复
不会吧switch (sum){
case 7: case 11: //第一次投掷就赢了
gameStatus = 1;
break;

Isnis-fallen 2012-05-17
  • 打赏
  • 举报
回复
投出自己的点数为7时, 不加else会判输

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧