C++常用的输入输出方法(ACM模式)

文章目录

  • 前言
  • 一、输入输出方法
    • 1、cin
    • 2、getline()
    • 3、getchar()
  • 二、算法案例
    • 1、一维数组
      • 1.1 输入固定长度
      • 1.2长度不固定
    • 2、固定二维数组
    • 3、以非空格隔开的元素输入
    • 3、常见数据结构定义以及输入
      • 3.1 链表

前言

C++中的输入输出函数有很多,我们本章只针对大部分算法题的输入输出。


一、输入输出方法

1、cin

cinC++中, 标准的输入流对象
注意: cin以空格、tab、换行符作为分隔符

#include <iostream>
using namespace std;int main() {int num;cin >> num;cout << num << endl;return 0;
}

在这里插入图片描述

2、getline()

cin在读取字符串间有空格的时候会被打断,这时候就需要getline()函数
注意: getline()遇到换行符结束

#include <iostream>
#include "string"
using namespace std;int main() {string str;getline(cin, str);cout << str << endl;return 0;
}

在这里插入图片描述

3、getchar()

从缓存区中读出一个字符

#include <iostream>
using namespace std;int main() {char ch;ch = getchar();cout << ch << endl;return 0;
}

在这里插入图片描述

二、算法案例

1、一维数组

1.1 输入固定长度

首先输入待输入元素个数,然后输入元素(以空格隔开)
注意这里的元素也可以是其他数据类型,比如字符串abc,只需要修改vector为对应的数据类型

#include <iostream>
#include <vector>using namespace std;int main() {int n;cin >> n;vector<int> vec(n);for (int i = 0; i < n; i++) {cin >> vec[i];}for (int i = 0; i < vec.size(); i++) {cout << vec[i] << ' ';}return 0;
}

在这里插入图片描述

1.2长度不固定

注意这里的元素也可以是其他数据类型,比如字符串abc,只需要修改vector为对应的数据类型

#include <iostream>
#include <vector>using namespace std;int main() {int num;vector<int> vec;while (cin >> num) {vec.push_back(num);if (getchar() == '\n') break;}for (int i = 0; i < vec.size(); i++) {cout << vec[i] << ' ';}return 0;
}

在这里插入图片描述

2、固定二维数组

第一次输入
第二次按照空格和换行符输入元素

#include <iostream>
#include <vector>using namespace std;int main() {int m;int n;cin >> m >> n;vector<vector<int>> vec(m, vector<int>(n));for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {cin >> vec[i][j];}}for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {cout << vec[i][j] << ' ';}}return 0;
}

在这里插入图片描述

3、以非空格隔开的元素输入

如果输入的是a,b,c这种以非空格或者换行符隔开的,直接以字符串读入,然后分割

#include <iostream>
#include <vector>using namespace std;int main() {string str;getline(cin, str);vector<int> vec;int fast = 0;for (int slow = 0; slow < str.size(); slow++) {fast = slow;while (str[fast] != ',' && fast < str.size()) {fast++;}string tmp = str.substr(slow, fast - slow);vec.push_back(stoi(tmp));slow = fast;}for (int i = 0; i < vec.size(); i++) {cout << vec[i] << ' ';}return 0;
}

在这里插入图片描述

3、常见数据结构定义以及输入

3.1 链表

#include <iostream>
using namespace std;// 链表定义
struct ListNode {int val;ListNode *next;ListNode() : val(0), next(nullptr) {}ListNode(int x) : val(x), next(nullptr) {}ListNode(int x, ListNode *next) : val(x), next(next) {}
};int main()
{ListNode* dummyHead = new ListNode(0);//虚拟头节点ListNode* pre = dummyHead;ListNode* cur = nullptr;int num;while(cin >> num){//设置为-1退出if(num == -1) break;cur = new ListNode(num);pre->next = cur;pre = cur;}cur = dummyHead->next;// 输出单链表的valuewhile(cur){cout << cur->val << ' ';cur = cur->next;}return 0;
}

