《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;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/298705.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Apache Paimon:Streaming Lakehouse is Coming

摘要&#xff1a;本文整理自阿里云智能开源表存储负责人&#xff0c;Founder of Paimon&#xff0c;Flink PMC 成员李劲松&#xff08;花名&#xff1a;之信&#xff09;、同程旅行大数据专家&#xff0c;Apache Hudi & Paimon Contributor 吴祥平、汽车之家大数据计算平台…

Nginx快速入门:worker、master进程的作用和热部署原理(十)

0. 引言 我们通过查询nginx进程&#xff0c;可以发现nginx有两个进程&#xff1a;worker和master。一个程序启动了两个进程&#xff0c;那么这两个进程的作用和区别是什么呢&#xff1f;nginx又是如何利用这两个进程进行工作的呢&#xff1f;nginx不停机热部署又是如何实现的&…

AI绘画Midjourney绘画提示词Prompt大全

一、Midjourney绘画工具 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭…

通俗易懂的15个Java Lambda表达式案例

文章目录 1. **实现Runnable接口**&#xff1a;2. **事件监听器**&#xff08;如Swing中的ActionListener&#xff09;&#xff1a;3. **集合遍历**&#xff08;使用forEach方法&#xff09;&#xff1a;4. **过滤集合**&#xff08;使用Stream API&#xff09;&#xff1a;5. …

OS_lab——bochs源码的编译与安装

1. 实验环境VMware station 15 Ubuntu 14.04.6 32位。2. 实验步骤2.1 安装虚拟机&#xff0c;并在虚拟机根目录下编译并安装bochs环境。 2.2 使用bochs自带工具bximage创建虚拟软驱。 2.3 编写引导程序boot.asm并用nasm编译得到引导文件boot.bin和boot.com。 2.4 修改bochs…

C# Emgu.CV4.8.0读取rtsp流录制mp4可分段保存

【官方框架地址】 https://github.com/emgucv/emgucv 【算法介绍】 EMGU CV&#xff08;Emgu Computer Vision&#xff09;是一个开源的、基于.NET框架的计算机视觉库&#xff0c;它提供了对OpenCV&#xff08;开源计算机视觉库&#xff09;的封装。EMGU CV使得在.NET应用程序…

二刷Laravel 教程(用户注册)总结Ⅳ

一、显示用户信息 1&#xff09;resource Route::resource(users, UsersController); 相当于下面这7个路由 我们先用 Artisan 命令查看目前应用的路由&#xff1a; php artisan route:list 2&#xff09; compact 方法 //我们将用户对象 $user 通过 compact 方法转化为一个关联…

Linux-v4l2框架

框架图 从上图不难看出&#xff0c;v4l2_device作为顶层管理者&#xff0c;一方面通过嵌入到一个video_device中&#xff0c;暴露video设备节点给用户空间进行控制&#xff1b;另一方面&#xff0c;video_device内部会创建一个media_entity作为在media controller中的抽象体&a…

亲,你相信数据吗?

对于这个问题&#xff0c;我们首先要看一下数据的属性&#xff0c;数据本身是中性的&#xff0c;只是信息的一个载体&#xff0c;从这个属性定义来看&#xff0c;我们是不能盲目相信或者不相信数据的。相不相信数据&#xff0c;其实是数据可靠性的问题&#xff0c;而数据可靠性…

我的NPI项目之设备系统启动(二) -- 系统启动阶段和分区的区别

系统启动的就几大阶段&#xff1a; 基于高通平台的Android OS启动过程&#xff0c;简单的说&#xff0c;可以分为一下几个部分&#xff1a; 之前一个比较老的平台大概是这样&#xff1a; 现在比较新的5G平台&#xff1a; 差别在这里&#xff0c;重点了解一下新平台的情况。xb…

大模型实战笔记02——大模型demo

