~~刽子手游戏~~
题目:游戏规则是这样的:计算机想一个单词让你猜,你每次可以猜一个字母。 如果单词里有那个字母,所有该字母会显示出来;如果没有那个字母,则计算机会在一幅“刽子手”画上填一笔。 这幅画一共需要7笔就能完成,因此你最多只能错6次。 注意,猜一个已经猜过的字母也算错。
在本题中,你的任务是编写一个“裁判”程序,输入单词和玩家的猜测,判断玩家赢了(You win.)、 输了(You lose.)还是放弃了(You chickened out.)。 每组数据包含3行,第1行是游戏编号(-1为输入结束标记),第2行是计算机想的单词,第3行是玩家的猜测。 后两行保证只含小写字母。
样例输入:
1
cheese
chese
2cheese
abcdefg
3 c
heese
abcdefgij
-1
样例输出:
Round 1
You win.
Round 2
You chickened out.
Round 3
You lose.
#include<stdio.h>
#include<string.h>
int left,chance=7,win=0,lose=0; //chance 表示错误次数 left剩余次数 int judge(char a[],char b,int n){
char *p=a;int zz=0;for(;p<a+n;p++){
if(*p==b) {
left--;*p=' '; //变空就不会重复 zz=1;}}if(!zz) {
chance--;} if (!chance) lose=1;if(!left) win=1;
}
int main(){
int rnd; char a[10],b[20];while(scanf("%d%s%s",&rnd,a,b)==3 && rnd != -1){
win=0;lose=0;left=strlen(a);chance=7;printf("Round %d\n",rnd);for(int i=0;i<strlen(b);i++){
judge(a,b[i],strlen(a));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;}