需求:電腦產生 1000~9999 四位數,玩家 7 次機會猜測,可花分數購買提示(位置正確性或正確數字),初始 100 分,扣分規則為當前分數 1/10。
srand(time(NULL)) 種子,rand() % 9000 + 1000 產生四位數。score = score - score/10。// 類型 1:位置正確性
void hintPosition(int guess, int answer) {
char res[5];
for (int i=3; i>=0; i--) {
res[i] = (guess%10 == answer%10) ? 'R' : 'E';
guess/=10; answer/=10;
}
res[4]='\0'; puts(res);
}
// 類型 2:正確數字
void hintDigits(int guess, int answer) {
int g[4], a[4], cnt=0;
for (int i=3;i>=0;i--) { g[i]=guess%10; guess/=10; }
for (int i=3;i>=0;i--) { a[i]=answer%10; answer/=10; }
for (int i=0;i<4;i++) for (int j=0;j<4;j++) if (g[i]==a[j]) { printf("%d ",g[i]); cnt++; break; }
if (cnt==0) printf("無");
printf("\n");
}
整數除法會截斷,若需精確可用 double 或 score = score * 9 / 10 避免中間變數。