ACM练习——第二天

news2024/11/20 12:28:53

        今天又是一天课,满课,很累哈,计组真的挺难的,但是多学学还是可以学明白。行吧,继续进入今天的ACM练习,现阶段都是主要练习Java到C++的语言过渡。

        因为今天的题目多半都是昨天的延伸,我就不提供Java的对比代码了。

1.题目一

题目来自牛客网

B-A+B(2)_OJ在线编程常见输入输出练习场 (nowcoder.com)

        呃,有啥疑问,t是多少就循环多少次呗。

然后记住C++的输入输出语句就行

上代码:

#include <iostream>

int main() {
    // 读取数据组数 t
    int t;
    std::cin >> t;

    // 处理每一组数据
    for (int i = 0; i < t; i++) {
        // 读取两个整数 a 和 b
        int a, b;
        std::cin >> a >> b;

        // 计算并输出 a+b 的结果
        std::cout << a + b << std::endl;
    }

    return 0;
}

2.题目二

也是计算a+b

 代码示例:

#include <iostream>

using namespace std;

int main(){
    // 在a和b都是0的时候结束
    while(true){
        int a;
        int b;
        // 给ab赋值
        cin >> a;
        cin >> b;
        // 如果为0,就不输出结果了,然后直接结束循环
        if(a == 0 && b == 0){
            break;
        }
        // 如果至少一方不为0输出结果
        cout << a + b << endl;
    }
    
    return 0;
}

3.题目三

        成功将a+b净化为了a+b+c+...+n

        那就直接展示吧~~学了那么多,这点还是可以拿捏的只是C++的语法不同罢了

代码示例:

#include <iostream>

using namespace std;

int main(){
    // 先将a,b定义出来
    int x;
    // 然后进入死循环,直到遇到0
    while(true){
        int n;
        cin >> n;
        if(n == 0){
            break;
        }
        int result = 0;
        for(int i = 0; i < n; i++){
            // 然后进行每次的累加求和
            cin >> x;   
            result += x;
        }
        cout << result << endl;
        
    }
    
    return 0;
    
}

4.题目四

        分析一下,第一行表示有多少组数据,

        然后每行的第一个数就是这组数据的数量,简单~!~~

        其实就是前几个题目的结合

代码示例:

#include <iostream>

using namespace std;

int main(){
    // 先接收第一行的参数,获得所有的数据组的数量
    int allLine;
    cin >> allLine;
    // 然后就可以进入allLine次数循环
    for(int i = 0; i < allLine ; i++){
        // 然后在这每次的循环中再进行每行的第一个数字次数的循环
        int thisLine;
        cin >> thisLine;
        int result = 0;
        for(int j = 0; j < thisLine; j++){
            int x;
            cin >> x;
            result += x;
        }
        cout << result << endl;
    }
    return 0;
}

5.题目五

        那这就需要自己来判断循环什么时候结束了

        每一行的第一个数是这一行要计算的数据量

        相比如前几个有明确的结束条件,这里的结束条件算是比较的隐蔽,  

但是仔细一点仍然可以发现。

        就是数据数据为Null的时候,就是结束的时候,所以结束条件需要写在前面即可。

代码示例:

#include <iostream>

using namespace std;

int main(){
    // 首先接收开头的第一个数据
    // 若数据为Null则结束循环
    while(true){
        int n;
        if(!(cin >> n)){
            // 为NULL(为0)则结束循环
            break;
        }
        // 走到这里则不为0,而且我们还拿到了每行要取多少个元素相加
        int result = 0;
        for(int i = 0; i < n; i++){
            int x;
            cin >> x;
            result += x;
        }
        // 返回数值,记得添加换行符
        cout << result << endl;
        
    }
    return 0;
    
}

6.题目六

        这里就没有每次很好的判断条件了。

        在Java之中我可以很快的告诉你使用readLine()这个API来解决,但是在C++中我还是查询了一下,

        可以使用std::getline读取一行数据

        `std::getline` 是 C++ 标准库中的一个函数,用于从输入流中读取一行数据。它的基本用法如下:

