原文:http://blog.csdn.net/that163/article/details/7473103

大意:猜单词。给出一个单词(选手不可见),选手猜单词的字母,若一个单词有多个相同字母则猜中一次就显示这些字母。猜错7次为输,在此之前若把单词的所有字母都猜中则为赢,既没有赢又没有输,即放弃。多次猜错同一个字母记为猜错一次。

思路:分别用两个数组记录给定的单词和选手猜的字母。记录给定单词有效字母的个数(不重复),用一个数组标识已给定的字母。然后用猜的字母逐个比较,分别记录猜错和猜中。

 1 #include<iostream>  
 2 #include<cstring>  
 3 using namespace std;  
 4 int main()  
 5 {  
 6     char word[1000],check[1000];  
 7     int round,i,j,flag[26],los,get,sum;  
 8     while(cin>>round&&round!=-1)  
 9     {  
10         cout<<"Round "<<round<<endl;  
11         cin>>word;  
12         cin>>check;  
13         memset(flag,0,sizeof(flag));  
14         los=get=sum=0;  
15         for(i=0;word[i]!='\0';i++)  
16         {  
17             if(flag[word[i]-'a']==0)  
18             {  
19                 flag[word[i]-'a']=1;  
20                 sum++;  
21             }  
22         }  
23         for(i=0;check[i]!='\0';i++)  
24         {  
25             if(flag[check[i]-'a']==0)  
26             {  
27                 flag[check[i]-'a']=-1;  
28                 los++;  
29             }  
30             else  
31             {  
32                 if(flag[check[i]-'a']==1)  
33                 {  
34                     flag[check[i]-'a']=2;  
35                     get++;  
36                 }  
37             }  
38             if(los==7||get==sum)  
39                 break;  
40         }  
41         if(los==7)  
42             cout<<"You lose."<<endl;  
43         else  
44         {  
45             if(get==sum)  
46                 cout<<"You win."<<endl;  
47             else  
48                 cout<<"You chickened out."<<endl;  
49         }  
50     }  
51     return 0;  
52 }  


※:数组flag的用法