您的位置:首页 > 其它

输入和输出

2016-01-05 16:33 246 查看

(1) 使用标准输入/输出

头文件:<cstdio>

变量约定:FILE *fin, *fout;——fin、fout分别代表输入文件和输出文件。把它们换成stdin和stdout,就是从屏幕输入和从屏幕输出。“1.5 字符串操作”也使用了同样的变量。

输出字符串或变量的值:printf("格式字符串", ……);

或fprintf(fout,
"格式字符串", ……);

格式字符:“%”后连接一个字母。

字符

含义

字符

含义

d

整数[1]

e, E

用科学记数法表示的浮点数

u

无符号整数

f

浮点数

o

八进制整数

c

字符

x, X

十六进制整数(小写、大写)

s

字符串(字符数组)

常见的修饰符

Ÿ
%5d:5位数,右对齐。不足5位用空格补齐,超过5位按实际位数输出。

Ÿ
%-5d:5位数,左对齐。不足5位用空格补齐,超过5位按实际位数输出。

Ÿ
%05d:5位数,右对齐。不足5位用'0'补齐,超过5位按实际位数输出。

Ÿ
%+d:无论是正数还是负数,都要把符号输出。

Ÿ
%.2f:保留2位小数。如果小数部分超过2位就四舍五入,否则用0补全。

输入到变量

Ÿ
读取不含空白的内容:scanf("格式字符串", &……);

或fscanf(fin, "格式字符串", &……);

① 格式字符和printf基本一致。

不要忘记“&”!printf传的是值,scanf传的是地址!

③ scanf和fscanf的返回值是:成功输入的变量个数。fscanf返回EOF,表示文件结束。

④ scanf和fscanf忽略TAB、空格、回车。遇到这些字符它们就停止读取。

Ÿ
读取单个字符:fgetc(fin);

首先要判断它是否为EOF(文件结束)。如果不是,就可以用强制类型转换变成char。

读取到行末时,要注意对换行符的处理。

Ÿ
Windows、Linux、Mac的回车字符是不同的。Linux是'\n',Mac是'\r',Windows下是两个字符——'\r'和'\n'。

(2) 使用流输入/输出

头文件:<iostream>

输入到变量:cin>>n;

输出到屏幕上:cout<<a;

可以连续输入、输出,如cin>>n>>m;
cout<<a<<','<<b<<endl;

换行:cout<<endl;

格式化输出

头文件:<iomanip>

Ÿ
右对齐,长度为n,不足的部分用空格补齐

cout.width(n);

cout.fill(' '); // 如果想用“0”补齐,就可以把空格换成“0”

cout<<a;

前两行代码,每次输出之前都要调用。

Ÿ
输出成其他进位制数

8: cout<<oct<<a;

16:
cout<<hex<<a;

其他进位制需要自己转换。

注意,数据规模很大时,流的输入输出速度会变得很慢,甚至数据还没读完就已经超时了。

在进行输入输出之前加入这样一条语句:ios::sync_with_stdio(false);

调用之后,用cin、cout输入输出的速度就和scanf、printf的速度一样了。

[1] 在Windows下调试时,用“%I64d”输出long long类型的值。交卷时,由于用Linux测试,要改成“%lld
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: