C输入输出处理
Scanf
常见%格式说明符
格式说明符 | 作用 |
---|---|
c | 读入单个字符(后面不会加上空字节) |
s | 读入一个的字符序列,后面会加上空字节,遇到空白字符(空格等)完成读取。 |
d | 读入可选有符号十进制整数 |
- %lld -- long long类型
使用scanf来处理特殊的输入:
1 |
|
printf
printf的格式控制字符串组成如下:
1 |
|
也就是
1 |
|
1)标志--flag
flags规定输出样式,取值和含义如下:
字符 | 名称 | 说明 |
---|---|---|
- | 减号 | 结果左对齐,右边填空格。默认是右对齐,左边填空格。 |
+ | 加号 | 输出符号(正号或负号) |
space | 空格 | 输出值为正时加上空格,为负时加上负号 |
# | 井号 | type是o、x、X时,增加前缀0、0x、0X。 type是a、A、e、E、f、g、G时,一定使用小数点。默认的,如果使用.0控制不输出小数部分,则不输出小数点。 type是g、G时,尾部的0保留。 |
0 | 数字零 | 将输出的前面补上0,直到占满指定列宽为止(不可以搭配使用“-”) |
2)width--最小宽度
用十进制整数来表示输出的最少位数。若实际位数多于指定的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0。width的可能取值如下:
xxxxxxxxxx #include<bits/stdc++.h>using namespace std;int bits;//将int型转化为二进制string getBitStr(int num){ string ans = ""; int msk = 1; for(int i = 1 ; i <= bits ; i ++){ ans = (num&msk ? '1':'0') + ans; msk = msk << 1; } return ans;}void GrayCode(const int &bits){ int x = pow(2,bits)-1; int num = 0; cout<<getBitStr(num)<<""; for(int i = 1 ; i <= x ; i++){ if(i % 2 != 0){ num = num^1; } else{ num = num^( ((num&( (~num) + 1)) << 1) ); //Brian Kernighan 算法 } cout<<getBitStr(num)<<""; }}int main(void){ cin>>bits; GrayCode(bits); return 0;}c++
输出:001000
3)precision--精度/字符串长度
主要用于浮点数和字符串,例如:
1 |
|
sprintf
sprinf用于将其他类型转化成cstr字符串类型
用法和printf类似
例如:
1 |
|
sscanf
sscanf用于将已有字符串转化为其他类型,用法和scanf类似
例如:
1 |
|