当前位置: 首页 > news >正文

《C++语言程序设计(第5版)》(清华大学出版社,郑莉 董渊编著)习题——第2章 C++语言简单程序设计

2-15 编写一个程序,运行时提示输入一个数字,再把这个数字显示出来。

#include <iostream>using namespace std;int main() {// 提示用户输入数字cout << "请输入一个数字: ";// 用于存储用户输入的数字的变量double number;// 从标准输入读取用户输入的数字cin >> number;// 显示用户输入的数字cout << "您输入的数字是: " << number << endl;return 0;
}

 

2-16 C++语言有哪几种数据类型?简述其值域。编程显示你使用的计算机中的各种数据类型的字节数。

#include <iostream>using namespace std;int main() {cout << "整型的大小: " << sizeof(int) << " 字节\n";cout << "长整型的大小: " << sizeof(long) << " 字节\n";cout << "短整型的大小: " << sizeof(short) << " 字节\n";cout << "字符型的大小: " << sizeof(char) << " 字节\n";cout << "单精度浮点型的大小: " << sizeof(float) << " 字节\n";cout << "双精度浮点型的大小: " << sizeof(double) << " 字节\n";cout << "布尔型的大小: " << sizeof(bool) << " 字节\n";// 根据需要添加更多的数据类型return 0;
}

2-17 输出ASCⅡ码为32~127的字符。

#include <iostream>using namespace std;int main() {// 输出ASCII码为32~127的字符for (int i = 32; i <= 127; ++i) {cout << char(i) << " ";}cout << endl;return 0;
}

2-25 编写一个完整的程序,实现功能:向用户提问“现在正在下雨吗?”,提示用户输入Y或N。若输入为Y,显示“现在正在下雨。”;若输入为N,显示“现在没有下雨。”;否则继续提问“现在正在下雨吗?”。

#include <iostream>
#include <string>int main() {std::string userInput;do {// 提问用户是否正在下雨std::cout << "现在正在下雨吗?(输入Y或N): ";std::cin >> userInput;// 处理用户输入if (userInput == "Y" || userInput == "y") {std::cout << "现在正在下雨。\n";} else if (userInput == "N" || userInput == "n") {std::cout << "现在没有下雨。\n";} else {std::cout << "无效的输入,请输入Y或N。\n";}} while (userInput != "Y" && userInput != "y" && userInput != "N" && userInput != "n");return 0;
}

2-26 编写一个完整的程序,运行时向用户提问“你考试考了多少分?(0~100)”,接收输入后判断其等级显示出来。规则如下:
优90≤分数≤100

良80≤分数<90

中60≤分数<80

差0≤分数<60

#include <iostream>int main() {// 提示用户输入分数std::cout << "你考试考了多少分?(0~100): ";// 接收用户输入int score;std::cin >> score;// 判断等级并显示结果if (score >= 90 && score <= 100) {std::cout << "优\n";} else if (score >= 80 && score < 90) {std::cout << "良\n";} else if (score >= 60 && score < 80) {std::cout << "中\n";} else if (score >= 0 && score < 60) {std::cout << "差\n";} else {std::cout << "输入无效,分数应在0~100之间。\n";}return 0;
}

2-27 实现一个简单的菜单程序,运行时显示“Menu:A(dd) D(elete) S(ort) Q(uit),Selet one:“提醒用户输入,A表示增加,D表示删除,S表示排序,Q表示退出,输入为A、D、S时分别提示“数据已经增加、删除、排序。”输入为Q时程序结束。

(1)要求使用if…else语句进行判断,用break、continue控制程序流程。

(2)要求使用switch语句。

