ruka(刘汝佳《算法竞赛入门经典》第二版)第四章的例题,原题目使用函数写的,我读了代码后自己写了一遍,没有用函数,调了十几分钟,写这篇题解总结一下教训。

题目大意是判断输入的字符串是否猜中 猜中一个字母就猜中了所有相同字母 重复猜一个字母算错 一共有七次猜错机会 如果机会内猜对就赢了(win) 用光机会就输了(lose) 没用光但也没猜对就是放弃了 (chickend out)

代码放上:

//Uva 489 Hangman Judge//if²»¼ÓÀ¨ºÅÎÊÌâÏ൱ÑÏÖØ£¡¸øÎÒ¼ÓÀ¨ºÅ£¡£¡£¡£¡
#include<cstdio>
#include<cstring>
#define maxn 100
using namespace std;
int left,chance;//left is still need to guess in the need to be guessed string(count by location),while chance is you still can wrong for this number
char s[maxn],s2[maxn];
int win,lost;int main(){int rnd;while (scanf("%d%s%s",&rnd,&s,&s2)==3 && rnd!=-1){printf("Round %d\n",rnd);win=lost=0;left=strlen(s);chance=7;for (int i=0;i<=strlen(s2)-1;i++){int bad=0;for (int j=0;j<=strlen(s)-1;j++)if (s[j]==s2[i]){bad=1;//if bad=1 it's corrects[j]=' ';left--;}if (!bad) chance--;if (!left) win=1;else if (!chance) lost=1;if (win||lost) break;}if (win) printf("You win.\n");else if (lost) printf("You lose.\n");else printf("You chickened out.\n");}return 0;
}

这是一个没有使用函数的代码 标程中判断相等的部分用了一个guess函数

刚开始甚至编译没有通过 一看 保留字打错 if后面没没有括号 都是这些低级错误 批评 最可耻的是if后面基本没几个带括号的 编译栏万里江山一片红TUT P党习惯根深蒂固啊TUT

调试时 第一遍所有的全出win 仔细一查 原来当时是这样写的:

chance=7;
int bad=0;for (int i=0;i<=strlen(s2)-1;i++){for (int j=0;j<=strlen(s)-1;j++)

原来 bad只清零了一次!后面无论找没找到相等字符都是清一色的bad=1  = =

【写到这里喜闻此程序通过 作为Uva的第一个程序 实在是可喜可贺啊O(∩_∩)O哈哈~虽然没啥技术含量  撒花~o(≧v≦)o~~好棒

于是抓紧修改 这回 样例中的一三两项过了 可是第二项本该输出放弃 却输出了赢 这是为什么呢?我一边一边读程序仍百思不得其解

于是写下这样一个语句:

printf("R%d %d",rnd,chance);

chance输出来 一三正常 二显然出了明显问题

于是把chance改为left 再次输出 这一下可了不得 left前七项非常正常 按说到了第七项就该停止了 可是下面竟然一串负数!这就是为什么输出win——只要left不为零就输出win 而负数显然也在此范围内

当我正准备跟踪查找时 忽然想到一个致命的错误

负数!输出负数!这是不是意味着访问了无效内存?于是赶紧回去检索,果不其然,

for (int i=0;i<=strlen(s2);i++){int bad=0;for (int j=0;j<=strlen(s);j++)

仔细看看这段代码 没有写strlen(xx)-1 没有减一 这就是错误的根源 求长度函数返回的是字符串真实的长度 是从零开始的 一个字符串声明为a[8] 实际上是a[0]-a[7]  长度是8

归根到底 P党1开始的字符串和数组实在是太棒了 以至于这里总是混乱 尤其是循环特别容易出错 应该尤其注意

ruka到这里还没有讲STL和string 因此字符数组实在令人埋怨 虽然string也是0开始  但是会方便很多吧

最后发一下第一次Uva截图留念

——昆山玉碎凤凰叫,芙蓉泣露香兰笑。

【基础练习】【模拟】Uva489 - Hangman Judge题解相关推荐

  1. UVA489 Hangman Judge【模拟】

      In "Hangman Judge," you are to write a program that judges a series of Hangman games. Fo ...

  2. 算法竞赛入门经典(第二版) | 例题4-2 刽子手游戏 (UVa489,Hangman Judge)

    大家站在出题者的角度考虑,我们出了一道大水题,会让它又臭又长或是用复杂的函数吗? 不会.所以做这种题千万不要想得太复杂.循环+数组足矣. 提目(提交)链接→UVa-489 百度翻译→百度翻译 没使用过 ...

  3. UVa489 - Hangman Judge

    题意:给出一个字符串,然后让猜 ,如果猜不中,就画人中的一笔(人由7笔画组成).如果在7步之内猜中所有的字符,你就赢了,如果在人成型之前没有猜中所有的字符,你就输了,否则就是chicken out,注 ...

  4. 《计算机网络应用基础》模拟试卷(六),《计算机与网络应用基础知识1》模拟试卷...

    <计算机与网络应用基础知识1>模拟试卷 (4页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 <计算机与网络应用基础知识1& ...

  5. 2019年《计算机应用基础》,2019年自考《计算机应用基础》模拟练习及答案一

    "计算机应用基础"是一门计算机入门课程,属于公共基础课,是为非计算机专业类学生提供计算机一般应用所必需的基础知识.能力和素质的课程.下面给大家带来了2019年自考<计算机应用 ...

  6. 计算机应用基础005,2013年自考《计算机应用基础》模拟题三(5)

    2013年自考<计算机应用基础>模拟题三(5) 分类:自考 | 更新时间:2016-07-08| 来源:转载 二.填空题(每题2分    共36分) 1.________和控制器是计算机中 ...

  7. 计算机应用基础的答案2015,2015年《计算机应用基础》模拟试题及答案(一)

    2015年<计算机应用基础>模拟试题及答案(一) 31.求Y的绝对值,并将所求得的值赋给变量B的表达式为( B ) A.B=INT(Y) B.B=ABS(Y) C.B=CINT(Y) D. ...

  8. 计算机基础知识考试模拟试题,计算机基础知识模拟试题及答案

    计算机基础知识模拟试题及答案 1.下列四个无符号十进制整数中,能用八个二进制位表示的是__________. A.257 B.201 C.313 D.296 2.下列关于系统软件的四条叙述中,正确的一 ...

  9. 计算机基础1模拟题,计算机基础模拟题1(有答案).doc

    <计算机应用基础>模拟试题1 ? 一.选择题(每空1分,共30分).从下列每题提供的A.B.C.D供选择的答案中,选出一个正确的答案,填在对应的( )内. 1.在Word2000的编辑状态 ...

最新文章

  1. 情人节到了!这枝18星「黑玫瑰」只送给你
  2. 使用Solr构建企业级的全文检索(三)---------Schema定义
  3. WEB测试 test case测试点
  4. Python这些操作,逆天且实用!
  5. python中的ans是什么意思_python ans
  6. 一起开心2020暑假训练第一周
  7. 深入理解计算机系统 视频教程,深入理解计算机系统1
  8. .NET操作Excel
  9. 一个技术开发者经常访问的网站
  10. 《深入体验Java Web开发内幕——核心基础》目录
  11. 第 8章 面向对象补充和网络编程
  12. 利用多线程提高程序性能(for Android)
  13. 第1章-导言-知识点
  14. 自动驾驶车辆控制 最终项目作业 实现分析
  15. MAX30102心率血样模块在STM32F103芯片的程序说明
  16. 一周文章导读:fork() 成为负担;网络协议;(CPRI)带宽计算;互联网架构“高并发”;从MCU到FPGA;
  17. bmc linux 默认密码_系统下重置BMC密码方法
  18. JSON在线编辑器V2.0
  19. 看完这4个项目还不懂 数据分析,就把电脑砸了吧!
  20. RoundProgressBar(圆形进度条)

热门文章

  1. 永远的错误,不理解的结果
  2. 神州大地绿透了,跟着气象卫星看中国
  3. 我的团长我的团+亮剑+士兵突击
  4. 微信小程序页面之间传递数据
  5. 工作中应该保持一个什么样的心态?
  6. android usb arduino,Arduino Android OTG USB
  7. 中华人民共和国档案法
  8. Spring boot 用mybatis连接数据库
  9. Windows下快速创建指定大小的空文件
  10. 在微信如何备份、导出自己和朋友的聊天记录?