Uva 489 Hangman Judge

来源:互联网 发布:房产网络端口是什么 编辑:程序博客网 时间:2024/05/20 17:07

本题不难,但是我花了一个学期才AC(= =)。找到原因后想狠狠地揍自己一顿。原来是输出的一个单词拼错了,一直在解题思路和细节上找问题的我还曾吐槽这是什么脑残游戏= =
以后需细心。

#include <iostream>#include <cstring>#include <cstdio>using namespace std;const int maxn=100; char word[maxn];char guess[maxn];int main(){    int turn;    while(scanf("%d",&turn)==1&&turn!=-1){        memset(word,0,sizeof(word));         //全部清零         memset(guess,0,sizeof(guess));        scanf("%s",word);        scanf("%s",guess);        int lenw=strlen(word);        //获取单词长度         int leng=strlen(guess);             int life=7;         int win=0,lost=0;         for(int i=0;i<leng;i++){        //在记录玩家猜的字符组串中遍历             bool t=1;          //记录在目标单词中是否能找到该字母             for(int j=0;j<lenw;j++){   //遍历单词,找字母                 if(guess[i]==word[j]){                    t=0;                     word[j]=' ';                 }            }            if(t) {       //在单词中找不到该字母                 life--;                if(!life) {                    lost=1;                     break;                  }            }            else{     //在单词中找到了该字母                 int k=0;                for(;k<lenw;k++) if(word[k]!=' ')break;                if(k==lenw){       //之前写的是k==lenw-1,但是如果全部变为‘0’时,最后一次并不会break跳出来,还会执行一次k++                 win=1;                 break;               }            }           }        printf("Round %d\n",turn);        if(win) printf("You win.\n");        else if(lost) printf("You lose.\n");//就是lose写成了lost!!!             else printf("You chickened out.\n");            }    return 0;} 
0 0
原创粉丝点击