当前位置: 首页 > news >正文

C/C++输入输出初级(二) (算法竞赛)


🌊用有趣的言语来阐述苦涩难懂的代码世界,让每一个技术都充满风趣!
🔭个人主页:散峰而望
🚀学习方向: C/C++等方向
📌专栏系列:

  • 📖《C语言:从基础到进阶》
  • 📚《编程工具的下载和使用》
  • 🚀《C语言刷题》
  • ⚖️《算法竞赛从入门到获奖》

💬人生格言:冀以尘雾之微,补益山海,荧烛末光,增辉岁月。

🎬博主简介

请添加图片描述

请添加图片描述

文章目录

  • 前言
  • 3. cin和cout
    • 3.1 基本用法
    • 3.2 连续输入输出
    • 3.3 cout的格式输出(选学)
      • 3.3.1 控制宽度和填充
      • 3.3.2 控制数值格式
      • 3.3.3 控制整数格式
      • 3.3.4 控制对齐方式
    • 3.4 练习
  • 结语


前言

前面的文章中我们已经对getchar与putchar和scanf与printf函数有所了解,我们还剩下cin与cout没讲,于是这一篇将对cin与cout详细的讲解。

3. cin和cout

前面我们已经在C++入门中提到了:cin和cout两个流对象。接下来让我们进一步了解一下吧。

cin是C++中提供的标准输入流对象,一般针对的是键盘,也就是从键盘上输入的字符流,使用cin来进行数据的提取,cin一般是和>>(流提取运算符)配合使用的。cin的功能和scanf是类似的。

cout是C++中提供的标准输出流对象,一般针对的控制台的窗口,也就是将数据以字符流的形式输出到控制台窗口上显示。cout一般是和<<(流插入运算符)配合使用。cout的功能和printf是类似的。

写程序的时候,经常需要处理数据,不管什么类型的数据都是以字符流的形式输入和输出的,也就是不管在键盘上输入什么类型的数据,还是将程序中的各种类型的数据输出显示到控制台屏幕上,都是以字符流的形式处理的。

cin和cout 的输入输出非常的方便,不需要手动控制格式,能够自动识别变量类型

3.1 基本用法

演示代码:

#include <iostream>
using namespace std;
int main()
{int a;char c;float f;cin >> a; // 读取一个整数 cin >> c; // 读取一个字符 cin >> f; // 读取取一个浮点数 cout << "打印结果:"<<endl;cout << a << endl;cout << c << endl;cout << f << endl;return 0;
}

在这里插入图片描述

当我们在键盘输入数据的时候,输入的数据不能被cin解读为对应类型的数据,那么读取也就结束了。

比如:

在这里插入图片描述

cin使用细节:
cin在读取的时候是根据用戶的输入,从前往后,从上往下依次扫描。
cin在读取的过程中遇到空格,自动会跳过,所以不要担心在想要的字符前输入空白字符。
当一行读取结束的时候,会自动换行,读取下一行的内容。
cin后面不可以跟换行endl。

3.2 连续输入输出

如果我们一次要输入/输出多个数据,那cin和cout能做到吗?可以!

在上面的代码中,使用cout进行变量的输出,实质上是将变量插入到cout对象里,并以cout对象作为返回值返回,因此我们还可以用<< 在后面连续输出多个内容,通过连续输入输出的方式对代码进行编写,效果如下:

cin举例:

#include <iostream>
using namespace std;
int main()
{int a = 0;int b = 0;//同类型变量连续输入 cin >> a >> b;      //以最后一次
输入为准 //添加换行endl cin >> a >> endl; //代码编译报错 return 0;
}
#include <iostream> 
using namespace std; int main() 
{ //不同类型变量的连续输入 int a = 0; char ch = 0; float f = 0; cin >> a >> ch >> f; return 0; 
}

cout举例:

#include <iostream>
using namespace std;
int main()
{//对同一类型变量连续输出 int a = 10;int b = 20cout << a << " " << b << 
endl;return 0;
}
#include <iostream> 
using namespace std; int main() 
{ //支持相同/不同类型变量的连续输入 char ch = 0; float f = 0.1; cout << ch << f << endl; //格式化输出:添加(任意)空格和字符串 cout << "ch:" << ch << " f:" << f << endl; //格式化输出:多次换行 cout << ch << endl << endl; return 0; 
} 

cin的好处:
当输入若干个变量(也就是数据量很少)的时候,我们就可以通过>>把所有的数据用一行代码完成接收,而且无需关心数据的类型,和scanf函数比起来代码的书写非常简洁明了。

cout的好处:
cout也可以用来连续输出多个数值,而且无需考虑数值的类型,因为它本身会做类型处理,和printf比起来比较方便。

3.3 cout的格式输出(选学)

这一部分使用起来比较麻烦,可以选择性学习。

printf函数在输出数据的时候,可以指定格式来输出,比如:指定宽度,比如指定小数点后的位数,对齐方式等等。那么cout在数据的时候能否指定格式呢?答案是可以的!cout 结合< iomanip > (IO manipulators)头文件中的操纵符,可以灵活控制输出格式,从而满足各种格式化需求。