在这里插入图片描述


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

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

相关文章

上位机图像处理和嵌入式模块部署(树莓派4b开机界面程序自启动)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们学习了如何在树莓派4b上面开发qt&#xff0c;也学习了如何用/etc/rc.local启动控制台程序&#xff0c;那今天我们继续学习一下如何利用树莓…

docker compose安装redis

一、安装准备 在docker hub查看redis镜像版本。查看地址如下&#xff1a; Dockerhttps://hub-stage.docker.com/_/redis/tags 二、拉取docker镜像 我这里用redis:6.2.14版本&#xff0c;先拉取镜像。命令如下&#xff1a; docker pull redis:6.2.14 查看刚刚下载的镜像&am…

[python数据处理系列] 深入理解与实践基于聚类的过采样与欠采样技术:以K-Means为例

目录 一、过采样介绍 (一)什么是过采样 (二)过采样的优点 (三)过采样的缺点 二、欠采样介绍 (一)什么是欠采样 (二)欠采样的优点 (三)欠采样的缺点 三、基于聚类的欠抽样方法(K-Means欠采样/KMeans-Undersampling) (一)KMeans欠采样原理及其步骤介绍 (二)为什么不采…

clickhouse学习笔记05

ClickHouseSpringBoot2.XMybatisPlus整合搭建 添加需要的依赖&#xff1a; 添加clickhouse依赖&#xff1a; 配置数据库配置&#xff1a; 我们框架就搭建完了。 ClickHouse的项目案例统计需求讲解 ClickHouse的项目案例统计库表和数据准备 添加数据&#xff1a; 数据都插入进来…

js逆向进阶篇-某团酒店

提示!本文章仅供学习交流,严禁用于任何商业和非法用途,未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,如有侵权,可联系本文作者删除! 案例分析: 先来看看请求中有哪些参数是需要我们逆向,如下: mtgsig、fp、roh…

ERROR: [7df2405] missing Change-Id in commit message footer

git push origin HEAD:refs/for/[分支名] 使用“git push origin HEAD:refs/for/[分支名]”,报错信息见下图 报错信息:ERROR: [7df2405] missing Change-Id in commit message footer 解决办法 根据git的提示依次执行下面的语句即可 第一步:输入下面的语句,下载一个 g…

Java---数据类型与变量

1.字面常量 字面常量就是我们经常所说的常量&#xff0c;常量即在程序运行期间&#xff0c;固定不变的量。且常量是无法改变的&#xff0c;如果我们的代码有改变常量的操作&#xff0c;程序就会报错。 1.1字面常量的分类 字符串常量&#xff0c;整型常量&#xff0c;浮点数常…

FileLink内外网文件摆渡系统产品介绍

在现代企业中&#xff0c;往往存在着多个网络、系统之间的数据孤岛问题&#xff0c;数据难以互相访问和共享。 一、常用的内外网文件摆渡方式 传统的数据交换方式往往需要人工介入&#xff0c;效率低下且容易出错。如&#xff1a;U盘、FTP、VPN等&#xff0c;极易引发各种各样…

Mysql事务—隔离级别—脏读、不可重复读、幻读-遥遥领先版

事务的基本概念 事务就是一组原子性的操作&#xff0c;这些操作要么全部发生&#xff0c;要么全部不发生。事务把数据库从一种一致性状态转换成另一种一致性状态。 事务最经典也经常被拿出来说例子就是转账了。 假如小明要给小红转账1000元&#xff0c;这个转账会涉及到两个…

libcudart.so.10.2: cannot open shared object file: No such file or directory

文章目录 整体过程细节在虚拟环境中安装cuda 10.2在虚拟环境中安装cuda 12.1 整体过程 首先出现这个报错说明在/usr/local/cuda-11.5/lib64目录中确实没有libcudart.so.10.2这个文件&#xff0c;然后按照网上的教程&#xff0c;我在虚拟环境中安装了cuda10.2&#xff08;由于用…

