对于刚开始在OJ平台上刷题的人来说,标准输入输出是一个很让人头痛的问题,个人也经历过这样的痛苦,因此在这里进行一下总结。
- C++输入
①只有一组测试数据
以计算a+b为例:
#include < iostream >
using namespace std;
int main()
{
int a,b;
cin >> a >> b;
cout << a+b << endl;
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
②有多组测试数据,直到读至输入文件结尾为止
#include < iostream >
using namespace std;
int main()
{
int a,b;
while(cin >> a >> b)
cout << a+b << endl;
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
③在开始的时候输入一个N,接下来是N组数据
#include <iostream>
using namespace std;
int main() {
int a, b, n;
cin >> n;
while (n--) {
cout << a + b << endl;
}
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
④输入不说明有多少组数据,但以某个特殊输入为结束标志
#include<iostream>
using namespace std;
int main()
{
int a ,b;
while(cin>>a>>b&&(a||b))
{cout<<a+b<<endl;}
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
⑤重定向输入,保存历史
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
freopen("input.txt","r",stdin); //输入将被重定向到文件
int a,b;
cin>>a>>b;
cout<<a+b<<endl;
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
⑥输入字符串
#include<iostream>
using namespace std;
int main()
{
char buf[ 255 ];
while(cin.getline( buf, 255 ));
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
在C++中读入字符串通常使用cin.getline函数,可以接受用户的输入的字符,直到已达指定个数,或者用户输入了特定的字符。它的函数声明形式(函数原型)如下:
istream& getline(char line[], int size, char endchar = '
');
char line[]: 就是一个字符数组,用户输入的内容将存入在该数组内。
int size : 最多接受几个字符,用户超过size的输入都将不被接受。
char endchar :当用户输入endchar指定的字符时,自动结束,默认是回车符。
- 1
- 2
- 3
- 4
2.C++输出
①一组接着一组,每一组后面有一空行
cout << ans << endl << endl;
- 1
3.C语言输入输出
有时候C++的输入输出可能太慢,不妨使用C语言的输入输出
主要方法有:
printf ();//把键盘中的各类数据,加以格式控制输出到显示器屏幕上;
scanf ();//从键盘上输入各类数据,并存放到程序变量中;
puts ()://把数组变量中的一个字符串常量输出到显示器屏幕上;
gets ()://从键盘上输入一个字符串常量并放到程序的数组中;
putchar ()://把变量中的一个字符常量输出到显示器屏幕上;
getchar ()://从键盘上输入一个字符常量,此常量就是该函数的值;
sscanf()://从一个字符串中提取各类数据。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
①输入
while(scanf("%d", &n) != EOF)//读取数字
while ((c = getchar()) != EOF)//读取字符
char line[1024];
while(gets(line)) //读取一行
- 1
- 2
- 3
- 4
- 5
- 6
②输出
printf("a=%d,b=%f,c=%c
",a,b,c);
- 1
这里的格式化输出如下:
格式字符
d 以十进制形式输出带符号整数(正数不输出符号)
o 以八进制形式输出无符号整数(不输出前缀O)
x 以十六进制形式输出无符号整数(不输出前缀OX)
u 以十进制形式输出无符号整数
f 以小数形式输出单精度实数
lf 以小数形式输出双精度实数
e 以指数形式输出单、双精度实数
g 以%f%e中较短的输出宽度输出单、双精度实数
c 输出单个字符
s 输出字符串
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
精度控制
精度格式符以“.”开头,后跟十进制整数。意义是:如果输出数字,则表示小数的位数;如果输出的是字符, 则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。
- 结果左对齐,右边填空格
+ 输出符号(正号或负号)空格输出值为正时冠以空格,为负时冠以负号
如:
double c=24212345.24232;
printf(“%020.4”); 表示输出精确到小数点后4位,输出占20位,若有空余的位补0.
- 1
- 2