C++练习题1-9

news2024/11/15 19:41:18

文章目录

  • 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";
    }

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构】72变的双端队列

双端队列 前言一、双端队列1.1 双端队列的定义1.2 输入受限的双端队列1.3 输出受限的双端队列1.5 输入输出都受限的双端队列1.6 小结 二、双端队列的使用2.1 双端队列的出队序列——暴力求解2.1.1 栈的出栈序列2.1.2 输入受限的双端队列2.1.3 输出受限的双端队列2.1.4 输入输出…

JCL中常用的DD语句

JCL中的DD语句介绍 ​ DD语句&#xff0c;主要定义数据集用的&#xff0c;也叫做DATASET DEFINE&#xff0c;分为定义设备的UNIT、VOLUME、SPACE&#xff0c;定义数据集的DSN、DISP、DCB,详细可以看英文版的《MVS JCL Reference》&#xff0c;还有一些特殊的DD&#xff0c;暂时…

一文掌握!九大提升 ECS 实例操作系统安全性技巧

云布道师 引言&#xff1a;【弹性计算技术公开课——ECS 安全季】第二节课程由阿里云弹性计算技术专家陈怀可带来&#xff0c;本文内容整理自他的课程&#xff0c;供各位阅览。 安全事件案例回顾与操作系统安全概念介绍 在介绍操作系统安全概念前&#xff0c;我们先来看一下…

每次打开都是:已在调试程序中暂停的处理

点击F12&#xff0c;把这个勾选去掉就可以了。

网安培训第二期——sql注入+中间件+工具

文章目录 宽字节注入插入注入二次注入PDO模式(动态靶机&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;)sql注入读取文件sql注入导出文件linux命令 10.12笔记sqlmapsqlmap参数 10.13笔记sqlmap 文件读写前后缀常用tamper及适用场景 10.…

操作系统-线程的概念(什么是线程 为什么线程共享进程资源 为什么线程切换开销低 引入线程的变化 线程属性 为啥要引入线程)

文章目录 总览什么是线程&#xff0c;为什么要引入线程引入线程机制的变化线程的属性 总览 什么是线程&#xff0c;为什么要引入线程 此时qq进程内的视频文字聊天传输文件可以同时进行&#xff0c;如果进程内部是顺序执行的话&#xff0c;那么将某一时刻只能执行一个功能&…

C语言王道练习题第七周两题

第一题 Description 输入一个学生的学号&#xff0c;姓名&#xff0c;性别&#xff0c;用结构体存储&#xff0c;通过 scanf 读取后&#xff0c;然后再 通过 printf 打印输出 Input 学号&#xff0c;姓名&#xff0c;性别&#xff0c;例如输入 101 xiongda m Output 输出…

基于YOLOv8与ByteTrack的车辆行人多目标检测与追踪系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标追踪、运动物体追踪

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

开源项目Git Commit规范与ChangeLog

一&#xff0c;conventional commit(约定式提交) Conventional Commits 是一种用于给提交信息增加人机可读含义的规范。它提供了一组用于创建清晰的提交历史的简单规则。 1.1 作用 自动化生成 CHANGELOG基于提交类型&#xff0c;自动决定语义化的版本变更向项目相关合作开发…

数学与计算机:一场幽默风趣的盲约

数学与计算机&#xff1a;一场幽默风趣的盲约 Mathematics and Computers: A Humorous and Witty Blind Date 大家好&#xff0c;今天我们将要探讨一个比猫和键盘之间的深刻关系更有趣的话题——数学和计算机的浪漫邂逅。这可不是一场普通的相亲&#xff0c;而是一场逻辑与算法…

Vue+OpenLayers7入门到实战:快速搭建Vue+OpenLayers7地图脚手架项目。从零开始构建Vue项目并整合OpenLayers7.5.2

返回《Vue+OpenLayers7》专栏目录:Vue+OpenLayers7 前言 本章针对Vue初学者,对Vue不熟悉,甚至还不会Vue的入门学生读者。 本章会详细讲解从NodeJS环境到npm环境的各个步骤,再到使用vue-cli脚手架快速生成项目,以及添加OpenLayers7地图库依赖,编写简单的xyz高德地图显示…

基于python豆瓣电影评论的情感分析和聚类分析,聚类分析有手肘法进行检验,情感分析用snownlp

基于Python的豆瓣电影评论的情感分析和聚类分析是一种用于探索电影评论数据的方法。 情感分析 情感分析旨在从文本中提取情感信息&#xff0c;并对其进行分类&#xff0c;如正面、负面或中性。在这里&#xff0c;我们使用了一个名为snownlp的Python库来进行情感分析。Snownlp是…

Excel:将截面数据转换成面板数据

原始截面数据如下&#xff1a; 步骤&#xff1a;数据——自表格/区域 点击确定&#xff0c;出现下图&#xff1a; 然后&#xff0c;在这个界面选择&#xff1a;“转换”——“逆透视列”下选择逆透视其他列。会出现面板数据形式。 然后&#xff0c;点击“主页”——关闭并上载即…

二叉搜索树操作题目:二叉搜索树中的搜索操作

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;二叉搜索树中的搜索操作 出处&#xff1a;700. 二叉搜索树中的搜索操作 难度 2 级 题目描述 要求 给定二叉搜索…

【java】6案例演示

关键字的定义和特点&#xff1a; 定义&#xff1a;被 Java 语言赋予了特殊含义&#xff0c;用做专门用途的字符串&#xff08;单词&#xff09; 特点&#xff1a;关键字中所有字母都为小写 保留字介绍 Java 保留字&#xff1a;现有 Java 版本尚未使用&#xff0c;但以后版本可…

Effective C++——关于重载赋值运算

令operator返回一个*this的引用 在重载,,*等运算符时&#xff0c;令其返回一个指向this的引用。 class MyClass {int* val; public:MyClass(int i) : val(new int(i)){}MyClass():val(new int(0)){}void print() {cout << *val << endl;}MyClass& operator(co…

【pytorch框架】使用 PyTorch 进行深度学习

1.Pytorch介绍 PyTorch 是由 Facebook 创建和发布的用于深度学习计算的 Python 库。它起源于早期的库 Torch 7&#xff0c;但完全重写。 它是两个最受欢迎的深度学习库之一。PyTorch 是一个完整的库&#xff0c;能够训练深度学习模型以及在推理模式下运行模型&#xff0c;并支…

Vue3 watch与watchEffect区别

✨ 专栏介绍 在当今Web开发领域中&#xff0c;构建交互性强、可复用且易于维护的用户界面是至关重要的。而Vue.js作为一款现代化且流行的JavaScript框架&#xff0c;正是为了满足这些需求而诞生。它采用了MVVM架构模式&#xff0c;并通过数据驱动和组件化的方式&#xff0c;使…

Unity中UGUI在Mask剪裁粒子特效的实现

在Unity使用Mask是剪裁不了粒子特效的&#xff0c;之前有想过RenderTexture来实现&#xff0c;不过使用RenderTexture不适合用于很多个特效&#xff0c;因为RenderTexture依赖Camera的照射&#xff0c;如果在背包中每种道具都有不同的特效&#xff0c;那使用RenderTexture则需要…

255:vue+openlayers 加载tomtom地图(多种形式)

第255个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+openlayers中添加tomtom地图,这里包含了多种形式,诸如中文标记、英文标记、白天地图、晚上地图、卫星影像图,高山海拔地形图等。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果 文章目录 示…