//使用if...else#include <iostream>
#include <vector>
#include <algorithm>using namespace std;int main() {vector<string> data;  // 用于存储数据的向量while (true) {cout << "菜单:A(增加) D(删除) S(排序) Q(退出)\n";char choice;cout << "请选择:";cin >> choice;if (choice == 'A') {// 增加数据string newData;cout << "输入要增加的数据:";cin >> newData;data.push_back(newData);cout << "数据已经增加。\n";} else if (choice == 'D') {// 删除数据if (data.empty()) {cout << "没有数据可以删除。\n";} else {cout << "原始数据:";for (size_t i = 0; i < data.size(); ++i) {cout << data[i] << " ";}cout << "\n输入要删除的数据:";string itemToDelete;cin >> itemToDelete;vector<string>::iterator it = find(data.begin(), data.end(), itemToDelete);if (it != data.end()) {data.erase(it);cout << "数据已经删除。\n";} else {cout << "未找到数据。\n";}}} else if (choice == 'S') {// 排序数据if (data.empty()) {cout << "没有数据可以排序。\n";} else {sort(data.begin(), data.end());cout << "数据已经排序。\n";}} else if (choice == 'Q') {// 退出程序cout << "程序正在退出。\n";break;} else {// 处理无效输入cout << "无效的选择。请键入 A、D、S 或 Q。\n";continue;}// 显示当前数据cout << "当前数据:";for (size_t i = 0; i < data.size(); ++i) {cout << data[i] << " ";}cout << "\n\n";}return 0;
}

// 使用switch语句#include <iostream>
#include <vector>
#include <algorithm>using namespace std;int main() {vector<string> data;  // 用于存储数据的向量char choice;while (true) {cout << "菜单:A(增加) D(删除) S(排序) Q(退出)\n";cout << "请选择:";cin >> choice;switch (choice) {case 'A':case 'a': {// 增加数据string newData;cout << "请输入要增加的数据:";cin >> newData;data.push_back(newData);cout << "数据已经增加。\n";break;}case 'D':case 'd': {// 删除数据if (data.empty()) {cout << "没有数据可以删除。\n";} else {cout << "当前数据:";for (size_t i = 0; i < data.size(); ++i) {cout << data[i] << " ";}cout << "\n请输入要删除的数据:";string itemToDelete;cin >> itemToDelete;size_t indexToDelete = 0;bool found = false;for (size_t i = 0; i < data.size(); ++i) {if (data[i] == itemToDelete) {indexToDelete = i;found = true;break;}}if (found) {data.erase(data.begin() + indexToDelete);cout << "数据已经删除。\n";} else {cout << "未找到数据。\n";}}break;}case 'S':case 's': {// 排序数据if (data.empty()) {cout << "没有数据可以排序。\n";} else {sort(data.begin(), data.end());cout << "数据已经排序。\n";}break;}case 'Q':case 'q':// 退出程序cout << "程序正在退出。\n";return 0;default:// 处理无效输入cout << "无效的选择,请输入A、D、S或Q。\n";}// 显示当前数据cout << "当前数据:";for (size_t i = 0; i < data.size(); ++i) {cout << data[i] << " ";}cout << "\n\n";}return 0;
}

2-28 用穷举法找出1~100的质数并显示出来。分别使用while、do-while、for循环语句实现。

// 使用while循环#include <iostream>using namespace std;int main() {int number = 2;cout << "1~100之间的质数有:";while (number <= 100) {int divisor = 2;bool isPrime = true;while (divisor <= number / 2) {if (number % divisor == 0) {isPrime = false;break;}divisor++;}if (isPrime) {cout << number << " ";}number++;}cout << endl;return 0;
}
//使用do...while语句#include <iostream>using namespace std;int main() {int number = 2;cout << "1~100之间的质数有:";do {int divisor = 2;bool isPrime = true;do {if (number % divisor == 0) {isPrime = false;break;}divisor++;} while (divisor <= number / 2);if (isPrime) {cout << number << " ";}number++;} while (number <= 100);cout << endl;return 0;
}
//使用for循环语句#include <iostream>using namespace std;int main() {cout << "1~100之间的质数有:";for (int number = 2; number <= 100; ++number) {bool isPrime = true;for (int divisor = 2; divisor <= number / 2; ++divisor) {if (number % divisor == 0) {isPrime = false;break;}}if (isPrime) {cout << number << " ";}}cout << endl;return 0;
}

2-30 声明一个表示时间的结构体,可以精确表示年、月、日、小时、分、秒;提示用户输入年、月、日、小时、分、秒的值,然后完整地显示出来

