C++中的输入输出

C++中的输入输出

cin与cout

关于缓冲区

缓冲区就是暂时存储数据的地方,可大大提升电脑运行效率。暂时把内容放在一个特定存储区域,而不是存入硬盘,就减少了硬盘的读写。
就像打印一张文件之前,先存入电脑,以便修改。
cin输入时会将会把换行符 \n 也算作一个字节放入缓冲区。

cout没什么好说的,拓展一下就是使用 endl 时会刷新一下缓冲区。

scanf

十进制

1
2
int a;
scanf("%d",&a);

八与十六进制

1
2
3
int a;
scanf("%o",&a); //八进制
scanf("%x",&a); //十六进制

浮点数

1
2
int a;
scanf("%lf",&c);

字符

1
2
3
4
5
char a;
string aa;
scanf("%c",&a);//字符
cin >> aa; or getline(cin, a);
scanf("%s",a+1);//小技巧,从c[1]开始读入(指针操作)

long long

1
2
int a;
scanf("%lld",%a);

限制数字个数输入

1
2
3
int a;
scanf("%nd",&a)//n表示限制数字个数
//例如输入123456,n=2,就会输入12,34,56

printf

关于单精浮点数(float)与双精浮点数(double)

内存

float占4字节
double占8字节

有效数字

float有效数字位为6 – 7位,第7位不一定有效
double有效数字位为15 – 16位,第16位不一定有效

范围

xxxxxxxxxx30 1#include2#include3using namespace std;4​5const int N = 50;6const int M = 3000010;7const int inf = 1e8;8​9int n, m, sum, re;10int a[N], minn = inf;11int v[M];12​13int main()14{15 16 cin >> n >> m;17 for(int i = 1; i <= n; i ++)18 cin >> a[i], sum += a[i];19 re = sum - m;20 for(int i = 1; i <= n; i ++)21 {22 for(int j = re; j >= a[i]; j –)23 {24 v[j] = max(v[j - a[i]] + a[i], v[j]);25 }26 }27 28 cout << sum - v[re] << endl;29 return 0;30}cpp

long long

1
2
long long a=1000;
printf("%lld",a);

小数输出

1
2
double a=1.101;
printf("a=%.2lf",a);//输出double类型

在这里插入图片描述

1
printf("a=%.2f",a);//输出float类型,可与double混用

字符与字符串

1
2
3
4
5
char c;
printf("c=%c",c);//字符 char
char c[10];
printf("c=%s",c);//字符串 char
//字符串如果是从c[1]开始输入,输出时c[0]的空格自动忽略

一些也许有用的输出

1
2
3
4
5
6
7
8
9
10
11
12
int a=1000,b=-1000;
printf("%+d %+d",a,b);//输出正负号

int a=1000;
printf("%6d\n",a); //默认右对齐,左边补空格
printf("%-6d\n",a); //左对齐,右边补空格

double a=1000.0;
printf("%.0f %#.0f\n",a,a);当小数点后不输出值时依然输出小数点

int a=1000;
printf("%05d\n",a);//前面补0

快读

虽然说可以从网上直接找,但是比赛时还是要自己打。
还是得学一下。

1
2
3
4
5
6
7
8
9
10
11
12
inline int read(){ 
int x=0,f=1;//f表示正负
char c=getchar();
while(c<'0'||c>'9'){
if(c=='-')
f=-1;
c=getchar();
}
while(c>='0'&&c<='9')
x=x*10+c-'0',c=getchar();
return x*f;
}//好像没什么好说的

快写

1
2
3
4
5
6
7
inline void write(int x){
if(x < 0)
putchar('-'); x = -x;
if(x > 9)
write(x/10);//上一位
putchar(x % 10 + '0');
}

2022-05-01 18:52:17 完结