3.3.1 控制宽度和填充

  • setw:设置字段宽度(只对紧接着的输出项有效)
  • setfill:设置填充字符
#include <iostream>
using namespace std;
#include <iomanip>
int main() {int a = 123;cout << "默认宽度: " << a << endl;cout << "宽度设置为10: " << setw(10) << a << endl;cout << "宽度为10,不够时填充*: " << setw(10) << setfill('*') << a << endl;return 0;
}

结果演示:

在这里插入图片描述

3.3.2 控制数值格式

  • fixed:以固定小数点表示浮点数,设置后就不会以科学计数法展示了。
  • scientific:以科学计数法表示浮点数。
  • setprecision:设置浮点数的精度,以控制小数点后的数字位数,一般先固定小数点,再设置精度。

代码如下:

#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 << "固定小数点,小数点后2位有效数字: " << setprecision(2) << pi << endl;cout << "固定小数点,小数点后2位有效数字: " << fixed << setprecision(2) << pi << endl;return 0;
}

演示效果:

在这里插入图片描述

在这里插入图片描述
如果改一下数据就可以看到其中的不同:

#include <iostream>
using namespace std;
#include <iomanip>
int main() 
{double pi = 31.41592653589793;cout << "默认: " << pi << endl;cout << "固定小时点方式: " << fixed << pi << endl;cout << "科学计数法方式: " << scientific << pi << endl;cout << "固定小数点,小数点后2位有效数字: " << setprecision(2) << pi << endl;cout << "固定小数点,小数点后2位有效数字: " << fixed << setprecision(2) << pi << endl;return 0;
}

演示效果:

在这里插入图片描述
cout结合其他操作符还能完成一些其他的格式输出,但是毕竟cout在完成格式化输出的时候,其实不如printf方便,所以在竞赛中,涉及格式化输出的时候,我们一般会使用printf来完成,所以这一部分的内容属于选学部分。

3.3.3 控制整数格式

  • dec:以十进制格式显示整数(默认)
  • hex:以十六进制格式显示整数
  • oct:以八进制格式显示整数

代码如下:

#include <iostream>
using namespace std; 
#include <iomanip>
int main() {int n = 255;cout << "十进制  : " << dec << n << endl;cout << "十六进制: " << hex << n << endl;cout << "八进制  : " << oct << n << endl;return 0;
}

在这里插入图片描述

3.3.4 控制对齐方式

  • left:左对齐
  • right:右对齐(默认)

代码如下:

#include <iostream>
using namespace std; 
#include <iomanip>
int main() {int n = 123;cout << "右对齐: " << setw(10) << n << endl;cout << "右对齐: " << setw(10) << right << n << endl;cout << "左对齐: " << setw(10) << left << n << endl;return 0;
}

演示结果:
在这里插入图片描述

3.4 练习

数字反转

三角形面积


结语

希望这边文章能让各位更好的了解cin与cout函数,下一篇我们将深入探讨循环的世界。

同时愿诸君能一起共渡重重浪,终见缛彩遥分地,繁光远缀天

在这里插入图片描述

请添加图片描述

http://www.dtcms.com/a/589395.html

相关文章:

  • Windows导入大型sql文件到mysql
  • K8S RD: Kubernetes核心概念与运维实践详解
  • 营销型企业网站测评表wordpress汽车主题
  • Java中文件操作和IO
  • MapTalks:国产轻量化二三维一体化GIS引擎
  • 做html网站wordpress divi安装
  • JS 表单处理与数据校验实战指南:构建安全、流畅的交互体验
  • php网站开发程序编译软件招商网站建设免费
  • 在Rsbuild中使用Rsdoctor
  • 临沂学做网站做网站购买什么软件
  • AIGC|上海AI优化企业新榜单与选择指南
  • 26.分布式系统链路追踪
  • 《Redis应用实例》Java实现(29):优先队列
  • 【FPGA】使用移位和38译码器原理实现LED流水灯
  • 哪些网站用django做的南昌网站设计网站开发
  • GraphQL:让前端自己决定要什么数据
  • 基于非负矩阵分解的复杂网络社区检测研究综述
  • 怎么让网站绑定域名访问广州建筑公司招聘信息
  • Webpack 打包体积优化:让应用更轻量、更高效
  • Webpack 优化:构建速度与包体积的双重提升
  • 基于MATLAB的PCA+SVM人脸识别系统实现
  • 机器学习:支持向量机(SVM)详解
  • docker一键部署项目
  • 【Go 与云原生】先从 Go 对与云原生的依赖关系讲起,再讲讲 一个简单的 Go 项目热热身
  • 深圳科技公司排名100搜索引擎优化应注意什么
  • Mac版向日葵command+s保存操作快捷键冲突,打开向日葵设置
  • 解决 地平线4无法连接至地平线生活而无法进行在线游戏 的方法
  • Kafka工作流程及文件存储机制
  • Kafka 消费者
  • RV1126 NO.45:RV1126+OPENCV在视频中添加LOGO图像