关闭

Hangman JudgeIn

标签: c语言编程
662人阅读 评论(0) 收藏 举报

In ``Hangman Judge,'' you are to write a program that judges a series of Hangman games. For each game, the answer to the puzzle is given as well as the guesses. Rules are the same as the classic game of hangman, and are given as follows:

  1. The contestant tries to solve to puzzle by guessing one letter at a time.
  2. Every time a guess is correct, all the characters in the word that match the guess will be ``turned over.'' For example, if your guess is ``o'' and the word is ``book'', then both ``o''s in the solution will be counted as ``solved.''
  3. Every time a wrong guess is made, a stroke will be added to the drawing of a hangman, which needs 7 strokes to complete. Each unique wrong guess only counts against the contestant once.

       ______   
       |  |     
       |  O     
       | /|\    
       |  |     
       | / \    
     __|_       
     |   |______
     |_________|
  4. If the drawing of the hangman is completed before the contestant has successfully guessed all the characters of the word, the contestant loses.
  5. If the contestant has guessed all the characters of the word before the drawing is complete, the contestant wins the game.
  6. If the contestant does not guess enough letters to either win or lose, the contestant chickens out.

Your task as the ``Hangman Judge'' is to determine, for each game, whether the contestant wins, loses, or fails to finish a game.

Input

Your program will be given a series of inputs regarding the status of a game. All input will be in lower case. The first line of each section will contain a number to indicate which round of the game is being played; the next line will be the solution to the puzzle; the last line is a sequence of the guesses made by the contestant. A round number of -1 would indicate the end of all games (and input).

Output

The output of your program is to indicate which round of the game the contestant is currently playing as well as the result of the game. There are three possible results:

You win.
You lose.
You chickened out.

Sample Input

1
cheese
chese
2
cheese
abcdefg
3
cheese
abcdefgij
-1

Sample Output

Round 1
You win.
Round 2
You chickened out.
Round 3
You lose.
#include <stdio.h>
#include <string.h>
int jishu(char st[], int n);/*标准答案中不重复字母的个数*/
char s1[100000];
char s2[100000];
int main()
{
    int x, i, k1, k2, j, k, h, y, sh1, sh2, z;
    while(scanf("%d", &i)!=EOF)
    {
        if(i == -1) break;
        sh1 = 0;/*相同字母的计数器*/
        sh2 = 0;/*猜错了的字母计数器*/
        getchar();
        scanf("%s %s",s1, s2);
        k1 = strlen(s1);
        k2 = strlen(s2);
        z = jishu(s1, k1);
        for(j = 0; j < k2; j++)/*从选手答案第一个字母开始循环*/
        {
            x = 0;
            for(k = 0; k < j; k++) /*选手答案中字母是否重复*/
            {
                if(s2[j] == s2[k])
                {
                    x = 1;
                    break;
                }
            }
            if(x == 0)/*如果该字母没有重复*/
            {
                y = 0;
                for(h = 0; h < k1; h++)/*判断与标准答案的字母是否一样*/
                {
                    if(s2[j] == s1[h])/*如果遇到一样的字母*/
                    {
                        y = 1;
                        break;
                    }
                }
                if(y == 1)/*如果一样*/
                    {
                            sh1++;
                            if(sh1 == z)
                                break;
                    }
                else
                    {
                        sh2++;
                        if(sh2 == 7)
                            break;
                    }
            }
        }
        if(sh2 >= 7)/*如果猜错字母的个数大于等于7*/
            printf("Round %d\nYou lose.\n", i);
        else if(sh1 == z)/*如果猜对字母的个数与标准答案的个数相等,说明获胜*/
            printf("Round %d\nYou win.\n", i);
        else/*如果猜对的不够猜错的也不够*/
            printf("Round %d\nYou chickened out.\n", i);
    }
    return 0;
}
int jishu(char st[], int n)/*标准答案中不重复字母的个数*/
{
    int x, y = 0, i, j;
    for(i = 0; i < n; i++)
    {
        x = 0;
        for(j = 0; j < i; j++)
        {
            if(st[j] == st[i])
            {
                x = 1;
                break;
            }
        }
        if(x == 0)
        {
            y++;
        }


    }
    return y;
}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:475729次
    • 积分:11459
    • 等级:
    • 排名:第1357名
    • 原创:640篇
    • 转载:3篇
    • 译文:0篇
    • 评论:149条
    最新评论