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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 我说三年 中级黑马   /  2016-4-25 19:25  /  1241 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 我说三年 于 2016-4-25 20:58 编辑

这段代码一输入字母就死循环,  我想输入两位数以上或字母都可以结束游戏  应该要怎么优化?

//
//  main.c
//  课堂练习
//
//
//
#include <stdio.h>
#include <stdlib.h>
int a = 0;
int b = 0;
int c = 0;
/**
*  玩家
*
*  @param a 输入猜拳
*/
void me(int *pA);
/**
*  电脑
*
*  @param pB 用来储存电脑随机的变量
*/
void computer(int *pB);
/**
*  用来比较输赢
*
*  @param pA 玩家
*  @param pB 电脑
*  @param pC 比较的结果
*/
void cmp(int *pA,int *pB,int *pC);
int main()
{
    while(1)
    {
        system("clear");
        printf("请输入:\n");
        scanf("%d",&a);
        if(a > 9 || a > 'a')
        {
            printf("Game Vore\n");
            return 0;
        }

        me(&a);
        computer(&b);        cmp(&a,&b,&c);
        
    }
    return 0;
}
void me(int *pA)
{
    while(*pA <= 0 || *pA >= 4)
    {
        printf("你所输入有误/n请重新输入:\n");
        scanf("%d",&*pA);
        if(a > 9 || a > 'a')
        {
            break;
        }
    }
    switch(*pA)
    {
        case 1:
            printf("你出的是:石头\n");
            break;
        case 2:
            printf("你出的是:剪刀\n");
            break;
        case 3:
            printf("你出的是:布\n");
            break;
    }


}

void computer(int *pB)
{
    *pB = arc4random_uniform(3) + 1;
    switch(*pB)
    {
        case 1:
            printf("电脑出的是:石头\n");
            break;
        case 2:
            printf("电脑出的是:剪刀\n");
            break;
        case 3:
            printf("电脑出的是:布\n");
            break;
            
    }

}
void cmp(int *pA,int *pB,int *pC)
{
    *pC = *pA - *pB;
    if(*pC == 0)
        printf("你和电脑不相上下");
    if(*pC == -1 || *pC == 2)
        printf("你太厉害了,你赢了!");
    if(*pC == -2 || *pC == 1)
        printf("太遗憾了,你输了!");
    printf("\n");
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马