通過本題,學習到的內容有:
1.注意這裏的輸入語句的寫法,只之前沒有這樣寫過,尤其是遇到-1結束的寫法;
2.對沒輸入一個字符,對另一個參考字符都要全部掃描一遍,原本一直是用雙層循環的,這一用函數會更加清晰些;
3.全局變量在函數中也可直接調用,不用讀入;
4.一個字符是否已經猜過,不需要再用一個字符數組標記,可以直接設置成空格;
//劊子手
#include<stdio.h>
#include<string.h>
char ans[200],cai[200];
int win ,lose,chance,left;
void bijiao(char n)
{
int bad = 1;
for(int i;i<strlen(ans);i++)
if(n == ans[i])
{
left--;
ans[i] =' ';
bad =0;
}
if(bad)
chance--;
if(chance == 0)
lose = 1;
if(left ==0)
win = 1;
}
int main()
{
int ci;
while(scanf("%d%s%s",&ci,ans,cai) ==3 && ci !=-1)//注意輸入語句的寫法
{
printf("Round %d\n", ci);
chance =7;
left = strlen(ans);
win = lose = 0;
for(int i =0;i<strlen(cai);i++)
{
bijiao(cai[i]);
if(win||lose)
break;
}
if(win) printf("You win.\n");
else if(lose) printf("You lose.\n");
else printf("You chickened out.\n");
}
return 0;
}