A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

//  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;
}

3 个回复

倒序浏览
ps: 有没有办法,使得输入为实数时,也能继续实现猜拳判定的功能,不至于无限循环。
回复 使用道具 举报
也就是说:为何while里面表达式 player < 0 || player > 2 ,在输入浮点数时,表达式值会被判定为  1?
回复 使用道具 举报
Dast 发表于 2015-6-9 16:56
也就是说:为何while里面表达式 player < 0 || player > 2 ,在输入浮点数时,表达式值会被判定为  1? ...

这个我已经理解了,是未赋初值,存了垃圾数的原因。那么问题来了:
如何解决输入实数仍正常实现功能的问题?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马