UVa489刽子手游戏题解
2023-12-13 06:06:13
?题目
编译一个程序判断参赛者赢了(You win.)、输了(You lose.)、放弃了(You chickened out.).规则为机器提供一个单词,参赛者每次可以猜一个字母,若单词中含有这个字母,那么单词中的这个字母全部翻转,如果没有的话,就会减少一次机会。每次游戏开始的时候机会有7次。
输入数据有3行,第一行为游戏编号(-1为游戏结束),第2行是计算机想的单词,第3行是玩家的猜测。单词和猜测中保证只含小写字母。
输出结果的第一行为游戏编号,第二行为游戏结果
代码
#include<stdio.h>
#include<string.h>
#define maxd 100
char s[maxd],s2[maxd];//答案数组和猜测数组
int left,chance;//剩余需要猜的个数和剩余的机会数
int win,lose;
void guess(char ch){//判断猜测的字母和答案的正确性
int bad=1;
int i;
for(i=0;i<strlen(s);i++){
if(s[i]==ch){
left--;
s[i]=' ';//将猜中的部分用空格代替,scanf可以直接跳过空格
bad=0;
}
}
if(bad){
--chance;
}
if(!chance){
lose=1;
}
if(!left){
win=1;
}
}
int main(){
int rnd;
while(scanf("%d%s%s",&rnd,s,s2)==3&&rnd){
printf("Round %d\n",rnd);
win=lose=0;
left=strlen(s);
chance=7;
int i;
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 checked out.\n");
}
}
return 0;
}
文章来源:https://blog.csdn.net/m0_72674633/article/details/134864040
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!