#include <iostream>using namespace std;// 定义表示时间的结构体
struct Time {int year;int month;int day;int hour;int minute;int second;
};int main() {// 创建时间结构体变量Time time;// 提示用户输入时间信息cout << "请输入年份: ";cin >> time.year;cout << "请输入月份: ";cin >> time.month;cout << "请输入日期: ";cin >> time.day;cout << "请输入小时: ";cin >> time.hour;cout << "请输入分钟: ";cin >> time.minute;cout << "请输入秒数: ";cin >> time.second;// 显示完整的时间信息cout << "输入的时间为:" << time.year << "年" << time.month << "月" << time.day << "日 "<< time.hour << "时" << time.minute << "分" << time.second << "秒" << endl;return 0;
}

2-31 在程序中定义一个整型变量,赋以1~100的值,要求用户猜这个数,比较两个数的大小,把结果提示给用户,直到猜对为止。分别使用while、do...while语句实现循环。

//使用while循环#include <iostream>using namespace std;int main() {int targetNumber = 42; // 要猜的数字int userGuess;cout << "猜一猜1~100之间的数字: ";// 使用while循环while (true) {cin >> userGuess;if (userGuess == targetNumber) {cout << "恭喜你,猜对了!" << endl;break; // 结束循环} else if (userGuess < targetNumber) {cout << "猜的数字太小了,请再试一次: ";} else {cout << "猜的数字太大了,请再试一次: ";}}return 0;
}
// 使用do...while语句#include <iostream>using namespace std;int main() {int targetNumber = 42; // 要猜的数字int userGuess;cout << "猜一猜1~100之间的数字: ";// 使用do...while循环do {cin >> userGuess;if (userGuess == targetNumber) {cout << "恭喜你,猜对了!" << endl;} else if (userGuess < targetNumber) {cout << "猜的数字太小了,请再试一次: ";} else {cout << "猜的数字太大了,请再试一次: ";}} while (userGuess != targetNumber);return 0;
}

2-32 口袋中有红、黄、蓝、白、黑5种颜色的球若干个。每次从口袋种取出3个不同颜色的球,问有多少种取法?

#include <iostream>
#include <string>using namespace std;int main() {const int totalColors = 5; // 总颜色数const int ballsPerDraw = 3; // 每次取出的球数string colors[] = {"红", "黄", "蓝", "白", "黑"};int combinationCount = 0;// 循环遍历所有可能的排列for (int color1 = 0; color1 < totalColors; ++color1) {for (int color2 = 0; color2 < totalColors; ++color2) {for (int color3 = 0; color3 < totalColors; ++color3) {if (color1 != color2 && color1 != color3 && color2 != color3) {// 输出当前排列和编号cout  << combinationCount + 1 << " ";cout << colors[color1] << " " << colors[color2] << " " << colors[color3] << endl;combinationCount++;}}}}// 输出总的排列数cout << "总共有 " << combinationCount << " 种取法。" << endl;return 0;
}

2-33 输出九九乘法表

#include<bits/stdc++.h>
using namespace std;
//打印九九乘法表
int main(){
int i=0;
int j=0;
for(i=1;i<=9;i++){for(j=1;j<=i;j++){cout<<j<<"*"<<i<<"="<<i*j<<" ";}cout<<endl;
}
return 0;
}

相关文章:

《C++语言程序设计(第5版)》(清华大学出版社,郑莉 董渊编著)习题——第2章 C++语言简单程序设计

2-15 编写一个程序&#xff0c;运行时提示输入一个数字&#xff0c;再把这个数字显示出来。 #include <iostream>using namespace std;int main() {// 提示用户输入数字cout << "请输入一个数字: ";// 用于存储用户输入的数字的变量double number;// 从…...

2023年生成式AI全球使用报告

生成式人工智能工具正在迅速改变多个领域&#xff0c;从营销和新闻到教育和艺术。 这些工具使用算法从大量培训材料中获取新的文本、音频或图像。虽然 ChatGPT 和 Midjourney 之类的工具可以用来实现超出人类能力或想象力的艺术效果&#xff0c;但目前它们最常用于比人类更轻松…...

安全防御之漏洞扫描技术

每年都有数以千计的网络安全漏洞被发现和公布&#xff0c;加上攻击者手段的不断变化&#xff0c;网络安全状况也在随着安全漏洞的增加变得日益严峻。寻根溯源&#xff0c;绝大多数用户缺乏一套完整、有效的漏洞管理工作流程&#xff0c;未能落实定期评估与漏洞修补工作。只有比…...

