C++练习题1-9

文章目录

  • NO1、选出妃子、宫女和嬷嬷
  • No2、根据数字判断月份
  • No3、循环计数
  • No4、循环选数
  • No5、玩转字符
  • No6、计算字符串长度
  • No7、显示字符串中的字符
  • No8、字符串反转
  • No9、二维数组的应用

NO1、选出妃子、宫女和嬷嬷

在这里插入图片描述
其他要求:

  • 超女用结构体表示
  • 不要嵌套if
  • 输入所有数据后再判断
#include <iostream>
#include <string>

using namespace std;
struct CGirl {
    int age;
    int high;
    string sc;
    //c风格字符串 char sc[31];  字符串比较就要用 strcmp
    bool yz;
};

int main() {
    CGirl g;
    cout << "请依次输入年龄、身高(cm)、身材(火辣/普通)、颜值(漂亮/一般):";
    string stringYz{0};
    cin >> g.age >> g.high >> g.sc >> stringYz;
    g.yz = (stringYz == "漂亮") ? true : false;
    if ((g.age >= 18 && g.age <= 25) && (g.high >= 165 && g.high <= 178) && (g.sc == "火辣") && g.yz)
        cout << "妃子" << endl;
    else if ((g.age >= 18 && g.age <= 30) && (g.high >= 160 && g.high < 165) && (g.sc == "火辣" || g.sc == "普通") &&
             g.yz)
        cout << "宫女" << endl;
    else if ((g.age >= 35 && g.age <= 40) && (g.high >= 155 && g.high < 165) && (g.sc == "飞机场" || g.sc == "普通") &&
             (!g.yz))
        cout << "嬷嬷" << endl;
/*    else
        cout<<"落选"<<endl;*/
    return 0;
}

No2、根据数字判断月份

在这里插入图片描述
其他要求:

  • ifelse或者switchcase实现
  • 字符串数组实现(C/C++)
#include <iostream>

int main() {
    int mouth = -1;
    std::cout << "请输入月份(1-12):";
    std::cin >> mouth;
    /*switch (mouth) {
        case 1:
            std::cout<<"January"<<std::endl;
            break;
        case 2:
            std::cout<<"February"<<std::endl;
            break;
        case 3:
            std::cout<<"March"<<std::endl;
            break;
        case 4:
            std::cout<<"April"<<std::endl;
            break;
        case 5:
            std::cout<<"May"<<std::endl;
            break;
        case 6:
            std::cout<<"June"<<std::endl;
            break;
        case 7:
            std::cout<<"July"<<std::endl;
            break;
        case 8:
            std::cout<<"August"<<std::endl;
            break;
        case 9:
            std::cout<<"September"<<std::endl;
            break;
        case 10:
            std::cout<<"October"<<std::endl;
            break;
        case 11:
            std::cout<<"November"<<std::endl;
            break;
        case 12:
            std::cout<<"December"<<std::endl;
            break;
        default:
            std::cout<<"输入错误"<<std::endl;
    }*/

    //效率高于ifelse 和 switch case
    char months[12][10] = {"January","February","March","April","May","June","July"
    ,"August","September","October","November","December"};

    if (mouth>=1&&mouth<=12)
        std::cout<<months[mouth-1]<<std::endl;
    else
        std::cout<<"输出错误"<<std::endl;
}

No3、循环计数

在这里插入图片描述

#include <iostream>

int main() {
    int sum = 0;
    int i = 0;
    while (i <= 100) {
        sum += i++;
    }
    std::cout << "1-100之间的和为" << sum << "\n";

    int num{0};
    int sumF{0};;
    for (;sumF <= 5000;) {
        std::cin>>num;
        sumF+=num;
    }
    std::cout << "输入的和为" << sumF << "\n";
    

    return 0;
}

No4、循环选数

在这里插入图片描述

/**
  ******************************************************************************
  * @file           : demo4.cpp
  * @author         : DELL
  * @brief          : None
  * @attention      : None
  * @date           : 2024-01-25
  ******************************************************************************
  */
#include <iostream>

