天天看點

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