天天看点

UVa489 Hangman Judge的不同实现方法

#include<stdio.h>

#include<string.h>

#define max 20

char cs[max],ys[max];

int win,lose;

void guess(char c[],char y[])

{

 int chance=7;//猜测错误的机会

 int left=strlen(c);//剩余要猜测的词数

 for(int i=0;i<strlen(y);i++)

 {

  int wrong=1;//猜错词的标志变量!

  for(int j=0;j<strlen(c);j++)

  {//完成一次这样的循环,代表一次完整的猜词

   if(c[j]==y[i])//如果猜对了词

   {

    c[j]=' ';//把猜对的词置空,只能猜一次!

    left--;

    wrong=0; //标志位置零

   }

  }

  //注意:下面代码不能写到上面的for循环里面!!!

  if(wrong)chance--;

  if(!chance)lose=1;

  if(!left)win=1;

  if(win||lose)break;//猜词结束时要及时推出!!

 }

}

int main()

{

 int k;

 while(scanf("%d",&k)==1&&k!=-1)

 {

  //注意开始猜词之前一定把win lose初始化!!!

  win=lose=0;

  printf("Round %d\n",k);

  scanf("%s%s",cs,ys);

  guess(cs,ys);

  if(lose)printf("you lose\n");

  else if(win)printf("you win\n");

  else printf("you chickened out\n");

 }

 return 0;

}

uva