目录
前言
在C++中,输入和输出是非常重要的。
在洛谷中,几乎每到题都需要用到输入输出。
这篇文章就是简单的给大家介绍了输入输出。
C++的输入输出
C++风格
C++风格的cin和cout需要使用iostream库
输入
输入一个数的示例代码:
#include<iostream>
using namespace std;
int main(){
int a;
cin>>a;
return 0;
}
解释:此代码定义了一个整型变量a。并且输入了a。
可以发现,输入的格式就是
cin>>要输入的东西;
输入多个数的示例代码:
#include<iostream>
using namespace std;
int main(){
int a;
float b;
double c;
long long d;
//1号代码片
/*
cin>>a;
cin>>b;
cin>>c;
cin>>d;
*/
//2号代码片
cin>>a>>b>>c>>d;
return 0;
}
解释:此代码定义了一个整型变量a,单精度浮点型变量b,双精度浮点型变量c,长整型变量d。并且依次输入了a,b,c,d。
此代码中一号代码片(被多行注释的部分)的功能和16行的代码功能是一样的。
可以发现,输入多个数和输入单个数的格式是类似的,相当于把多个cin合成了一块。
输出
输出一个数的示例代码:
#include<iostream>
using namespace std;
int main(){
int a;
cin>>a;
cout<<a<<endl;
cout<<a;
return 0;
}
/*
输入:
5
*/
/*
输出:
5
5
*/
解释:此代码定义了一个整型变量a,输入了a,且输出了a并换行。
重点 :
第6行和第7行的区别在于第6行输出了endl,而第7行没有输出endl。
实际的输出第二行并没有换行,而第一行换行了,所以可以知道endl代表换行。
输出多个数与输出一个数的关系类似于输入多个数与输入一个数的关系。
输出多个数的示例代码:
#include<iostream>
using namespace std;
int main(){
int a;
long long b;
float c;
double d;
cin>>a>>b>>c>>d;
//cout<<a<<b<<c<<d;(如果执行这一行,所有的数将叠在一起)
cout<<a<<' '<<b<<' '<<c<<' '<<d<<endl;//a,b,c,d之间用空格隔开,行尾换行。
return 0;
}
C风格
C风格的scanf和printf需要使用stdio库
输入
输入一个整型的示例代码
#include<cstdio>
int main(){
int a;
scanf("%d",&a);
}
解释:此代码定义了一个整型变量a,输入了a。
scanf("格式控制字符串",输入项地址列表);//scanf格式
输出
输出一个整型的示例代码
#include<cstdio>
using namespace std;
int main(){
int a;
scanf("%d",&a)
printf("%d\n",a);
return 0;
}
解释:此代码定义了一个整型变量a,输入了a,且输出了a并换行。
printf("格式控制字符串",输出表项);//printf格式。注意printf输出表项不是地址(例子中是&a),而是值(例子中是a)
C风格的格式控制字符串
C风格进行输入输出会使用格式控制字符串。
%?? | 第一个问号是整数,代表场宽,第二个问号是各种控制字符串。如%10d代表输出一个int,如果不足10位其余用空格补齐 |
格式字符串(scanf与printf)区别:
(1)scanf格式说明符中,可以指定数据的宽度,但不能指定数据的精度
float f;
scanf("%10f",&f);
//读入一个占10场宽的浮点数存到f里
scanf("%10.2f",&f);
//错误,读入无法指定浮点数的精度(这样不会报错,但是输出f时会得到一个奇怪的数)
(2)scanf输入longlong数据时必须使用%lld,输入double数据必须使用%lf
(3)附加格式说明符“*”使对应的输入数据不赋给相应的变量(一般不使用,直接建个temp变量去读就行了)