01-02-03 C++编程知识 C++语言的IO(基础) cin和cout
C方向蓝桥杯学习笔记——完美培优讲义第一部分 C编程知识第二章C语言的IO基础第三节 cin和cout通过第一章《C入门》的学习我们已经基本了解了C语言中提供的cin和cout两个流对象。cin是C语言中提供的标准输入流对象一般针对的是键盘也就是从键盘上输入的字符流使用cin来进行数据的提取cin一般是和 流提取运算符配合使用的。cin的功能和scanf是类似的。cout是C语言中提供的标准输出流对象一般针对的控制台的窗口也就是将数据以字符流的形式输出到控制台窗口上显示。cout一般是和 流插入运算符配合使用。cout的功能和printf是类似的。我们在写程序的时候经常需要处理数据不管什么类型的数据都是以字符流的形式输入和输出的也就是不管是在键盘上输入各种类型的数据还是将程序中的各种类型的数据输出显示到控制台屏幕上都是以字符流的形式处理的。cin和cout的输入输出非常的方便不需要手动控制格式cin和cout能够自动识别变量类型。接下来我们就具体的来学习cin和cout的使用方法。一、cin和cout的基本用法首先来观察下面这段代码其展现了cin和cout的基本用法#include iostream using namespace std; int main(){ int a 0; char b a; double c 0.0; cin a; //读取一个整数 cin b; //读取一个字符 cin c; //读取一个浮点数 cout Print the result endl; cout a endl; cout b endl; cout c endl; return 0; }正常输入数据的时候运行结果应该如下当我们在键盘上输入数据的时候如果输入的数据不能被cin解读为对应类型的数据那么读取就会失败打印出来的结果就会为0。在使用cin函数的时候还应该注意以下几点1cin在读取的时候是根据用户的输入从前往后从上往下依次扫描。2cin在读取的过程中遇到空格和换行符自动会跳过所以不要担心在想要的字符前输入空白字符。当一行读取结束的时候会自动换行读取下一行的内容。3cin后面不可以跟换行endl。二、连续输入输出当我们需要一次输入或输出多个数据的时候也可以使用cin和cout来实现。在上面的代码中使用cout进行变量的输出实质上是将变量插入到cout对象里并以cout对象作为返回值返回因此可以用 在后面连续输出多个内容通过连续输入输出的方式对代码进行编写1、使用cin进行同类型变量连续输入#include iostream using namespace std; int a , b; int main(){ cin a b;//同一类型变量连续输入 cin a endl; //添加换行endl代码编译会报错 return 0; }2、使用cin进行不同类型变量连续输入#include iostream using namespace std; int main(){ int a 0; double b 0.0; char c a; cin a b c;//不同类型变量连续输入 return 0; }3、使用cout进行同一类型变量连续输出#include iostream using namespace std; int main(){ int a 10; int b 1000; cout a b endl; //同一类型变量连续输出 //cin输入的字符流中间可以随意添加空白符cin会自动忽略 //但cout输出的格式必须在写代码时确定例如连续输入两变量中加入空格或换行 return 0; }4、使用cout进行不同类型变量连续输出#include iostream using namespace std; int main(){ int a 10; double b 3.14; char c a; cout a b c endl; //不同类型数据连续输出 cout int: a double: b char: c endl;//实现格式化输出 cout a endl b endl c endl;// 实现多次换行 return 0; }通过观察上面的代码可以概括出cin和cout具有如下优点1cin的好处当输入若干个变量也就是数据量很少的时候我们就可以通过 把所有的数据用一行代码完成接收而且无需关心数据的类型和scanf函数比起来代码的书写更加简洁明了。2cout的好处cout也可以用来连续输出多个数值而且无需考虑数值的类型因为它本身会做类型处理和printf函数比起来更加方便。三、cout的格式输出前面在学习使用printf函数输出数据时指出可以使用printf来指定格式输出比如指定宽度、指定小数点后的位数、对齐方式等等。其实cout也可以实现格式输出达到和printf函数相同的效果。当cout结合iomanip(IO manipulators)头文件中的操纵符可以灵活控制输出格式从而满足各种格式化需求。1、控制宽度和填充· setw()设置字符宽度只对紧接的输出项有效。· setfill()设置填充字符。使用cout进行控制宽度和填充的格式输出示例#include iostream #include iomanip using namespace std; int main(){ int a 123; cout 正常格式输出 a endl; //输出结果“123” cout 设置输出宽度为5 setw(5) a endl; //输出结果“ 123” cout 设置输出宽度为5同时用#补齐 setw(5) setfill(#) a endl; //输出结果“##123” cout 设置输出宽度为10 setw(10) a endl; //输出结果“#######123” //setfill(‘#’)是针对输出流的因此后面的输出都会使用#补齐如果我们想取消这个效果则需要将上面这句话改成如下 cout 设置输出宽度为10 setw(10) setfill( ) a endl; //输出结果“ 123” return 0; }2、控制浮点型数值格式· fixed以固定小数点表示浮点数设置后就不会以科学计数法展示了。· scientific以科学计数法表示浮点数。· setprecision设置浮点数的精度以控制小数点后的数字位数一般先固定小数点再设置精度。使用cout进行控制浮点型数值格式的格式输出示例#include iostream using namespace std; #include iomanip int main(){ double pi 3.141592653589793; cout 正常格式输出: pi endl; cout 固定小数点方式: fixed pi endl; cout 科学计数法方式: scientific pi endl; cout 固定小数点保留小数点后12位有效数字: fixed setprecision(12) pi endl; return 0; }运行结果展示cout结合其他操作符还能完成一些其他的格式输出但是毕竟cout在完成格式化输出的时候不如printf方便所以在竞赛中涉及格式化输出的时候我们一般会使用printf函数来完成通过本部分的学习使用cout也可以达成相同效果。3、控制整数格式· dec以十进制格式显示整数默认。· hex以十六进制格式显示整数。· oct以八进制格式显示整数。使用cout进行控制整数格式的格式输出示例#includeiostream using namespace std; #includeiomanip int main() { int n 255; cout 正常格式输出: n endl; cout 十进制: dec n endl; cout 十六进制: hex n endl; cout 八进制: oct n endl; return 0; }上面这段代码的运行结果展示由上面的代码以及运行结果我们可以观察到实际上dec十进制这个操作符在我们正常输入十进制整数时是完全可以省略的只有当涉及到进制转化或者输入的数值并不是十进制整数时才会使用到。4、控制对齐方式· left左对齐。· right右对齐默认。使用cout进行控制对齐方式的格式输出示例#includeiostream using namespace std; #includeiomanip int main() { int n 123; cout 右对齐: setw(10) right n endl; cout 左对齐: setw(10) left n endl; return 0; }运行结果展示【练习一】输入一个不小于 100 且小于 1000同时包括小数点后一位的一个浮点数例如 123.4 要求把这个数字翻转过来变成 4.321 并输出。· 输入格式一行一个浮点数· 输出格式一行一个浮点数【参考答案1——使用cin和cout解决问题】#include iostream using namespace std; char a, b, c, d, e; int main() { cin a b c d e; cout e d c b a endl; return 0; }【参考答案2——使用scanf和printf函数解决问题】#include cstdio char a, b, c, d, e; int main() { scanf(%c%c%c%c%c, a, b, c, d, e); printf(%c%c%c%c%c\n, e, d, c, b, a); return 0; }【本题注意点】从题目要求中可以看出想要输入小数然后反转输出如果真按照这样的思路编程也能解决问题但是可能就复杂了。其实在不管什么类型的数据都是以字符流的形式输入和输出的那我们就可以把输入的这个小数和小数点都当做字符依次读取然后再按照想要的顺序输出就行。如果使用scanf函数和printf函数注意要指定好占位符如果使用cin/cout要注意指定好变量的类型。【练习二】【参考答案1——使用cin和cout解决问题】#include iostream #include cmath #include iomanip using namespace std; double a, b, c; int main(){ cin a b c; double p (a b c) / 2; double area sqrt(p * (p - a) * (p - b) * (p - c)); cout fixed setprecision(1) area endl; return 0; }【参考答案2——使用scanf和printf函数解决问题】#include cmath #include cstdio double a, b, c; int main() { scanf(%lf%lf%lf, a, b, c); double p (a b c) / 2; double area sqrt(p * (p - a) * (p - b) * (p - c)); printf(%.1lf, area); return 0; }【本题注意点】本题中使用了sqrt库函数这个函数是用来计算平方根的函数原型如下double sqrt(double x); float sqrt(float x); long double sqrt(long double x);sqrt函数可以计算并返回出参数x的平方根这个函数在C语言中需要的包含的头文件是 cmath 。