SPON世邦 IP网络对讲广播系统 多处文件上传漏洞复现

0x01 产品简介 SPON世邦IP网络对讲广播系统是一种先进的通信解决方案,旨在提供高效的网络对讲和广播功能。 0x02 漏洞概述 SPON世邦IP网络对讲广播系统 addscenedata.php、uploadjson.php、my_parser.php等接口处存在任意文件上传漏洞,未经身份验证的攻击者可利用此漏洞上…...

Python综合数据分析_RFM用户分层模型

文章目录 1.数据加载2.查看数据情况3.数据合并及填充4.查看特征字段之间相关性5.聚合操作6.时间维度上看销售额7.计算用户RFM8.数据保存存储(1).to_csv(1).to_pickle 1.数据加载 import pandas as pd dataset pd.read_csv(SupplyChain.csv, encodingunicode_escape) dataset2…...

【C++进阶04】STL中map、set、multimap、multiset的介绍及使用

一、关联式容器 vector/list/deque… 这些容器统称为序列式容器 因为其底层为线性序列的数据结构 里面存储的是元素本身 map/set… 这些容器统称为关联式容器 关联式容器也是用来存储数据的 与序列式容器不同的是 其里面存储的是<key, value>结构的键值对 在数据检索时…...

在 Linux 中开启 Flask 项目持续运行

在 Linux 中开启 Flask 项目持续运行 在部署 Flask 项目时&#xff0c;情况往往并不是那么理想。默认情况下&#xff0c;关闭 SSH 终端后&#xff0c;Flask 服务就停止了。这时&#xff0c;您需要找到一种方法在 Linux 服务器上实现持续运行 Flask 项目&#xff0c;并在服务器…...

考研个人经验总结【心理向】

客官你好 首先&#xff0c;不管你是以何种原因来到这篇博客&#xff0c;以下内容或多或少可能带给你一些启发。如果你还是大二or大三学生&#xff0c;有考研的打算&#xff0c;不妨提前了解一些考研必备的心理战术&#xff0c;有时候并不是你知识学得不好&#xff0c;而是思维…...

如何在CentOS安装SQL Server数据库并通过内网穿透工具实现公网访问

文章目录 前言1. 安装sql server2. 局域网测试连接3. 安装cpolar内网穿透4. 将sqlserver映射到公网5. 公网远程连接6.固定连接公网地址7.使用固定公网地址连接 前言 简单几步实现在Linux centos环境下安装部署sql server数据库&#xff0c;并结合cpolar内网穿透工具&#xff0…...

jupyter内核错误

1、在dos窗口输入以下命令激活环境&#xff1a;anaconda activate 【py环境名&#xff0c;比如py37】&#xff08;目的是新家你一个虚拟环境&#xff09; 2、在虚拟环境py37下安装jupyter notebook&#xff0c;命令&#xff1a;pip install jupyter notebook 3、安装ipykerne…...

设计模式的艺术P1基础—2.3 类之间的关系

设计模式的艺术P1基础—2.3 类之间的关系 在软件系统中&#xff0c;类并不是孤立存在的&#xff0c;类与类之间存在各种关系。对于不同类型的关系&#xff0c;UML提供了不同的表示方式 1&#xff0e;关联关系 关联&#xff08;Association&#xff09;关系是类与类之间最常用…...

工业无人机行业研究:预计2025年将达到108.2亿美元

近年来&#xff0c;在技术进步和各行各业对无人驾驶飞行器 (UAV) 不断增长的需求的推动下&#xff0c;工业无人机市场一直在快速增长。该市场有望在未来几年继续其增长轨迹&#xff0c;许多关键趋势和因素推动其发展。 在全球范围内&#xff0c;工业无人机市场预计到 2025 年将…...

PCA主成分分析算法

在数据分析中&#xff0c;如果特征太多&#xff0c;或者特征之间的相关性太高&#xff0c;通常可以用PCA来进行降维。比如通过对原有10个特征的线性组合, 我们找出3个主成分&#xff0c;就足以解释绝大多数的方差&#xff0c;该算法在高维数据集中被广泛应用。 算法&#xff08…...