大模型实战笔记02——大模型demo 1、大模型及InternLM模型介绍 2、InternLM-Chat-7B智能对话Demo 3、Lagent智能体工具调用Demo 4、浦语灵笔图文创作理解Demo 5、通用环境配置 注 笔记图片均为视频截图 笔记课程视频地址&#xff1a;https://www.bilibili.com/video/BV1Ci4y1…

彻底认识Unity ui设计中Space - Overlay、Screen Space - Camera和World Space三种模式

文章目录 简述Screen Space - Overlay优点缺点 Screen Space - Camera优点缺点 World Space优点缺点 简述 用Unity中开发了很久&#xff0c;但是对unity UI管理中Canvas组件的Render Mode有三种主要类型&#xff1a;Screen Space - Overlay、Screen Space - Camera和World Spa…

iptalbes详解

iptalbes防火墙 一、IPtables介绍 Iptables(以下简称Iptables)是unix/linux自带的一款优秀且开放源代码的完全自由的基于包过滤(对OSI模型的四层或者是四层以下进行过滤)的防火墙工具&#xff0c;它的功能十分强大&#xff0c;使用非常灵活&#xff0c;可以对流入和流出服务器…

深度学习|交叉熵

文章目录 什么是交叉熵如何构造信息量的函数关于 C 1 C_1 C1​参数的选择关于 C 2 C_2 C2​参数的选择 一个系统的熵如何比较两个系统的熵交叉熵在神经网络中的应用参考 什么是交叉熵 熵是用来衡量一个系统的混乱程度&#xff0c;混乱程度也其实代表着整个系统内部的不确定性。…

Oracle 日志路径查询介绍

数据库日志分析详解&#xff1a;  ORACEL RAC 体系架构分析  Oracle RAC 包含GI(Grid Infrastructure) 集群软件与Oracle数据库组成。  GI包含两个最主要的组件&#xff1a;Clusterware集群软件和ASM存储软件&#xff0c;这两个软件提供数据库高可用能力。  …

C++八股学习心得.6

1.C 异常处理 异常是程序在执行期间产生的问题。C 异常是指在程序运行时发生的特殊情况 异常提供了一种转移程序控制权的方式。C 异常处理涉及到三个关键字&#xff1a;try、catch、throw。 throw: 当问题出现时&#xff0c;程序会抛出一个异常。这是通过使用 throw 关键字来…

【动态规划】【 矩阵】【逆向思考】C++算法174地下城游戏

作者推荐 【动态规划】【字符串】扰乱字符串 本文涉及的基础知识点 动态规划 矩阵 逆向思考 LeetCode174地下城游戏 恶魔们抓住了公主并将她关在了地下城 dungeon 的 右下角 。地下城是由 m x n 个房间组成的二维网格。我们英勇的骑士最初被安置在 左上角 的房间里&#x…

Golang leetcode142 环形链表 暴力map 快慢指针法

文章目录 环形链表 leetcode142暴力遍历 map哈希记录快慢指针法 环形链表 leetcode142 该题目要求找到入环的第一个节点 我们可以通过map进行记录&#xff0c;没到新的节点查询是否经过原有节点 入环节点&#xff0c;上两个节点的next相同 若有入环节点&#xff0c;则一定能检…

TypeError: loaderUtils.getOptions is not a function

webpack 版本&#xff1a;^5.89.0 但是直接 pnpm add loader-utils 安装的版本比较新&#xff0c;会报错&#xff1a;TypeError: loaderUtils.getOptions is not a function。 解决方案&#xff1a;将低 loader-utils 版本&#xff0c;我这里使用 ^2.0.0 就不会再报这个错误了 …

【读书笔记】网空态势感知理论与模型(九)

对分析人员数据分类分流操作的研究 1.概述 本章节介绍一种以人员为中心的智能数据分类分流系统&#xff0c;该系统利用了入侵检测分析人员的认知轨迹。整合了3个维度的动态网络-人系统&#xff08;cyber-humber system&#xff09;&#xff1a;网空防御分析人员、网络监测数据…