```cpp
#include <iostream>
#include <string>

int main() {
    std::string line;

    // 逐行读取输入
    while (std::getline(std::cin, line)) {
        // 对读取到的一行数据进行处理
        // ...
    }

    return 0;
}
```

        在上述示例中,`std::getline` 函数被用来从标准输入流 (`std::cin`) 中逐行读取数据,并将每行的内容存储在名为 `line` 的字符串中。循环会继续执行,直到 `std::getline` 遇到文件末尾或者发生了读取错误。

        你可以在循环中对读取到的每一行数据进行进一步处理,比如使用 `std::istringstream` 分割字符串或者进行其他操作。

        如果你想指定一个定界符来分割行内的内容,你可以使用 `std::getline` 的另一个版本,指定第三个参数作为定界符:

```cpp
#include <iostream>
#include <string>
#include <sstream>

int main() {
    std::string line;

    // 逐行读取输入
    while (std::getline(std::cin, line)) {
        std::istringstream iss(line);
        std::string token;

        // 以空格为分隔符,逐个读取字符串
        while (std::getline(iss, token, ' ')) {
            // 对读取到的字符串进行处理
            // ...
        }
    }

    return 0;
}
```

        在这个例子中,`std::getline(iss, token, ' ')` 使用空格作为分隔符,将 `iss` 流中的内容逐个读取到 `token` 字符串中。这样,你就可以逐个处理分隔开的字符串。

        再详细说一下使用std::istringstream处理数据

        `std::istringstream` 是 C++ 标准库中的一个类,用于将字符串当做输入流来处理。它可以从字符串中提取数据,就像 `std::cin` 从标准输入流中提取数据一样。以下是一个简单的示例,演示了如何使用 `std::istringstream`:

```cpp
#include <iostream>
#include <sstream>
#include <string>

int main() {
    // 定义一个字符串
    std::string input_str = "10 20 30 40 50";

    // 使用 std::istringstream 对字符串进行处理
    std::istringstream iss(input_str);

    int num;
    
    // 从 iss 中逐个读取整数并输出
    while (iss >> num) {
        std::cout << "Read: " << num << std::endl;
    }

    return 0;
}
```

        在这个示例中,我们首先定义了一个包含空格分隔整数的字符串 `input_str`。然后,我们使用 `std::istringstream` 类创建了一个字符串流 `iss`,并将字符串 `input_str` 传递给它。接下来,我们使用 `while (iss >> num)` 循环,它会逐个从字符串流中读取整数,并输出到标准输出流中。

        你可以使用类似的方法在你的程序中处理输入字符串。例如,你可以在循环中使用 `iss >> num` 读取整数,然后对这些整数进行累加等操作。

然后又有问题了

这里读取的iss中不是字符串吗,为什么可以直接和整数类型累加呢?

答:
  iss >> num 会从字符串流 iss 中读取一个字符串,并使用 std::stoi 将其转换为整数。这样,你就可以逐个读取字符串并将其转换为整数后进行累加。

还有一点就是,在C++中其实是没有string类型的,你需要使用字符数组替代或者采用标准函数库

#include <string>中的    std::string

代码示例:

#include <iostream>
#include <sstream>
#include <string>

using namespace std;

int main(){
    // 先定义出接收这一行字符串的数据
    string line;
    
    // 开始循环获取
    while(getline(cin, line)){
        istringstream iss(line);
        int num;
        int result = 0;
        
        // 逐个读取整数并且累加
        while(iss >> num){
            result += num;
        }
        
        cout << result << endl;
    }
    return 0;
    
}

完美运行!

然后我问了基地学习C++的负责人又给出了如下代码,也可以完美运行,更实用

#include<bits/stdc++.h>
using namespace std;
    
int main()
{
    int n;
    while(cin >> n)
    {
        int sum = n;
        while(cin.get() != '\n')
        {
            int m;
            cin >> m;
            sum += m;
        }
        cout << sum << endl;
    }
    return 0;
}

结语

今天又学习到了一些C++的语法,和一些很使用的操作,又是收获满满的一天\(^o^)/

ヾ( ̄▽ ̄)Bye~Bye~

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

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

相关文章

Java主流分布式解决方案多场景设计与实战

