Files
python/RuMenJingDian/ChengXu/CX_4_11.cpp

56 lines
1.8 KiB
C++
Raw Normal View History

2025-08-30 18:35:01 +08:00
#include <bits/stdc++.h>
#define maxn 100
int left, chance; //还需要猜left个位置,错chance次之后就会输
char s[maxn], s2[maxn]; //答案是字符串s,玩家猜的字母序列是s2
bool win, lose; //win=1表示已经赢了;lose=1表示已经输了
/**
* 功能:猜字符函数
* @param ch
*/
void guess(char ch) {
bool bad = true;
for (int i = 0; i < strlen(s); i++)
if (s[i] == ch) {
left--;
s[i] = ' '; //阅后即焚~,标识为空格
bad = false;
}
if (bad) --chance; //错一次,机会减少一次
if (!chance) lose = true; //没有机会了,就是输了
if (!left) win = true;
}
int main() {
int rnd; //轮次 一级公民,在scanf中使用,需要使用&符,表示按地址引用。
// s和s2,为字符串数组,二级公民,不需要使用&符!
/*
例如scanf("%d %d",&a,&b) 若a,b均正确得到值,则返回2
若a得到值,b不得到值,则返回1(返回成功接收到赋值的个数)
如果遇到错误或遇到end of file,返回值为EOF
*/
while (scanf("%d%s%s", &rnd, s, s2) == 3 && rnd != -1) //rnd=-1表示输入-1就停止
{
printf("Round %d\n", rnd);
win = lose = false; //求解一组新数据之前要初始化
//测长
left = strlen(s);
//机会有7次
chance = 7;
//遍历每一个字符
for (int 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");
}
return 0;
}