算法学习入门---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)

相关推荐
qq_433554542 小时前
C++ 状压DP(01矩阵约束问题)
c++·算法·矩阵
千里马-horse2 小时前
CallbackInfo
c++·node.js·napi·callbackinfo
何小义的AI进阶路3 小时前
win下 vscode下 C++和opencv的配置与使用
c++·图像处理·vscode·opencv
XXYBMOOO3 小时前
理解 C++ 中的字节序转换函数 `swapEndian`
开发语言·arm开发·c++
毕加锁4 小时前
深度解析昇腾Catlass:C++模板元编程与高性能算子开发范式(1)
开发语言·c++
你好音视频4 小时前
FFmpeg FLV编码器原理深度解析
c++·ffmpeg·音视频
Qt学视觉4 小时前
PaddlePaddle-2wget下载安装
c++·人工智能·paddlepaddle
老秦包你会4 小时前
C++进阶------C++的类型转换
java·开发语言·c++