【C/C++语法基础】2.输入与输出(✨新手推荐阅读)

前言

在C++中,输入与输出是程序与用户进行交互的基本方式。C++提供了多种方式进行数据的输入与输出,其中最常用的是printfscanfcincout。此外,我们还会讨论如何取消cincout的同步流,以及了解各种转义字符的用法。

1.printf函数

printf是C语言标准库中用于格式化输出的函数,它在C++中依然可用。printf函数可以输出各种类型的数据,包括整数、浮点数、字符和字符串等。

cpp 复制代码
int printf(const char* format, ...);

示例:

cpp 复制代码
#include <cstdio>  
  
int main() {  
    int a = 10;  
    float b = 20.5;  
    printf("整数:%d,浮点数:%f\n", a, b);  
    return 0;  
}

输出

cpp 复制代码
整数:10,浮点数:20.500000
格式化符号 描述 示例
%d 整数(十进制) printf("%d", 123); 输出 123
%c 字符 printf("%c", 'A'); 输出 A
%s 字符串 printf("%s", "Hello"); 输出 Hello
%f 浮点数(十进制) printf("%f", 3.14159); 输出 3.141590
%e 浮点数(科学计数法) printf("%e", 3.14159); 输出 3.141590e+00
%E 浮点数(科学计数法,大写E) printf("%E", 3.14159); 输出 3.141590E+00
%g 浮点数(根据大小自动选择%f或%e) printf("%g", 3.14159); 输出 3.14159
%G 浮点数(根据大小自动选择%f或%E) printf("%G", 3.14159); 输出 3.14159
%% 输出百分号% printf("%%"); 输出 %
%o 整数(八进制) printf("%o", 10); 输出 12
%x 整数(小写十六进制) printf("%x", 255); 输出 ff
%X 整数(大写十六进制) printf("%X", 255); 输出 FF
%u 整数(无符号十进制) printf("%u", 4294967295U); 输出 4294967295
%lu 长整数(无符号十进制) printf("%lu", 4294967295UL); 输出 4294967295
%llu 长长整数(无符号十进制) printf("%llu", 18446744073709551615ULL); 输出 18446744073709551615

2.scanf 函数

scanf函数用于从标准输入(通常是键盘)读取格式化的输入。与printf类似,scanf也使用格式化字符串来指定输入数据的类型和格式。

语法:

cpp 复制代码
int scanf(const char* format, ...);

示例:

cpp 复制代码
#include <cstdio>  
  
int main() {  
    int a;  
    float b;  
    printf("请输入一个整数和一个浮点数:\n");  
    scanf("%d %f", &a, &b);  
    printf("你输入的整数是:%d,浮点数是:%f\n", a, b);  
    return 0;  
}

用户输入:

cpp 复制代码
15 30.75

输出:

cpp 复制代码
你输入的整数是:15,浮点数是:30.750000

3.cin 和 cout

在C++中,cin和cout是iostream库中的两个对象,分别用于从标准输入读取数据和向标准输出写入数据。它们比scanf和printf更加面向对象,并且与C++的风格更加一致。

  • cin:用于从标准输入(键盘)读取数据。

  • cout:用于向标准输出(屏幕)输出数据。

示例:

cpp 复制代码
#include <iostream>  
  
int main() {  
    int a;  
    float b;  
    std::cout << "请输入一个整数和一个浮点数:";  
    std::cin >> a >> b;  
    std::cout << "你输入的整数是:" << a << ",浮点数是:" << b << std::endl;  
    return 0;  
}

用户输入:

cpp 复制代码
20 40.25

输出:

cpp 复制代码
你输入的整数是:20,浮点数是:40.25

cin是默认以空格、回车作为间隔的,所以不会读到输入中的空格和回车,如果你想读取一整行的字符串,可以尝试getline()函数或者gets()函数。

4.取消同步流

默认情况下,cin和cout与scanf和printf是同步的,这意味着在读取和输出之间会有缓冲。有时为了提高效率,我们可能需要取消这种同步。

有些题目的输入输出较大(例如到了几百万),如果不取消同步流将导致输入输出很慢从而超时。

cpp 复制代码
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);

示例:

cpp 复制代码
#include <iostream>  
  
int main() {  
	// 取消同步  
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);  
    int a;  
    float b;  
    std::cin >> a >> b;  
    std::cout << a << " " << b << std::endl;  
    return 0;  
}

5.转义字符

转义字符是一种特殊的字符序列,用于表示不可打印的字符或具有特殊含义的字符。以下是一些常用的转义字符:

转义字符 描述
\n 换行
\t 制表符(Tab)
\b 退格
\r 回车
\ 反斜杠
" 双引号
' 单引号

示例:

cpp 复制代码
#include <iostream>  
  
int main() {  
    std::cout << "Hello, \\t World!" << std::endl; // 输出 "Hello, \t World!",\t表示制表符  
    std::cout << "This is a test of \"double quotes\" and 'single quotes'." << std::endl;  
    return 0;  
}

以上就是关于C++中printf、scanf、cin、cout的用法,取消同步流以及转义字符的详细介绍。这些工具在C++编程中非常常用,掌握它们对于编写高效且易于维护的程序至关重要。

真心给大家推荐由我主讲的性价比超高的《算法基础课》,想要学习更多ACM/蓝桥杯/CSP/NOIP算法竞赛知识,无论你是想要竞赛拿奖的大学生、想要在笔试面试中脱颖而出、或者是对计算机编程感兴趣的小朋友,都可以学习,一定不要错过!点此了解:https://www.starrycoding.com/course/1

适用对象广泛

内容紧贴考纲,每节课约1.5小时高密度知识

广受好评,学习氛围浓厚,平等互助,拒绝歧视与绑架

视频、习题、文档,想学就学

没错,在学习算法的时候你甚至可以看V。

最最最最最最最最重要的是,由于课程的准备、录制、平台(前后端和评测机)的开发、推广都是由我一人完成,所以成本压的非常非常低,算法基础课仅售39元。

欢迎加入StarryCoding官方用户Q群:746470220(官网www.starrycoding.com

悄悄说:StarryCoding平台还有算法中级课(可以自行了解)。

相关推荐
可涵不会debug5 分钟前
C语言文件操作:标准库与系统调用实践
linux·服务器·c语言·开发语言·c++
凭君语未可8 分钟前
豆包MarsCode:小C点菜问题
算法
C语言魔术师28 分钟前
【小游戏篇】三子棋游戏
前端·算法·游戏
自由自在的小Bird29 分钟前
简单排序算法
数据结构·算法·排序算法
刘好念33 分钟前
[OpenGL]实现屏幕空间环境光遮蔽(Screen-Space Ambient Occlusion, SSAO)
c++·计算机图形学·opengl·glsl
利刃大大2 小时前
【Linux入门】2w字详解yum、vim、gcc/g++、gdb、makefile以及进度条小程序
linux·c语言·vim·makefile·gdb·gcc
C嘎嘎嵌入式开发2 小时前
什么是僵尸进程
服务器·数据库·c++
我想学LINUX3 小时前
【2024年华为OD机试】 (A卷,100分)- 微服务的集成测试(JavaScript&Java & Python&C/C++)
java·c语言·javascript·python·华为od·微服务·集成测试
雁于飞3 小时前
c语言贪吃蛇(极简版,基本能玩)
c语言·开发语言·笔记·学习·其他·课程设计·大作业
王老师青少年编程7 小时前
gesp(C++五级)(14)洛谷:B4071:[GESP202412 五级] 武器强化
开发语言·c++·算法·gesp·csp·信奥赛