2007-04-04

【雙層迴圈練習】猜數字

  猜數字,講幾A幾B可能大家就馬上回想起這老遊戲,也就是猜四個數字,其中每組數字都不會重複,玩家必須從0~9去挑選四個數字組成一組,並且依照位置正確排列才能獲勝,當數字猜對但位置不對時會獲得1B;數字對且位置也對則獲得1A。
  舉例:假設正確解答是1357,玩家猜1528,則獲得1A1B,因為1答案相符且位置排列正確,故獲得1A;而5答案對但位置不符所以獲得1B。
  以下是程式碼(此程式碼數字儲存成字元,在讀取輸入時有些許重要觀念!):

#include <stdio.h>

int main() {
char input[4] ;
int i, j ;
int a, b ;
char ans[4] = {'1', '3', '5', '7'} ; //answer

while(1) {
printf("enter a number(4): ") ;
scanf("%c%c%c%c", &input[0],
&input[1], &input[2], &input[3]) ;
getchar() ; //deal '\n'
a = b = 0 ;
for(i=0 ; i<4 ; i++) {
if(ans[i] == input[i])
a++ ; //number and position are right

for(j=0 ; j<4 ; j++) {
if(ans[j] == input[i]) {
//number right, but position not match
b++ ;
}
}
}
b -=a ;
if(a == 4)
break ;
printf("you got %dA %dB, try again: ", a, b) ;
}
system("pause") ;
return 0 ;
}

沒有留言: