原文: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的用法
浙公网安备 33010602011771号