example 4-2
本题是刘的算法竞赛第二版的例题,其中最精华的地方莫过于 win 和 lose 作为 if 的判断条件,并且使用了多个全局变量,来判断每一次的剩余和机会次数。
其中 while 的判断语句本人稍改了一下,以便输入 -1 后可以不需要继续输入两个字符串才能结束程序。代码如下:
#include <stdio.h>
#include <string.h>
#define maxn 100
int left, chance;
char s[maxn], s2[maxn];
int win, lose;
void guess(char ch)
{
int bad = 1, i;
for (i = 0; i < strlen(s); i++)
if (s[i] == ch)
{
left--;
s[i] = ' ';
bad = 0;
}
if (bad) --chance;
if (!chance) lose = 1;
if (!left) win = 1;
}
int main(void)
{
int rnd, i;
scanf("%d", &rnd);
getchar();
while (rnd != -1)
{
scanf("%s%s", s, s2);
getchar();
printf("Round %d\n", rnd);
win = lose = 0;
left = strlen(s);
chance = 7;
for (i = 0; i < strlen(s2); i++)
{
guess(s2[i]);
if (win || lose) break;
}
if (win) printf("You win.\n");
else if (lose) printf("You lose.\n");
else printf("You chickened out.\n");
scanf("%d", &rnd);
getchar();
}
return 0;
}