首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >C/C++输入输出初级(二) (算法竞赛)

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

作者头像
散峰而望
发布2025-12-23 12:43:48
发布2025-12-23 12:43:48
1790
举报

前言

前面的文章中我们已经对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 基本用法

演示代码:

代码语言:javascript
复制
#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举例:

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

cout举例:

代码语言:javascript
复制
#include <iostream>
using namespace std;
int main()
{
    //对同一类型变量连续输出 
    int a = 10;
    int b = 20
    cout << a << " " << b << 
endl;
    return 0;
}
代码语言:javascript
复制
#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:设置填充字符
代码语言:javascript
复制
#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:设置浮点数的精度,以控制小数点后的数字位数,一般先固定小数点,再设置精度。

代码如下:

代码语言:javascript
复制
#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;
}

演示效果:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

如果改一下数据就可以看到其中的不同:

代码语言:javascript
复制
#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:以八进制格式显示整数

代码如下:

代码语言:javascript
复制
#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:右对齐(默认)

代码如下:

代码语言:javascript
复制
#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函数,下一篇我们将深入探讨循环的世界。

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 3. cin和cout
    • 3.1 基本用法
    • 3.2 连续输入输出
    • 3.3 cout的格式输出(选学)
      • 3.3.1 控制宽度和填充
      • 3.3.2 控制数值格式
      • 3.3.3 控制整数格式
      • 3.3.4 控制对齐方式
    • 3.4 练习
  • 结语
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档