3688 - 猜单词

又一个游戏是这样的:计算机想一个单词让玩家猜,玩家每次可以猜一个字母。如果这个单词里有那个字母,所

有该字母会显示出来;如果没有那个字母,则计算机会给玩家记录一次,当记录次数超过六次的时候玩家就输

了。注意,猜一个已经猜过的字母也算错。

<span></span>

<span>&nbsp; </span>在本题中,你的任务是编写一个“裁判”程序,输入单词和玩家的猜想,判断玩家赢了<span>(You win.)</span>、输了<span>(You</span>

<span>&nbsp;lose.)</span>、还是已经放弃<span>(You chickened out.)</span>。<span></span>

<span></span>

题目输入

有多个测试数据,每个测试数据占两行,第一行是电脑想的单词,第二行是玩家的猜想,保证每行只含有小写字

母。

<span></span>

题目输出

对于每组测试数据,输出对应的”You win.”  “You lose.”  “You chickened out.”

输入/输出样例

题目输入

cheese
chese
cheese
abcdefg
cheese
abcdefgij

题目输出

You win.
You chickened out.
You lose.

C语言解答

#include<stdio.h>
#include<string.h>
int main()
{
	int i,j,k,n;
	char s[2][20];
	while(scanf("%s%s",s[0],s[1])==2)
	{
		k=0;
		for(i=0;i<strlen(s[1]);i++)
		{
			n=1;
			for(j=0;j<strlen(s[0]);j++)
			{
				if(s[1][i]==s[0][j]){s[0][j]='0';n=0;}
			}
			if(n)k++;
		}
		if(k>6)printf("You lose.\n");
		else {
			for(j=0;j<strlen(s[0]);j++)
				if(s[0][j]!='0'){printf("You chickened out.\n");break;}
				else if(j==strlen(s[0])-1)printf("You win.\n");
		}
	}
	return 0;
}

C++解答

#include <bits/stdc++.h>
using namespace std;
int main()
{
	//freopen("F:\\TestFiles\\test.in","r",stdin);
	//freopen("F:\\TestFiles\\test2.out","w",stdout);
	char a[50],b[50];
	while(~scanf("%s%s",a,b)){
		int wr=0;
		int len1=strlen(a);
		int len2=strlen(b);
		
		
		int ans=0;
		for (int i=0;i<len2;i++){
			int flags=0;
			for (int j=0;j<len1;j++){
				if (a[j]==b[i]){
					flags=1;
					a[j]='*';
					ans++;
				}
			}
			
			if (!flags){
				wr++;
			}
			
		}
		
		if (wr<=6&&ans==len1){
			printf("You win.\n");
		}
		
		if (wr<=6&&ans<len1){
			printf("You chickened out.\n");
		}
		
		if (wr>6){
			printf("You lose.\n");
		}
		
	}
	return 0;
}
时间限制 1 秒
内存限制 128 MB
讨论 统计
上一题 下一题