例题4-2 刽子手游戏(Hangman Judge, UVa 489)
#include<stdio.h>
#include<string.h>
int ok ,no;
int left ,chance;
char s[20] ,s2[20];
void guess(char ch)
{
int i ,bad = 1;
for(i = 0;i < strlen(s);i++)
{
if(ch == s[i])
{
left--;
bad = 0;
s[i] = ' ';
}
}
if(bad) chance--;
if(!left)
{
ok = 1;
}
else if(!chance)
{
no = 1;
}
}
int main()
{
int rnd;
while(scanf("%d" ,&rnd) == 1 && rnd != -1)
{
scanf("%s %s" ,s ,s2);
ok = no = 0;
left = strlen(s);
chance = 7;
printf("Round %d\n" ,rnd);
int i;
for(i = 0;i < strlen(s2);i++)
{
guess(s2[i]);
if(ok || no) break;
}
if(ok)
{
printf("You win.\n");
}
else if(no)
{
printf("You lose.\n");
}
else
{
printf("You chickened out.\n");
} }
return 0;
}
1.大体思路是构思一个guess函数 让每一个猜测的字符和正确的字符串单个一一比较 如果一样的话 就让剩余要猜测的字符数量(left)减一;
不一样的就让猜测机会(chance)减一
但这思路有问题 导致我多次WA 猜错的时候让机会减一就有问题 因为不管每个猜测字符都要与所有正确字符比较 必然会有错误的 这样机会就会多减少很多 所以一开始不管我输入什么数据得出的结果都是You lose 应该设置一个一开始为真的bad 如果在正确字符串中找到一个和猜测字符一样的 就让bad为假 这样只要有一个一样的 bad就是假 没有一样的bad就为真 这样依靠bad来控制chance的加减就很nice
正确时也不能只让left减一 因为猜测字符可以重复(脑残设定) 要让猜对的字符消失 这样防止第二次猜上一次猜对的那个字符时 left多减了一倍
2.自定义函数和main函数里都要用的字符都要全局声明 不然就要用指针(不会
例题4-2 刽子手游戏(Hangman Judge, UVa 489)的更多相关文章
- 刽子手游戏(Hangman Judge, UVa 489)
刽子手游戏其实是一款猜单词游戏,游戏规则是这样的:计算机想一个单词让你猜,你每次可以猜一个字母.如果单词里有那个字母,所有该字母会显示出来:如果没有那个字母,则计算机会在一幅“刽子手”画上填一笔.这幅 ...
- Hangman Judge UVA - 489
In ``Hangman Judge,'' you are to write a program that judges a series of Hangman games. For each gam ...
- UVa 489 Hangman Judge(字符串)
Hangman Judge In ``Hangman Judge,'' you are to write a program that judges a series of Hangman gam ...
- 4_2 刽子手游戏(UVa489)<自顶向下逐步求精法>
Hangman Judge是一个猜英文单字的小游戏(在电子字典中常会看到),游戏规则如下:1.答案单字写在纸上(每个字元一张纸),并且被盖起来,玩家每次猜一个英文字元(letter).2.如果这个英文 ...
- [贪心]D. 【例题4】国王游戏
D . [ 例 题 4 ] 国 王 游 戏 D. [例题4]国王游戏 D.[例题4]国王游戏 解析 贪心思想,考虑交换后的值比交换前的小. 然后数据规模用高精度 Code #include <b ...
- [递推]D. 【例题4】传球游戏
D . [ 例 题 4 ] 传 球 游 戏 D. [例题4]传球游戏 D.[例题4]传球游戏 题目解析 设 t ( i , j ) t(i,j) t(i,j)为过了 j j j轮,轮到 i i i手上 ...
- UVa 489 HangmanJudge --- 水题
UVa 489 题目大意:计算机给定一个单词让你猜,你猜一个字母,若单词中存在你猜测的字母,则会显示出来,否则算出错, 你最多只能出错7次(第6次错还能继续猜,第7次错就算你失败),另注意猜一个已经猜 ...
- UVa 489 刽子手游戏
游戏规则,计算机想一个单词让你猜,你每次可以猜一个字母,如果单词里有那个字母,所有该字母都会显示出来,如果没有那个字母则计算机会在一副"刽子手"画上填一笔,这幅画一共需要7笔就能完 ...
- uva 489 Hangman Judge
大意:电脑想个单词,玩家来猜.玩家输入一个个字母,若答案里有这个字母,则显示该单词中所有该字母.最终目标是显示答案所有字母.猜错7次,死: 注意特殊条件:1.玩家不断重复错误的字母,只算一次猜错.2. ...
随机推荐
- 使用wangEditor富文本编辑器
客户端配置说明 下载 百度网盘地址:点我下载 下载密码:x09x 使用 首先要引入wangEditor的js文件,然后引入jQuery 然后在body里: <body> <butto ...
- Linux:安装php
一.环境准备(lamp环境:linux+apache+php+mysql) 1.安装php之前,首先要检查一下相关lib库 rpm -qa zlib libxml libjpeg freetype ...
- Hexo + Github Pages搭建个人网站主页
1.GitHub创建个人仓库 登录GitHub创建账号,同时拥有一个自己设定的用户名(username).点击New Repositories创建仓库.仓库名必须为username.github.io ...
- 关于java基础_方法的简单习题
package day05; import java.util.Arrays; /** * 方法作业 * @author ASUS * */ public class Demo6 { /* * 1.定 ...
- Java架构师方案—多数据源开发详解及原理(二)(附完整项目代码)
1. mybatis下数据源开发工作 2. 数据源与DAO的关系原理模型 3. 为什么要配置SqlSessionTemplate类的bean 4. 多数据源应用测试 1. mybatis下数据源开发工 ...
- openstack核心组件——nova计算服务(7)
云计算openstack核心组件——nova计算服务(7) 一.nova介绍: Nova 是 OpenStack 最核心的服务,负责维护和管理云环境的计算资源.OpenStack 作为 ...
- 【开发总结】order by 为什么没有走索引?
1. 现象 表结构如下 CREATE TABLE `ACT_HI_INST` ( `ID` varchar(64) COLLATE utf8_bin NOT NULL COMMENT '主键', ` ...
- 关于MongoDB
启动: 启动MongoDB的方式有两种: 1.直接启动,配置参数写在命令中: mongod --dbpath=data/db --logpath=log/log.txt --fork 2.以配置文件启 ...
- Java多线程--AQS
ReentrantLock和AQS的关系 首先我们来看看,如果用java并发包下的ReentrantLock来加锁和释放锁,是个什么样的: 1 ReentrantLock reentrantLock ...
- 学习OpenGL
重要!!! OpenGL新人一枚,希望可以再此和大家分享有用的知识,少走弯路 文章会定期更新,把前面几段已经整理过的知识更完后,接下来每周至少会更两次. 文章如果有不对的,理解错误的地方,也非常希望在 ...