int main() {
    int num{0}, count{0}, sum{0};
    while (std::cin >> num) {
        if (!num)break;
        if (num < 1 || num > 100)
            continue;
        count++;
        sum += num;
    }
    std::cout << "符合条件个数:" << count << "--" << "它们的和:" << sum << "\n";


    int n{1};
    //取余数
    while (n <= 100) {
        if (n % 5 == 0)
            std::cout << n << " ";
        ++n;
    }
    std::cout << "\n";
    //另外一种写法
    n = 5;
    while (n <= 100) {
        std::cout << n << " ";
        n += 5;
    }
    return 0;
}

No5、玩转字符

在这里插入图片描述

//ASCII A->65 Z->90   a->97  z->122
void printLastChar(char &&c) {
    if (!((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z'))) {
        std::cout << "输入不合规" << "\n";
        return;
    }
    if (c == 'Z' || c == 'z') {
        std::cout << c << "的后面没有字符" << "\n";
        return;
    }
    std::cout << c << "后面的字符是:" << char(c + 1) << std::endl;

}

在这里插入图片描述

int ctoi(const char ch) {
    if (ch < '0' || ch > '9') {
        std::cout << "参数不合规" << std::endl;
        return -1;
    }
    return int(ch - 48);
}

No6、计算字符串长度

在这里插入图片描述
其他要求

  • 封装成一个函数
  • for循环+数组表示法+临时变量
  • while+指针表示+临时变量
  • 不用临时变量->递归
int len(char *c) {
    //1、for循环+临时变量+数组表示法
    /*int len{0};
    for (; c[len] != '\0'; ++len);
    return len;*/

    //2、while循环+临时变量+指针表示法
    /*char *p = c;
    int len{0};
    while (*p++)
        ++len;
    return len;*/

    //3、递归思路+不采用临时变量
    //递归开销大于循环)(
    if (*c == '\0')return 0;//中止条件
    c++;//指针后移
    return len(c) + 1;//后移之后的长度+1=本来的长度
    //递归中我们可以把下一层当作已知参数,比如
}

No7、显示字符串中的字符

在这里插入图片描述

void printStr(const char *c, bool isSequence = true) {
    int len = strlen(c);
    if (isSequence) {
        for (int i = 0; i < len; ++i) {
            std::cout << c[i] << " ";
        }
    } else {
        for (int i = len - 1; i >= 0; --i) {
            std::cout << c[i] << " ";
        }
    }
    std::cout << std::endl;
}

No8、字符串反转

在这里插入图片描述

//使用另外一个字符串
char *reverse(const char *str){
    char *newStr = new char[30];
    int len = ::strlen(str);
    ::memset(newStr,0, sizeof(newStr));
    for (int i = 0,j=len-1; i < len;)
        newStr[i++] = str[j--];
    return newStr;
}

//原地反转
void reserveS(char *str){
    //abc   d
    int len = ::strlen(str);
    int n = len/2;
    for (int i = 0; i < n; ++i) {
        char tmp = str[i];
        str[i] = str[len-i-1];
        str[len-i-1] = tmp;
    }
}

No9、二维数组的应用

在这里插入图片描述
任务一

    double weights[3][4];
    ::memset(weights,0, sizeof(weights));
    double total{0};
    for (int i = 0; i < 3; ++i) {
        double sum{0};
        for (int j = 0; j < 4; ++j) {
            double weight{0};
            cout<<"请输入第"<<i+1<<"组第"<<j+1<<"个超女的体重:";
            cin>>weight;
            weights[i][j] = weight;
            sum+=weight;
        }
        total+= sum;
        cout<<"第"<<i+1<<"小组超女的平均体重:"<<sum/4<<"\n";
    }
    cout<<"所有小组超女的平均体重:"<<total/12<<endl;

任务二

    char names[3][11];
    ::memset(names,0, sizeof(names));
    for (int i = 0; i < 3; ++i) {
        cout<<"请输入超女姓名:";
        cin>>names[i];
    }
    for (int i = 0; i < 3; ++i) {
        cout<<"表白:"<<names[i]<<"\n";
    }

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

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

相关文章

博物馆环境监控系统的需求是怎么来的???

一、博物馆环境基本调研和识别需求 在环境监测软件的需求中&#xff0c;首要任务是进行深入的基本调研。这包括把握已有的环境监测技术、标准与法规&#xff0c;以及用户的实际操作过程和困惑。积极与环保局、科研院所、公司等沟通&#xff0c;可搜集很多原始记录&#xff0c;…

MySQL的SQL分类与数据类型

MySQL是一款广泛使用的关系型数据库管理系统&#xff0c;开源、免费且跨平台&#xff0c;常用于存储、管理和检索结构化数据&#xff0c;并通过SQL语言支持高效的数据操作与管理。 文章目录 何为SQLSQL分类DDLDMLDCLTCLDQL MySQL的数据类型数值型日期型字符串型二进制型其他类型…

网安培训第一期——sql注入+文件

文章目录 sql inject报错注入time盲注联合查询万能密码拦截和过滤ascii注入流程base64查询的列名为mysql保留关键字key 文件上传ffuf脚本要做的三件事网络端口进程用户权限文件文件包含文件下载XSS跨站请求攻击csrf跨站请求伪造 sql inject 判断输入字段是字符串还是数字 方法…

【GitHub项目推荐--开源小游戏】【转载】

01 回合制生存游戏 Cataclysm-DDA 是一款回合制生存游戏&#xff0c;背景设置在后世界末日的世界中。虽然有些人将其描述为“僵尸游戏”&#xff0c;但《大灾变》远不止这些。努力在一个严酷、持久、程序生成的世界中生存。 为食物、设备寻找一个死去的文明的残余物。或者&am…

arcgis 面要素shp数据处理

面要素是工作中用到最多的&#xff0c;那么面要素是如何形成的呢&#xff0c;主要还是由闭合的线要素转换而成。在面要素数据中常用的有以下几点&#xff1a; 一、 线转面&#xff08;要素转面&#xff09; 通过上一篇得到了点转线的要素&#xff0c;那么根据上节的线要素&am…

大模型学习笔记一:大模型应用开发基础

文章目录 一、大模型一些概念介绍 一、大模型一些概念介绍 1&#xff09;产品和大模型的区别&#xff08;产品通过调用大模型来具备的能力&#xff09; 2&#xff09;AGI定义 概念&#xff1a;一切问题可以用AI解决 3&#xff09;大模型通俗原理 根据上文&#xff0c;猜测下…

1174:长整数排序(指针专题)

题目描述 长整数排序。输入n 然后输入n个位数不超过100位的大整数&#xff0c;输入的整数可能含有前导0。将这n个长整数排序后输出&#xff0c;输出不含前导0。int greater(char *s1, char *s2){若s1指向的整数大于s2指向的整数&#xff0c;返回一个正整数;若s1指向的整数小于s…

重生之C++王者归来DAY1

c的概述 c的编程思想&#xff1a;面向对象、泛型编程。 1.第一个c程序 本文用的是QT&#xff0c;VS之类的也可 2.c面向对象的三大特性&#xff08;重要&#xff09; 封装:将相同属性的数据和方法封装在一起&#xff0c;加权限区分&#xff0c;用户只能借助公共方法操作 私有…

PCL 高斯投影正算:大地坐标转高斯投影坐标(C++详细过程版)

目录 一、算法原理二、代码实现三、结果展示四、测试数据PCL 高斯投影正算:大地坐标转高斯投影坐标(C++详细过程版)由CSDN点云侠原创。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、算法原理 二、代码实现 头文件及读取保存函数见:

SAP同步异常2:SAP删除获利能力特征字段后VF02发货过帐报错。

测试环境VF02过帐报错&#xff0c; 原因是之前删除已经激并使用的获利能力特征字段后&#xff0c;只处理了数据库&#xff0c;没有处理程序。 处理方案&#xff1a; 1、 KEA0 维护经营关注点&#xff1a; 这里WW291已经删除&#xff0c;但没有激活程序。 退出后&#xff…

web安全学习笔记【09】——算法2

基础[1] 入门-算法逆向&散列对称非对称&JS源码逆向&AES&DES&RSA&SHA #知识点&#xff1a; 1、Web常规-系统&中间件&数据库&源码等 2、Web其他-前后端&软件&Docker&分配站等 3、Web拓展-CDN&WAF&OSS&反向&负载…

2.数据结构 顺序表(自留笔记)

文章目录 一.静态顺序表&#xff1a;长度固定二.动态顺序表1.下面证明原地扩容和异地扩容代码如下&#xff1a;2.下面是写一段Print&#xff0c;打印数字看看&#xff1a;3.头插4.尾删5.头删6.越界一定会报错吗7.下标插入8.下标删除9.查找数字10.应用&#xff1a;利用顺序表写一…

跨平台同步 Shell 历史记录,无缝切换会话 | 开源日报 No.154

atuinsh/atuin Stars: 14.3k License: MIT Atuin 是一个用 SQLite 数据库替换现有 shell 历史记录的工具&#xff0c;可以记录命令的额外上下文&#xff0c;并提供可选且完全加密的历史同步功能。其主要功能和核心优势包括&#xff1a; 重新绑定 ctrl-r 和 up (可配置) 到全屏…

安装宝塔面板后k8s所在节点pod无法正常工作解决方法,kubernetes k8s 与宝塔面板冲突解决方法

在实际项目过程中我们使用了k8s 在生产环境中运行管理服务。 但是对服务器的状态管理我们使用了宝塔面板进行 K8s 版本1.2.8 宝塔面板 版本 8.05 操作步骤是这样的。 1.完成1.2.8 k8s的节点安装&#xff0c;并正常运行服务。 过程略 2.安装宝塔面板 ​ yum install -y …

不要在细节上雕花

前段时间在网上看到一张趣图,有人在社交网络分享学习编程的笔记,一行行手抄代码,字迹清晰,排版工整,霎是认真。 这可能只是个梗,但它让我想起我的学生年代。许多年前我还在念书的时候,班上有不少非常认真的同学,热衷于把课堂笔记做得非常漂亮、工整,有些甚至要用尺子对…

vue —— h函数的学习与使用

文章目录 一、h函数是什么&#xff1f;二、h函数格式说明及使用示例1&#xff1a;简单创建一个VNode&#xff08;vue3&#xff09;示例2&#xff1a;vue2中h函数用法示例3&#xff1a;vue3中h函数的用法vue2和vue3中h函数的区别&#xff1f; 三、h函数实现原理四、h函数常用场景…

java每日一记 —— MySQL窗口函数的使用

MySQL窗口函数 1.什么时窗口函数2.窗口函数的基本应用2.1.排序函数2.2.分布函数2.3.前后函数2.4.头尾函数2.5.聚合函数2.6.其他函数 窗口函数时MySQL8.0中的 注意&#xff1a;窗口函数也有人称为“开窗函数” 1.什么时窗口函数 引入问题&#xff1a;让我们从一个实际的问题开始…

redis排序

文章目录 简介SORT命令的实现ALPHA选项的实现ASC和DESCBYLIMITGET命令 类似映射STORE选项的实现多个命令的执行顺序 简介 Redis的SORT命令可以对列表键、集合键或者有序集合键的值进行排序。 SORT命令的实现 服务器执行SORT numbers 命令的详细步骤如下&#xff1a; 1&#…

在windows安装python版本的tensorrt

文章目录 一、进入官网&#xff0c;下载tensorrt包二、下载后解压并把相应文件拷入对应cuda的文件夹2.1 拷贝头文件2.2 拷贝静态库2.3 拷贝动态库 三、安装whl文件四、验证 一、进入官网&#xff0c;下载tensorrt包 https://developer.nvidia.com/tensorrt-download 这里需要…

接口文档swagger2的使用

Spring-接口文档swagger2 1、swagger/knife4j 接口文档配置 ​ knife4j是swagger的增强版本&#xff0c;更加的小巧、轻量&#xff0c;功能也是更加的完善&#xff0c;UI也更加的清晰&#xff1b;可以从swagger到knife4j无缝切换。 1.1 引入相关依赖 <!--接口文档的开发:…