题目https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=832&page=show_problem&problem=430
刽子手游戏。题目较长,理解以后很容易…
就是猜词游戏,输入电脑给的字符串题目和玩家猜测的单词,如果答案中有这个单词,则所有的该单词都会显示出来,有7次机会,猜曾经猜对的单词算错。
注意:重复猜算错,所以把猜对的赋值为’ ‘ 空格。
#include <cstdio> #include <cstring> #include <iostream> #include <fstream> using namespace std; const char *s[]={"You lose.","You win.","You chickened out."}; int guess(string sa,string sg){ //返回0失败,1成功。2放弃 int bin=0; //是否猜中 int chance,left; chance = 7; left = sa.size(); for (int i = 0;i < sg.size(); i++){ bin=0; for(int j = 0; j < sa.size();j++){ if(sg[i]==sa[j]){ sa[j] = ' '; left--; bin=1; } } if(bin == 0){ //没有猜中 chance--; } if(chance == 0) return 0; else if(left == 0) return 1; } return 2; } int main(){ int t; string sa,sg; ifstream cin("UVa489.txt"); while(cin>>t&&t&&t!=-1){ cin>>sa>>sg; int status = guess(sa,sg); printf("Round %d\n",t); printf("%s\n",s[status]); sa.clear();sg.clear(); } return 0; }