相关新闻

计算机毕业设计java基于java与QML的物业管理平台设计基于Java与QML的智慧小区物业管理平台设计与实现融合前后端技术的物业缴费、报修与车位一体化系统开发

计算机毕业设计java基于java与QML的物业管理平台设计基于Java与QML的智慧小区物业管理平台设计与实现融合前后端技术的物业缴费、报修与车位一体化系统开发

计算机毕业设计java基于java与QML的物业管理平台设计6zk3v9(配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。随着物联网技术的快速发展和智慧社区建设的深入推进,物业管…

2026/5/17 4:26:23 阅读更多 →
124-西门子200 SMART加显控触摸屏水处理程序案例:30吨双级反渗透+EDI工艺控制系统程序

124-西门子200 SMART加显控触摸屏水处理程序案例:30吨双级反渗透+EDI工艺控制系统程序

124-西门子200SMART加显控触摸屏水处理程序案例控制系统程序,30吨双级反渗透加EDI工艺。 系统采用成熟、可靠、先进、自动化程度高的二级反渗透EDI除盐水处理工艺,确保处理后的超纯水水质确保处理后出水电阻率达到18.2MΩ.cm,采用PLC触摸屏控…

2026/7/5 5:30:00 阅读更多 →
分享一个最近发现的实用工具:SQL 转 ER 图神器

分享一个最近发现的实用工具:SQL 转 ER 图神器

最近在做数据库设计复盘,手动画 ER 图真的太耗时了,偶然发现了一个在线工具网站:https://generator.cengxuyuan.cn/usecase,可以直接把 SQL 建表语句一键生成 ER 图,支持导出图片和 PDF,简直不要太方便&…

2026/5/17 9:16:52 阅读更多 →

最新新闻

从零部署Hermes Agent:构建自我进化的AI智能体实战指南

从零部署Hermes Agent:构建自我进化的AI智能体实战指南

在 AI 智能体领域,从简单的聊天机器人到能够自主执行复杂任务的智能助手,中间隔着一道巨大的鸿沟。这道鸿沟的核心在于,一个真正的智能体不仅需要理解指令,更需要具备学习、记忆、规划和利用工具的能力。Hermes Agent 正是 Nous R…

2026/7/5 12:21:48 阅读更多 →
AI建站工具指南:零代码打造专业网站的完整流程

AI建站工具指南:零代码打造专业网站的完整流程

1. AI建站工具的本质与核心价值AI建站工具正在彻底改变个人和小型企业创建网站的方式。这类工具的核心价值在于将原本需要专业开发技能的建站过程,简化为一个自然语言交互的对话流程。想象一下,你只需要告诉AI"我想要一个展示摄影作品集的网站&…

2026/7/5 12:21:48 阅读更多 →
如何用开源工具Meshroom从照片创建专业3D模型:完整免费指南

如何用开源工具Meshroom从照片创建专业3D模型:完整免费指南

如何用开源工具Meshroom从照片创建专业3D模型:完整免费指南 【免费下载链接】Meshroom Node-based Visual Programming Toolbox 项目地址: https://gitcode.com/gh_mirrors/me/Meshroom 在当今数字时代,将普通照片转化为精美3D模型不再是专业工作…

2026/7/5 12:19:47 阅读更多 →
PPO算法实战:从原理到调试技巧

PPO算法实战:从原理到调试技巧

1. 项目概述:PPO算法初体验 第一次接触强化学习中的PPO(Proximal Policy Optimization)算法时,那种既兴奋又忐忑的心情至今记忆犹新。作为目前最主流的策略梯度算法之一,PPO以其出色的稳定性和样本效率,成为…

2026/7/5 12:17:47 阅读更多 →
BetterGenshinImpact:三阶段智能辅助指南,从萌新到高玩的完整解决方案

BetterGenshinImpact:三阶段智能辅助指南,从萌新到高玩的完整解决方案

BetterGenshinImpact:三阶段智能辅助指南,从萌新到高玩的完整解决方案 【免费下载链接】better-genshin-impact 📦BetterGI 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动刷本 | 自动采集/挖矿/锄…

2026/7/5 12:15:46 阅读更多 →
PMP 项目管理规划(Planning)学习专题指南

PMP 项目管理规划(Planning)学习专题指南

PMP 项目管理规划(Planning)学习专题指南 在PMP考试(尤其是2026新版)中,Planning(规划) 是Process领域(41%权重)的核心部分,也是零基础考生最需要重点掌握的模…

2026/7/5 12:13:45 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