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

news/2024/10/20 19:03:10/

文章目录

  • 前言
  • 一、输入输出方法
    • 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.ppmy.cn/news/1444250.html

相关文章

Java分布式ID

1 什么是分布式ID 分布式ID是指在分布式系统中生成的唯一标识符&#xff0c;用于标识不同实体或数据的唯一性。在分布式系统中&#xff0c;多台机器并行处理任务&#xff0c;为了确保生成的ID在整个系统中的唯一性&#xff0c;需要采用特殊的算法来生成分布式ID。 在传统的单机…

AIGC:开启内容创作新纪元,我们如何看待它的影响与前景?

AIGC的概念 AIGC&#xff08;Artificial Intelligence Generated Content&#xff09;的概念主要是指人工智能生成内容。 这是一种新的人工智能技术&#xff0c;它利用人工智能模型&#xff0c;根据给定的主题、关键词、格式、风格等条件&#xff0c;自动生成各种类型的文本、图…

配置etcd、apiserver使用的cpu和内存资源

etcd pod 默认使用的cpu和内存都是100M,当集群变大时,资源会不够用,导致异常,如: apiserver 默认使用cpu为250M k8s-master121 kubelet[31020]: E0425 14:41:54.026671 31020 controller.go:187] failed to update lease, error: etcdserver: request timed out kubelet[3…

POCEXP编写—多线程

POC&EXP编写—多线程 1. 前言2. 多进程&多线程2.1. 多进程2.1.1. 案例 2.2. 多线程2.2.1. 案例&#xff1a; 2.3. POC的案例&#xff08;模板&#xff09; 3. UA头设置3.1. 随机UA头3.1.1. 案例3.1.2. 模板拼接 4. 代理Proxy4.1. 单代理案例4.2. 多代理案例4.2.1. 请求…

面向对象编程三大特征:封装、继承、多态

封装、继承、多态 1. 封装 1.1 介绍 封装(encapsulation)就是把抽象出的数据 [属性] 和对数据的操作 [方法] 封装在一起,数据被保护在内部,程序的其它部分只有通过被授权的操作 [方法] ,才能对数据进行操作。 1.2 封装的理解和好处 1) 隐藏实现细节:方法(连接数据库)<…

leetcode-比较版本号-88

题目要求 思路 1.因为字符串比较大小不方便&#xff0c;并且因为需要去掉前导的0&#xff0c;这个0我们并不知道有几个&#xff0c;将字符串转换为数字刚好能避免。 2.当判断到符号位的时候加加&#xff0c;跳过符号位。 3.判断数字大小&#xff0c;来决定版本号大小 4.核心代…

Docker 中安装单体架构 MySQL 的 Shell 脚本

该脚本用于实现 root 用户在 Linux 操作系统下的 Docker 中安装单体架构 MySQL Shell 脚本 Git 仓库地址 Gitee&#xff1a;https://gitee.com/tongchaowei/common-shell/tree/main/root 执行脚本 bash ./docker-mysql-install-single.sh需要注意的 该脚本会先检查是否安…

如何一键清除文件目录下所有的node_modules

如何一键清除文件目录下所有的node_modules 快速删除目录下的node_modules&#xff0c;下面附上windows和mac的脚本指令 windows脚本 FOR /d /r . %d in (node_modules) DO IF EXIST "%d" rm -rf "%d"mac脚本 find . -name "node_modules" -…