在OJ、牛客网上,经常有在线编程题需要读取输入样例,另外可能还需要一定的格式化输出知识,之前一直不太会这方面,此处来汇总一下。
python版
python的比较简单,可以直接通过input()
语句读取一整行内容,并返回str类型。具体使用如下:
如果一行有多个数字,则会得到类似'1 2 3'
的字符串,可以使用split()
分解成单个字符,接下来就可以给返回list,或用map函数处理。如下:
C++版
C++ 通常使用cin函数读取数据,通常用到的方法有cin>>,cin.get,cin.getline。cin函数在std命名空间中。
cin>>
- cin>>等价于cin.operator>>(),即调用成员函数operator>>()进行读取数据。
- cin>>会忽略空格、tab或换行这些分隔符,并继续读取下一个字符。
scanf
scanf函数原型在头文件“stdio.h”,是C语言风格的通用终端格式化输入函数。
其调用格式为: scanf(“<格式化字符串>”,<地址表>); 例如:scanf("%d %d",&a,&b);
格式化输入输出
格式字符 | 说明 |
---|---|
%a | 读入一个浮点值(仅C99有效) |
%A | 同上 |
%c | 读入一个字符 |
%d | 读入十进制整数 |
%i | 读入十进制,八进制,十六进制整数 |
%o | 读入八进制整数 |
%x | 读入十六进制整数 |
%X | 同上 |
%s | 读入一个字符串 |
%f | 读入一个浮点数 |
%F | 同上 |
%e | 同上 |
%E | 同上 |
%g | 同上 |
%G | 同上 |
%p | 读入一个指针 |
%u | 读入一个无符号十进制整数 |
%n | 至此已读入值的等价字符数 |
%[] | 扫描字符集合 |
%% | 读%符号 |
特殊格式
printf("%4d",n);//这个4是指输出的空间为4
printf("%.2f",n);
输出为:
循环处理
对于传统OJ一次处理多个case,所以代码需要循环处理,一般通过while循环来出来多个case。
C
|
|
C++
|
|
python
|
|
上面这些内容就足够应付OJ系统了,如果还想了解更多cin函数内容,可参考Dablelv的博客专栏