算法学习入门---C/C++输入输出

目录

1.getchar和putchar

2.printf

3.scanf

4.cin和cout


1.getchar和putchar

  • getchar、putchar都是一个一个字符来读取和输出的
  • getchar、putchar都可以读取和输出空白字符(空格、换行......)
  • 不输入任何字符,putchar返回的是-1;getchar操作失败时,返回EOF
  • 两个都在cstdio头文件中

2.printf

  • printf时,打印的字符串中有几个换行符就换行几次
  • printf的参数与占位符应该是一一对应的关系
  • %lld --- long long int (8byte);%lf --- long double(8byte);%% --- 输出一个百分号; %u --- unsigned int
  • printf格式化输出时,%5d 即以为无论整型数据占几位,都会用空格填充为5位,如果超过5位就按正常的位数来打印。默认是右对齐,即左边填空格,如果要左对齐那么修改为%-5d即可
  • %f打印时,默认保留小数点后6位,如果只希望保留小数点后3位,则%.3f;那么%6.2f就意为宽度限制为6,小数点后只保留2位;如果要通过输入来决定保留几位,可以通过下面的语句,把6和2换成输入的变量即可
cpp 复制代码
printf("%*.*f\n",6,2,0.5);

3.scanf

  • scanf时,"%d,%d"说明输入时需要输入2个整型数据与1个逗号,"%d %d"说明当中还需要加个空格
  • e3 意为10^3,-4e3 意为 -4*10^3,.45e12 表示 0.45*10^12
  • 不同于getchar,scanf除了%c的占位符以外,都会自动过滤空白字符**(%s也会,并且以空白字符作为结束标志),**如果以%c作为占位符时要忽略空格,那么就以" &c"格式作为占位符
  • 原理:用户的输入先放入缓存,等到按下回车键后,按占位符对缓存进行解读,会从上次遗留的第一个字符开始,直到读完缓存或遇到第一个不符合占位符要求的字符为止
  • printf和scanf都在cstdio头文件中
  • scanf返回值为一个整数,表示成功读取的变量个数,一个变量都没有成功读取发生错误则返回EOF(-1),如果只是占位符与输入数据格式不匹配那么返回0。竞赛时可以通过下面语句来判断循环停止的时机。
cpp 复制代码
while(scanf("%d%d",&a,&b)==2)

4.cin和cout

  • cin是从键盘上输入的字符流,使用cin来进行数据的提取
  • cout是以字符流的形式打印的
  • cin读取过程中遇到空格时,自动会跳过,遇到换行符就表示此处读取结束
  • getline(cin,string str) 函数进行字符串的读取,以换行符作为字符串的结束标志(不包含换行符),然后将读取到的数据存入到str当中。注:这种情况下getline能读取除空格以外的空白字符
  • getline(cin,string str,char delim) 读取时,将delim这个字符作为字符串的结束标志,所以结束标志可以自定义
  • cin>>a当a读到了匹配的类型数据,那么这个表达式会返回一个true作为结果,读取失败返回false;getline也一样,成功读取时返回true,读取失败时返回false,例如达到文件末尾(EOF),或者只要有一个输入和需要的类型不匹配时,都视为读取失败
cpp 复制代码
#include<iostream>
using namespace std;

int main()
{
	int n,m;
	int i=0;
	while(cin>>n>>m)i++;
	cout<<i;
	return 0;
	
}

无论输入ctrl+c,1和a还是a和b还是单独一个a,输出皆为0

文件输入流的结束可以想象成输入完所有数据以后输入了一个ctrl+v,代表文件输入已经结束;体现在竞赛方面,即为输入结束(因为竞赛的输入都是一个个的输入文件,输入文件中的输入数据结束了,即为文件输入结束EOF)

相关推荐
BadBadBad__AK4 小时前
线段树维护区间 k 次方和
c++·数学·算法·stl
卷无止境16 小时前
Eigen 库如何借助 OpenMP 加速计算
c++·后端
卷无止境17 小时前
OpenMPI、MPICH 与 OpenMP:关系、核心概念与架构全解
c++·后端
郝学胜_神的一滴2 天前
CMake 30:循环语法全解|foreach_while双循环精讲、迭代技巧与实战避坑指南
c++·cmake
卷无止境4 天前
C++ 的Eigen 库全解析
c++
卷无止境4 天前
现代 C++特性大盘点:一门脱胎换骨的老语言
c++·后端
郝学胜_神的一滴4 天前
CMake 27:缓存变量的特性、语法、类型与实操全解
c++·cmake
博客18006 天前
酷宝的使用方法,超好用的免费界面库,C++、MFC可用
c++·mfc·界面库·库来帮·酷宝
郝学胜_神的一滴6 天前
CMake 026:属性体系精讲、四大作用域全解 & 实战代码落地
c++·cmake
众少成多积小致巨6 天前
JNI (Java Native Interface) 技术手册中文参考指南
android·java·c++