黑马程序员技术交流社区
标题:
有关猜拳游戏,为何输入小数时 里面的while就无限循环
[打印本页]
作者:
Dast
时间:
2015-6-9 16:46
标题:
有关猜拳游戏,为何输入小数时 里面的while就无限循环
// main.c
// 猜拳游戏
// Created by Dast on 15/6/9.
// Copyright (c) 2015年 Dast. All rights reserved.
#include <stdio.h>
#include "stdlib.h"
int main(int argc, const char * argv[])
{
while (1)
{
// 定义变量
int compu,player;
//电脑出拳:随机数函数实现并输出显示
compu = arc4random_uniform(3);
printf("compu == %d\n",compu);
//玩家出拳:提示,输入,判定
printf("input num from stone=0,knife=1,cloth=2:");
scanf("%d",&player);
while (player < 0 || player > 2)
{
printf("input num Again:");
scanf("%d",&player);
}
// 比较, 输出结果
// 石头 0 剪刀1 布2
// 赢的条件:0对1,1对2,2对0.
if(player == 0 && compu == 1 ||player == 1 && compu == 2 || player == 2 && compu == 0 )
printf("u win\n");
else if (player == 1 && compu == 0 || player == 2 && compu == 1 || player == 0 && compu == 2 )
printf("computer win\n");
else
printf("tie\n");
}
return 0;
}
作者:
Dast
时间:
2015-6-9 16:56
也就是说:为何while里面表达式 player < 0 || player > 2 ,在输入浮点数时,表达式值会被判定为 1?
作者:
Dast
时间:
2015-6-9 17:08
ps: 有没有办法,使得输入为实数时,也能继续实现猜拳判定的功能,不至于无限循环。
作者:
Dast
时间:
2015-6-9 17:10
Dast 发表于 2015-6-9 16:56
也就是说:为何while里面表达式 player < 0 || player > 2 ,在输入浮点数时,表达式值会被判定为 1? ...
这个我已经理解了,是未赋初值,存了垃圾数的原因。那么问题来了:
如何解决输入实数仍正常实现功能的问题?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2