#include <stdio.h>
#include <string.h>
char c[101]={'\0'},s[101]={'\0'};
int round,fail=0,lose=0;
int main(){
while(scanf("%d",&round)!=-1){
if(round==-1)break;
printf("Round %d\n",round);
scanf("%s",&s); //solution
scanf("%s",&c); //string to guess
lose=0;
for(int i=0;i<100;i++){
fail=1; //set fail = 1
for(int j=0;j<100;j++){
if(c[i]==s[j]){
fail=0; //有檢查到相同的字元,則本次猜測成功,fail設為0
s[j]='\0'; //將被猜到的相同字元都換成'\0'
}
}
if(fail==1)lose++; //沒檢查到相同字元,本次猜測失敗,lose++
char check = c[i]; //將原字串內本次猜測的字都換為'\0',避免重複猜測
for(int j=0;j<100;j++)
if(c[j]==check)c[j]='\0';
//如果失敗次數>=7次,輸出You lose.
if(lose>=7){
printf("You lose.\n");
break;
}
else
{ //這裡很重要,目前失敗還沒七次的話,趕緊檢查是否已經猜到全部的字了
int win=1;
for(int i=0;i<100;i++){
if(s[i]!='\0'){
win=0; //如果被檢查的字串裡還有剩餘沒猜到的字,win設為0
break;
}
}
if(win==1){ //如果都檢查到了,win=1,輸出You win.
printf("You win.\n");
break;
}
}
}
//判斷最後的狀況,有剩字沒檢查且lose次數<7,輸出You chickened out.
for(int i=0;i<100;i++){
if(s[i]!='\0'&&lose<7){
printf("You chickened out.\n");
break;
}
}
//重新初始化陣列
for(int i=0;i<100;i++){
c[i]='\0';
s[i]='\0';
}
}
return 0;
}
2014年8月30日星期六
[UVa] 489 - Hangman Judge
訂閱:
發佈留言 (Atom)
-
因為先前寫UVa時,檔案名稱有時會花心思改,有時就直接把題目名稱加上.cpp就貼上了 導致現在有不同的格式出現 現在要處理的事情很簡單 1. 去除空白 2. 將底線 ( _ ) 換成dash ( - ) 經過一番查詢,終於發現最簡單的方法 - re...
-
文章出處: http://infbugs.blogspot.tw/2011/12/c_20.html 謝謝沙耶,解答了我長久以來對於 input/output 的疑惑。 C 語言入門 - 在線上批改系統練功 如何練習使用基本語法 自己出個練習題試著寫...
-
因為X205的架構非常獨特,Linux對其硬體的支援度非常弱(據說kernel4.0之後有所改善,這倒還需要研究一番),目前的進度是將Ubuntu系統塞進32Gb的固態碟中,並設定能自動抓取開機磁區,之後可能還要針對WIFI、音效、快捷鍵和讀卡機等週邊設備進行設定。 1...
沒有留言:
發佈留言