注册 登录
编程论坛 C++教室

剪刀,石头,布,为什么出现不该出现的情况

number7 发布于 2011-10-29 12:36, 712 次点击
程序代码:
r代表rock石头,s代表scissor 剪刀,p代表paper布,为什么在选输入p的时候情况总出错,哪里出问题了,求解释。

#include "stdafx.h"
#include "cmath"
#include "iostream"
#include "cctype"
int whowin(char,char);
    char r='r',s='r',p='p',me,you,c;
int _tmain(int argc, _TCHAR* argv[])
{
    using namespace std;
    do
    {
        cout<<"我出:"<<ENDL;
        cin>>me;me=tolower(me);
        cout<<"你出:"<<ENDL;
        cin>>you;you=tolower(you);
        if(whowin(me,you)==1)
            cout<<"我赢了"<<ENDL;
        else if(whowin(me,you)==-1)
            cout<<"你赢了"<<ENDL;
        else if(whowin(me,you)==0)
            cout<<"平手"<<ENDL;

    cout<<"是否继续"<<ENDL;
   
    cin>>c;
    }while(c=='y'||c=='Y');
    return 0;
}
int whowin(char a,char b)
{
    using std::cout;
    switch(a)
    {
    case 'r':
        switch(b)
        {
            case 'r':return 0;//break;
            case 's':return 1;//break;
            case 'p':return -1;//break;
        }
    case 's':
        switch(b)
        {
            case 'r':return -1;//break;
            case 's':return 0;//break;
            case 'p':return 1;//break;
        }
    case 'p':
        switch('b')
        {
            case 'r':return -1;//break;
            case 's':return 1;//break;
            case 'p':return 0;//break;
        }
    default :cout<<"不应该出现这种情况";
    }
}

3 回复
#2
寒风中的细雨2011-10-29 16:10
switch('b')
#3
number72011-10-29 19:04
回复 2楼 寒风中的细雨
oh my god
#4
迷上编程2012-03-11 14:19
C语言!!!!!!
1