【C++ Primer Plus习题】16.3

embedded/2024/9/24 6:26:18/

大家好,这里是国中之林!
❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看←

问题:

这里是引用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

解答:

#include <iostream>
#include <string>
#include <cstdlib>
#include <ctime>
#include <cctype>
#include <fstream>
#include <vector>using namespace std;const int NUM = 26;//const string wordlist[NUM] = { "apiary","beetle","cereal","danger","ensign","florid",
//                            "garage","health","insult","jackal","keeper","loaner",
//                            "manage","nonce","onset","plaid","quilt","remote","stolid"
//                            "train","useful","valid","whence","xenon","yearn","zippy" };int main()
{ifstream fin;fin.open("word.txt", ifstream::in);if (!fin.is_open()){cerr << "Can't open file word.txt." << endl;exit(EXIT_FAILURE);}string word;vector<string>wordlist;if (fin.good()){while (fin >> word){wordlist.push_back(word);}}int length = wordlist.size();fin.close();srand(time(0));char play;cout << "Will you play a word game? <y/n> ";cin >> play;play = tolower(play);while (play=='y'){string target = wordlist[rand() % NUM];int length = target.length();string attempt(length, '-');string badchars;int guesses = 6;cout << "Guess my secret word.It has " << length << " letters,and you guess\n" << "one letter at a time.You get " << guesses << " wrong guesses.\n";cout << "Your word: " << attempt << endl;while (guesses>0&&attempt!=target){char letter;cout << "Guess a latter: ";cin >> letter;if (badchars.find(letter) != string::npos || attempt.find(letter) != string::npos){cout << "You already guessed char.Try again.\n";continue;}int loc = target.find(letter);if (loc == string::npos){cout << "Oh, bad guess!\n";--guesses;badchars += letter;}else{cout << "Good guess!\n";attempt[loc] = letter;loc = target.find(letter, loc + 1);while (loc!=string::npos){attempt[loc] = letter;loc = target.find(letter, loc + 1);}}cout << "Your word: " << attempt << endl;if (attempt != target){if (badchars.length() > 0){cout << "Bad choices: " << badchars << endl;cout << guesses << " bad guess left\n";}}}if (guesses > 0){cout << "That's right!\n";}else{cout << "Sorry, the word is " << target << ".\n";}cout << "Will you play another?<y/n>";cin >> play;play = tolower(play);}cout << "Bye\n";return 0;
}

运行结果:
在这里插入图片描述

考查点:

  • string类
  • cctype
  • 随机数
  • ifstream读文件
  • vector容器

注意:

  • find若找到字符返回对应的位置,可以设置起始位置找,下面就是找后面有没有重复的字母.
    在这里插入图片描述

2024年9月17日11:02:45


http://www.ppmy.cn/embedded/113100.html

相关文章

【贪心算法】贪心算法

贪心算法简介 1.什么是贪心算法2.贪心算法的特点3.学习贪心的方向 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&#xff0c;我们一起努力吧!&#x1f603;&#x1f603; 1.什么是贪心算法 与其说是…

初学Linux(学习笔记)

初学Linux&#xff08;学习笔记&#xff09; 前言 本文跳过了Linux前期的环境准备&#xff0c;直接从知识点和指令开始。 知识点&#xff1a; 1.目录文件夹&#xff08;Windows&#xff09; 2.文件内容属性 3.在Windows当中区分文件类型是通过后缀&#xff0c;而Linux是通过…

排队免单模式小程序开发

开发一个排队免单模式的小程序涉及多个方面&#xff0c;包括需求分析、界面设计、后端开发、数据库设计以及测试上线等。下面我将详细介绍每个步骤的概要&#xff1a; 1.需求分析 明确目标&#xff1a;首先确定小程序的核心功能&#xff0c;即排队免单模式的具体实现方式。例如…

华为初级认证HCIA怎么样?

想在网络技术领域实现职业突破吗&#xff1f;华为HCIA初级认证是专为网络领域的新手与初学者设计的一项入门级认证。它旨在评估并确认个人对网络基本原理和技术知识的扎实掌握&#xff0c;是步入华为认证体系大门的基石。 一、华为HCIA 初级认证概述 华为初级认证网络工程师&am…

【UE5 C++课程系列笔记】02——创建C++类的三种方式

目录 一、从UE编辑器中创建 引用头文件报错的两种解决方式 &#xff08;1&#xff09;方式1 &#xff08;2&#xff09;方式2 二、在文件夹中直接创建 三、在Visual Studio中创建 一、从UE编辑器中创建 在UE编辑器中选择“Tools-》New C Class” 这里新建的类的父类选择…

【D3.js in Action 3 精译_022】3.2 使用 D3 完成数据准备工作

当前内容所在位置 第一部分 D3.js 基础知识 第一章 D3.js 简介&#xff08;已完结&#xff09; 1.1 何为 D3.js&#xff1f;1.2 D3 生态系统——入门须知1.3 数据可视化最佳实践&#xff08;上&#xff09;1.3 数据可视化最佳实践&#xff08;下&#xff09;1.4 本章小结 第二章…

【Linux基础】冯诺依曼体系结构操作系统的理解

目录 前言一&#xff0c;冯诺依曼体系1. 为什么有内存结构?2. 对硬件中数据流动的再理解 二&#xff0c;操作系统(Operator System)1. 概念2. 操作系统结构的层状划分3. 操作系统对硬件管理的理解4. 用户与操作系统的关系的理解5. 系统调用和库函数的关系6. 为什么要有操作系统…

16. MyBatis的延迟加载机制是什么?如何配置?有哪些优缺点?

延迟加载&#xff08;Lazy Loading&#xff09;是MyBatis提供的一种机制&#xff0c;用于优化数据库查询性能。在启用延迟加载时&#xff0c;某些关联对象或集合只有在被实际访问时才会触发数据库查询&#xff0c;而不是在主对象加载时立即加载。这种机制可以减少不必要的数据库…