Java的主流分布式解决方案的设计和实战涉及到多个场景&#xff0c;包括但不限于以下几点&#xff1a; 分布式缓存&#xff1a;在Java的分布式系统中&#xff0c;缓存是非常重要的一部分。常用的分布式缓存技术包括Redis、EhCache等。这些缓存技术可以用来提高系统的性能和响应…

2023软件测试面试跳槽必备

你眼中的软件测试岗位是怎样的&#xff1f;大部分人可能会给出这样的回答&#xff1a;“测试&#xff1f;简单啊&#xff0c;没什么技术含量&#xff0c;无非就是看需求、看业务手册、看设计文档、然后点点功能是否实现&#xff0c;麻烦点的就是测试下部署安装是否出现兼容性问…

开讲:长江航道工程局举办首届云表无代码培训班

11月9日至10日&#xff0c;公司联合珠海乐图软件有限公司在总部机关举办了首届云表无代码编程开发初级培训班。公司所属单位工程、成本、财务等相关业务部门及项目部管理人员参加培训&#xff0c;公司总工程师张晏方作开班动员讲话。 张晏方指出&#xff0c;公司自主开发的云表…

java生成docx文档, docx文档动态饼图

背景: 最近接了个需求, 要求生成日报, 大概如下图所示: 其中*表示变量, 看到要动态生成doc给我难受坏了,为什么会有这种需求? 然后看到里面还要动态生成饼图, oh, no.........没有办法, 硬着头皮上吧. 于是就搜了下java生成docx的方式, 看到的, 比较靠谱的一种通过freemake…

【每日一题】1334. 阈值距离内邻居最少的城市-2023.11.14

题目&#xff1a; 1334. 阈值距离内邻居最少的城市 有 n 个城市&#xff0c;按从 0 到 n-1 编号。给你一个边数组 edges&#xff0c;其中 edges[i] [fromi, toi, weighti] 代表 fromi 和 toi 两个城市之间的双向加权边&#xff0c;距离阈值是一个整数 distanceThreshold。 …

[Linux] ssh远程访问及控制

一、ssh介绍 1.1 SSH简介 SSH&#xff08;Secure Shell&#xff09;是一种安全通道协议&#xff0c;主要用于实现远程登录、远程复制等功能的字符接口。SSH 协议包括用户在登录时输入的用户密码、双方之间的通信。 加密数据传输&#xff0c;SSH 是一种建立在应用层和传输层上…

<MySQL> 查询数据进阶操作 -- 聚合查询

目录 一、聚合查询概述 二、聚合函数查询 2.1 常用函数 2.2 使用函数演示 2.3 聚合函数参数为*或列名的查询区别 2.4 字符串不能参与数学运算 2.5 具有误导性的结果集 三、分组查询 group by 四、分组后条件表达式查询 五、MySQL 中各个关键字的执行顺序 一、聚合查询…

【2013年数据结构真题】

highlight: a11y-dark 41题 王道解析&#xff1a; 算法的策略是从前向后扫描数组元素&#xff0c;标记出一个可能成为主元素的元素Num 。然后重新计数&#xff0c;确认Num是否是主元素。算法可分为以下两步&#xff1a; 选取候选的主元素&#xff1a;依次扫描所给数组中的每个…

【数据结构 | 链表】leetcode 2. 两数相加

个人主页&#xff1a;兜里游客棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里游客棉花糖 原创 收录于专栏【LeetCode】 原题链接&#xff1a;点击直接跳转到该题目 目录 题目描述解题代码 题目描述 给你两个 非空 的链表&#xff0c;表示两个非…

降低城市内涝风险,万宾科技内涝积水监测仪的作用

频繁的内涝会削弱和损坏城市的关键基础设施&#xff0c;包括道路、桥梁和公用设施。城市内涝风险降低可以减少交通中断事件&#xff0c;也可以保护居民安全并降低路面维修等成本&#xff0c;进一步确保城市基本服务继续发挥作用。对城市可持续发展来讲有效减少内涝的风险是重要…

ESP32网络开发实例-将DS18B20传感器读数发送到InfluxDB

