【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平台还有算法中级课(可以自行了解)。

相关推荐
唐诺4 小时前
几种广泛使用的 C++ 编译器
c++·编译器
XH华4 小时前
初识C语言之二维数组(下)
c语言·算法
南宫生4 小时前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论
不想当程序猿_4 小时前
【蓝桥杯每日一题】求和——前缀和
算法·前缀和·蓝桥杯
落魄君子4 小时前
GA-BP分类-遗传算法(Genetic Algorithm)和反向传播算法(Backpropagation)
算法·分类·数据挖掘
冷眼看人间恩怨5 小时前
【Qt笔记】QDockWidget控件详解
c++·笔记·qt·qdockwidget
菜鸡中的奋斗鸡→挣扎鸡5 小时前
滑动窗口 + 算法复习
数据结构·算法
红龙创客5 小时前
某狐畅游24校招-C++开发岗笔试(单选题)
开发语言·c++
Lenyiin5 小时前
第146场双周赛:统计符合条件长度为3的子数组数目、统计异或值为给定值的路径数目、判断网格图能否被切割成块、唯一中间众数子序列 Ⅰ
c++·算法·leetcode·周赛·lenyiin
郭wes代码5 小时前
Cmd命令大全(万字详细版)
python·算法·小程序