输入输出技巧

scanf输入解析

可以在输入是直接获取格式

1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>

using namespace std;

int main()
{
int num1,num2;
scanf("&d-&d",&num1,&num2);
printf("%d-%d",num1,num2);
return 0;
}

scanf和get的区别

get遇见空格不会停止读入

getchar和putchar

获取单个字符和输出单个字符,使用在scanf和get用于消除回车的影响

输入进制转换

1
2
3
4
5
6
7
8
9
10
int main()
{
int a = 10;
printf("%x\n",a); #小写十六进制
printf("%X\n",a); #大写十六进制
printf("%o\n",a); #八进制
return 0;
}


输出加前导零

1
2
3
4
5
6
int main()
{
int a = 10;
printf("%04d\n",a);
return 0;
}

保留小数

1
2
3
4
5
6
int main()
{
double a = 10;
printf("%.2lf\n",a);
return 0;
}

若想有小数时才输出小数,没小数的话输出整数

1
%g

longlong的使用

如果超出int(-1e91e9)即10 0000 0000(10 亿),就能使用longlong(-1e181e18)

头文件技巧

万能头文件

1
#include <bits/stdc++.h>

数组使用技巧

输入数组时少用%c,而是用%s,因为%s不会读取换行符

要注意三点

  • 数组要定义成全局的
  • 读取的时候不要用%c,会读入回车,要使用%s
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

#include <iostream>

using namespace std;
//数组最好是全局变量
char arr[10][10];
int main()
{
int n=2;
for(int i=1;i<=n;i++){
//一行一行的读取矩阵
scanf("%s",arr[i]+1);
//不要像下面一样,因为这样会把/n也读进去
/* for(int j=1;j<=n;j++){
* scanf("%c",&arr[i][j]);
* }
*/
}
//输出就无所谓了
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
printf("%c",arr[i][j]);
}
printf("\n");
}
return 0;
}