UVA - 489 - Hangman Judge

题目传送门

/*
	题目大意:给出两个字符串
	如果第二个字符串中出现了和第一个字符串相同的字符,比如字符e,则第一个字符串的那个字符e全部消失
	也就是第二个字符串的那个字符e再次出现时,第一个字符串表示没有这个字符e了
	如果第二个字符串出现了一个字符,在第一个字符串找不到相同的字符,则表示出错,出错的次数最多为7次
	错误次数超过7输出You lose;第一个字符串的字符全部消失输出You win;如果既没有错超七次第一个字符串
	字符的又没有全部消失,则输出You chickened out.
*/
#include <iostream>
#include <stdio.h>
#include <string.h>
char answer[110];//两个字符数组
char guest[110];
using namespace std;
int main(void)
{
	int lose;//还能错误的次数,它为零则输出错误
	int win;//第一个字符串的字符剩余的个数,它为零则输出正确
	int n;//编号

	while (scanf_s("%d", &n) != EOF && n != -1)
	{
		printf("Round %d\n", n);
		//格式需要
		cin >> answer;
		cin >> guest;
		
		win = strlen(answer);//第一个字符串中未消失的字符数量
		lose = 7;//最大出错的次数为7

		for (int i = 0; guest[i]; i++)
		{
			bool ok = true;
			//用来判断第二个字符串中的当前字符是否在一中也有
			for (int j = 0; answer[j]; j++)
			{//这里遍历全部的第一个字符串,是为了把一中的当前字符全部消除掉
				if (answer[j] == guest[i])
				{//如果字符串一中出现了和二当前字符一样的字符
					ok = false;//就false掉
					win--;//然后当前字符消失
					answer[j] = ' ';//用空格表示消除掉这个字符
				}
			}
			if (ok)
				lose--;//如果一中没有字符,那能够错的次数就减一
			if (!lose || !win)
				break;//其中一者为零,结束这场游戏
		}
		if (win == 0)
			printf("You win.\n");
		else if (lose == 0)
			printf("You lose.\n");
		else
			printf("You chickened out.\n");
	}

	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值