mysql面试题九(SQL优化)

目录 1.一条 SQL 是如何执行的 2.索引失效的几种情况 3.EXPLAIN 4.Where 子句如何优化 5.超大分页或深度分页如何处理 6.大表查询如何优化 7.分库分表 基本概念 分库分表方法 水平拆分 垂直拆分 分库分表后的注意事项 1.一条 SQL 是如何执行的 在MySQL中&#xff0…

uni-app - 使用地图功能打包安卓apk的完美流程以及重要的注意事项(带您一次打包成功)

在移动应用开发中&#xff0c;地图功能是一个非常常见且实用的功能&#xff0c;可以帮助用户快速定位并浏览周边信息。而在uni-app开发中&#xff0c;使用地图功能也是一项必备技能。本文将介绍uni-app使用地图功能打包安卓apk的注意事项&#xff0c;帮助开发者顺利完成地图功能…

掼蛋跟牌技巧

掼蛋跟牌是指其他玩家领出牌&#xff0c;自己跟着出牌&#xff0c;在跟牌的时候&#xff0c;分为强牌和弱牌两种情况&#xff0c;一般强牌以顺牌为主&#xff0c;弱牌以顶牌为主。 一、上家领出牌 在游戏前期&#xff0c;上家领出牌的时候&#xff0c;应该尽量跟牌&#xff0c;…

Pulsar 2

文章目录 一、Pulsar高级组件基本使用1、Funcation(轻量级计算流程)概念与使用Function背景介绍什么是Functions如何使用 2、Pulsar Connector 连接器Pulsar Connector 连接器 ----> Pulsar Flink Connector 3、Transactions事务支持相关的操作Pulsar如何实现Exactly-OncePu…

2024年的Java版本选择?java 17 安装

文章目录 2024年的Java版本选择&#xff1f;java 1.8 和 java17 什么区别&#xff1f;java 17 安装windows 11安装java 17C:\Program Files\Common Files\Oracle\Java\javapath是什么 2024年的Java版本选择&#xff1f; 3年前&#xff0c;java 1.8是市场主流&#xff08;还有一…

BUU_RE

findit String m String.valueOf(x) valueOf()将不同类型数据转换为字符串 m.equals(edit.getText().toString()) edit.getText()通常用于从用户界面中获取文本输入&#xff0c;toString()方法将其转换为字符串&#xff0c;然后使用equals()方法进行比较 我改成了c代码&a…

乐观锁悲观锁

视频&#xff1a;什么是乐观锁&#xff1f;什么是悲观锁&#xff1f;_哔哩哔哩_bilibili

大象机器人开源六轴协作机械臂myCobot 320 手机摄影技术!

引言 有没有遇到过这样的情况&#xff1a;当你手持手机或相机准备拍摄视频时&#xff0c;心中已经构想了完美的画面&#xff0c;但却因为实际的限制无法捕捉到理想中的角度&#xff1f;这种情况可能会让人感到挫折。例如&#xff0c;如果想要从地面一只蚂蚁的视角拍摄&#xff…

【数据结构7-1-查找-线性-二分法-二叉树-哈希表】

目录 1 查找基本概念2 线性表的查找2.1 顺序查找2.2 二分法查找2.3 分块查找 3 树表的查询3.1 二叉排序树3.1.1 定义3.1.2 二叉树的建立、遍历、查找、增加、删除&#xff1a;3.1.3 代码实现&#xff1a; 3.2 平衡二叉树3.2.1 平横因子3.2.2 不平横树的调整-左旋3.2.3 不平横树…

[系统安全] 六十.威胁狩猎 (1)APT攻击检测及防御与常见APT组织的攻击案例分析

您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列。因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全、逆向分析和恶意代码检测,“系统安全”系列文章会更加聚焦,更加系…