Hyperledger Fabric 权限策略和访问控制

访问控制是区块链网络十分重要的功能&#xff0c;负责控制某个身份在某个场景下是否允许采取某个操作&#xff08;如读写某个资源&#xff09;。 常见的访问控制模型包括强制访问控制&#xff08;Mandatory Access Control&#xff09;、自主访问控制&#xff08;Discretionar…...

Day28 回溯算法part04 93. 复原IP地址 78. 子集 90. 子集 II

回溯算法part04 93. 复原IP地址 78. 子集 90. 子集 II 93. 复原 IP 地址 class Solution { private:vector<string> result;bool isValid(string& s,int start,int end){if (start > end) return false;if (s[start] 0 && start ! end) { // 0开头的数…...

Linux系统常用的安全优化

环境&#xff1a;CentOS7.9 1、禁用SELinux SELinux是美国国家安全局对于强制访问控制的实现 1)永久禁用SELinux vim /etc/selinux/config SELINUXdisabled #必须重启系统才能生效2&#xff09;临时禁用SELInux getenforce #查看SELInux当前状态 setenforce 0 #数字…...

Vue-4、单向数据绑定与双向数据绑定

1、单向数据绑定 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>数据绑定</title><!--引入vue--><script type"text/javascript" src"https://cdn.jsdelivr.net/npm/…...

【Flutter 开发实战】Dart 基础篇:常用运算符

在Dart中&#xff0c;运算符是编写任何程序的基本构建块之一。本文将详细介绍Dart中常用的运算符&#xff0c;以帮助初学者更好地理解和运用这些概念。 1. 算术运算符 算术运算符用于执行基本的数学运算。Dart支持常见的加、减、乘、除、整除以及取余运算。常见的算数运算符如…...

C++:ifstream通过getline读取文件会忽略最后一行空行

getline是读取文件的常用函数,虽然使用简单,但是有一个较容易被忽视的问题,就是文件最后一行空行会被忽略。 #include <iostream> #include <fstream> #include <string> using namespace std;void readWholeFileWithGetline(string fileName) {string t…...

力扣123. 买卖股票的最佳时机 III

动态规划 思路&#xff1a; 最多可以完成两笔交易&#xff0c;因此任意一天结束后&#xff0c;会处于5种状态&#xff1a; 未进行任何操作&#xff1b;只进行了一次买操作&#xff1b;进行了一次买操作和一次卖操作&#xff1b;再完成了一次交易之后&#xff0c;进行了一次买操…...

Vue3:vue-cli项目创建

一、node.js检测或安装&#xff1a; node -v node.js官方 二、vue-cli安装&#xff1a; npm install -g vue/cli # OR yarn global add vue/cli/*如果安装的时候报错&#xff0c;可以尝试一下方法 删除C:\Users**\AppData\Roaming下的npm和npm-cache文件夹 删除项目下的node…...

C# .Net学习笔记—— 异步和多线程(Task)

一、概念 Task是DotNet3.0之后所推出的一种新的使用多线程的方式&#xff0c;它是基于ThreadPool线程进行封装的。 二、使用多线程的时机 任务能够并发运行的时候&#xff0c;提升速度&#xff1b;优化体验 三、基本使用方法 private void button5_Click(object sender, Ev…...

Python从入门到网络爬虫(读写Excel详解)

前言 Python操作Excel的模块有很多&#xff0c;并且各有优劣&#xff0c;不同模块支持的操作和文件类型也有不同。最常用的Excel处理库有xlrd、xlwt、xlutils、xlwings、openpyxl、pandas&#xff0c;下面是各个模块的支持情况&#xff1a; 工具名称.xls.xlsx获取文件内容写入…...

Mysql之子查询、连接查询(内外)以及分页查询

目录 一.案例&#xff08;接上篇博客&#xff09; 09&#xff09;查询学过「张三」老师授课的同学的信息 10&#xff09;查询没有学全所有课程的同学的信息 11&#xff09;查询没学过"张三"老师讲授的任一门课程的学生姓名 12&#xff09;查询两门及其以上不及格课程…...

计算机的存储单位

在计算机中&#xff0c;只能识别二进制。 byte是1个字节&#xff0c;是8个比特位&#xff0c;所以byte可以存储的最大值是&#xff1a;01111111&#xff0c;byte是 [-128 ~ 127] 共可以标识256个不同的数字。 1字节 8bit&#xff08;8比特&#xff09;--> 1byte 8bit 类…...

设备树文件中的设备节点

一. 简介 前面几篇文章学习了 关于设备树文件的编译&#xff0c;设备树文件的调用。 本文开始学习 设备树文件的语法。具体学习设备节点与标准属性。 二. 设备树文件之设备节点与标准属性 1. 设备节点 设备树 是采用树形结构来描述板子上的设备信息的文件&#xff0c;每…...

文件管理工具.netcore资源文件管理

文件管理工具 怎么快速有效的管理我的文件包括文件夹&#xff0c;需求功能是 模糊搜索显示匹配的文件夹或文件数据 快速打开文件夹位置 在windows直接查看搜索速度太慢&#xff0c;范围宽泛&#xff0c;整理所需资源文件名和文件本机路径保存在数据库&#xff0c;可以在数据库中…...

go-carbon v2.3.4 发布,轻量级、语义化、对开发者友好的 Golang 时间处理库

carbon 是一个轻量级、语义化、对开发者友好的 golang 时间处理库&#xff0c;支持链式调用。 目前已被 awesome-go 收录&#xff0c;如果您觉得不错&#xff0c;请给个 star 吧 github.com/golang-module/carbon gitee.com/golang-module/carbon 安装使用 Golang 版本大于…...

vue3 内置组件

文章目录 前言一、过渡效果相关的组件1、Transition2、TransitionGroup 二、状态缓存组件&#xff08;KeepAlive&#xff09;三、传送组件&#xff08;Teleport &#xff09;四、异步依赖处理组件&#xff08;Suspense&#xff09; 前言 在vue3中 其提供了5个内置组件 Transiti…...

MFC如何动态创建button按钮并添加点击事件

在MFC中&#xff0c;可以使用CButton类来动态创建按钮。下面是一个示例代码&#xff0c;演示了如何动态创建按钮并添加点击事件&#xff1a; 在对话框类的头文件中声明按钮变量&#xff1a; CButton m_btnDynamic;在对话框的OnInitDialog()函数中使用Create()函数创建按钮&am…...

wordpress模板更改页面/百度帐号

一、自定义指令 1、transclude 2、controllerAs&#xff1a;给控制器起一个别名 3、link&#xff1a;在指令中操作DOM&#xff0c;需要用到该属性&#xff0c;其属性值为一个函数&#xff0c;称为链接函数 语法: link:function(scope,element,attrs){ 操作DOM } -scope&#xf…...

做企业内部管理网站要多久/中国十大seo公司

转载自 https://www.jianshu.com/p/6a792118fae4 (一)前言 React Native开发使用到微信好友或者微信朋友圈分享功能&#xff0c;闲来没事写一下&#xff0c;需要的可以看下 (二)应用申请审核 首先微信开发平台去注册账号并且创建一个移动应用。(地址:https://open.weixin.…...

铜仁市建设招投标网站/杭州上城区抖音seo有多好

http://m.elecfans.com/article/453395.html...

网站建设使用的什么软件/百度广告搜索推广

目录 Axios特征axios提供主要三种发起请求的方式方式一&#xff1a;直接axios实例直接call方式方式二&#xff1a;通过axios实例提供的不同http请求方式的方法方式三&#xff1a;其实是从第二种方式中单独提出来的响应模式给axios对象设置回调函数总结Axios github文档&#xf…...

做企业网站软件/怎么做网站推广

git仓库地址&#xff1a;GitHub - AceAZhe/py-tools: py实用工具 基于python的pyqt5实现的小工具...

宿迁网站开发/公众号如何推广引流

JS提交中文encodeURI两次 2016-09-20 10:25 958人阅读 评论(0) 收藏 举报分类&#xff1a;JS&#xff08;7&#xff09; 版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 目录(?)[] escape不编码字符有69个&#xff1a;*&#xff0c;&#xff0c;-…...