将DS18B20传感器读数发送到InfluxDB 文章目录 将DS18B20传感器读数发送到InfluxDB1、InfluxDB、DS18B20介绍2、软件准备3、硬件准备4、代码实现在本文中,我们将介绍如何将 DS18B20传感器读数发送到 InfluxDB 时间序列数据库。 使用 InfluxDB 数据库的一大特点是可以在确定的时…

python 爬虫之requests 库以及相关函数的详细介绍

get 函数 当你使用 requests.get 函数时&#xff0c;你可以按照以下步骤来发起一个 GET 请求&#xff1a; 导入 requests 模块&#xff1a; 在你的 Python 脚本或程序中&#xff0c;首先导入 requests 模块。 import requests指定目标 URL&#xff1a; 设置你要请求的目标 URL…

4路光栅尺磁栅尺编码器解码转换5MHz高速差分信号转Modbus TCP网络模块 YL97-RJ45

特点&#xff1a; ● 光栅尺磁栅尺解码转换成标准Modbus TCP协议 ● 光栅尺5V差分信号直接输入&#xff0c;4倍频计数 ● 模块可以输出5V的电源给光栅尺供电 ● 高速光栅尺磁栅尺计数&#xff0c;频率可达5MHz ● 支持4个光栅尺同时计数&#xff0c;可识别正反转 ● 可网…

啊?印第安碳纤维限量款?复古与性能的结合吗Indian FTR x 100% R Carbon

印第安作为美国的老牌摩托车厂大家都不陌生了&#xff0c;和哈雷有一点比较大的区别是印第安的车还是考虑马力性能的&#xff0c;也是敢于标出自己的马力参数数据&#xff0c;就比如印第安的FTR系列。 以泥地赛道为灵感设计的印第安FTR运动街车发布了最新的限量联名款车型&…

spring cloud alibaba 简介

微服务搭建组件选型 1.服务注册中心 Nacos(spring-cloud-alibaba) 2.服务通信 OpenFeign(spring-cloud) 3.服务熔断、降级、限流 Sentinel(spring-cloud-alibaba) 4.网关 Gateway(spring-cloud) 5.服务配置中心 …

ARM64 linux并发与同步之经典自旋锁

1.3 经典自旋锁 在实际项目中临界区数据有可能会修改一个数据结构或者链表中的数据&#xff0c;在整个过程中要保证原子性&#xff0c;才不会影响数据的有效性&#xff0c;这个过程使用原子变量不合适&#xff0c;需要使用锁机制来完成&#xff0c;自旋锁&#xff08;spinlock&…

深度学习实战59-NLP最核心的模型:transformer的搭建与训练过程详解,手把手搭建与跑通

大家好,我是微学AI,今天给大家介绍一下深度学习实战59-NLP最核心的模型:transformer的搭建与训练过程详解,手把手搭建与跑通。transformer是一种基于自注意力机制的深度学习模型,由Vaswani等人在2017年的论文《Attention is All You Need》中提出。它最初被设计用来处理序…

香港科技大学广州|机器人与自主系统学域博士招生宣讲会—电子科技大学专场!!!(暨全额奖学金政策)

在机器人和自主系统领域实现全球卓越—机器人与自主系统学域 硬核科研实验室&#xff0c;浓厚创新产学研氛围&#xff01; 教授亲临现场&#xff0c;面对面答疑解惑助攻申请&#xff01; 一经录取&#xff0c;享全额奖学金1.5万/月&#xff01; &#x1f559;时间&#xff1a;…

防爆五参数气象仪的科技力量

WX-FBQ2 随着科技的不断进步&#xff0c;气象监测设备也在不断升级和完善。 防爆五参数气象仪是一种可以同时监测温度、湿度、压力、风速和风向五个基本气象参数的仪器。它采用了气象监测技术&#xff0c;不仅可以实时监测气象数据&#xff0c;还可以对数据进行分析和处理。 …

git使用patch进行补丁操作

文章目录 前言一、format-patch/am生成和应用补丁1、生成2、应用 二、patch文件解读 前言 在软件开发中&#xff0c;代码协作和版本管理是至关重要的。Git 是一个流行的分布式版本控制系统&#xff0c;它提供了各种功能来简化团队合作和代码管理。但是如何给已有项目打补丁&am…