C++语言兼容C语言中的基本语法,scanf语句和printf语句是C语言中的输入输出语句,在C++语言环境中亦可使用。对于大数据的输入输出,使用scanf语句和printf语句比C++的输入输出流cin和cout效率高、速度快。 使用前需要加头文件#include <cstdio>
scanf- scan format printf-print format
printf函数调用的一般形式为:
Printf(”格式控制字符串”,输出列表)
格式控制字符串用于指定输出格式,可由格式字符串和非格式字符串两种组成。格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据 的类型、形式、长度、小数位数等。
1 2 3 4 5 6 7 | #include<cstdio> using namespace std; int main(){ printf("Hello,world\n"); // "\n"是换行符 printf("5+5=%d",5+5); // "%d"表示按十进制整型输出后面列表中的数字。 return 0; } |
格式符 | 说 明 |
d(或i) | 以带符号的十进制形式输出整数,正数的(+)号省略不输出 |
u | 以无符号十进制形式输出整数 |
x(或X) | 以十六进制无符号形式输出整数(不输出前导符0x,如果要输出前导符,写成#x) |
o(字母) | 以八进制无符号形式输出整数(不输出前导符数字0,如果要输出前导符,写成#o) |
c | 输出一个字符 |
s | 输出字符串 |
f | 以小数形式输出单、双精度,隐含输出6位小数 |
e(或E) | 以指数形式输出单、双精度,隐含输出6位小数 |
g(或G) | 自动选用%f、%e或%E格式中输出宽度较小的一种使用 |
1 2 3 4 5 6 7 8 9 10 11 12 | #include<cstdio> using namespace std; int main(){ int a=10; float b=3.14; char c='A'; printf("a=%d\n",a); // "\n"是换行符 printf("b=%f\n",b); printf("c=%c\n",c); printf("s=%s\n","hello world"); return 0; } |
附加格式说明符控制输出的小数位数
%n.mf
n是指数据输出的位数,整数+小数+小数点
m是指小数点后面位数
如果n大于数据输出位数,在前面补上空格
1 2 3 4 5 6 7 8 9 10 11 12 | #include<cstdio> using namespace std; int main(){ float b=3.1415; printf("b=%5.2f\n",b); //5是指数据输出的位数,整数+小数+小数点 //如果5大于数据输出位数,在前面补上空格 //2是是指小数点后面位数 printf("b=%.2f\n",b); return 0; } |
scanf输入函数
scanf函数调用的一般形式为:
scanf(“格式控制字符串”,地址列表)
scanf函数没有精度控制
格式符 | 说 明 |
d,i | 用于输入十进制整数 |
u | 以无符号十进制形式输入十进制整数 |
f | 用于输入单精度类型(float) |
lf | 用于输入双精度类型(double) |
c | 用于输入单个字符 |
s | 用于输入字符串(非空格开始,空格结束,字符串变量以’\0’结尾) |
x | 用于输入十六进制整数 |
o(字母) | 用于输入八进制整数 |
1 2 3 4 5 6 7 8 9 10 11 | #include <cstdio> using namespace std; int main() { int a,b,c; printf("input a,b,c:"); scanf("%d%d%d",&a,&b,&c); printf("a=%d,b=%d,c=%d",a,b,c); return 0; } |
几点注意事项:
1、&a、&b、&c 中的 & 是地址运算符,分别获得这三个变量的内存地址。
2、%d%d%d 是按十进值格式输入三个数值。输入时,在两个数据之间可以用一个或多个空格、tab 键、回车键分隔。
3、如果使用,(逗号)来分隔输入的 %d, 相应的输入时也需要添加,(逗号) 例如“%d,%d,%d”,则在输入数据时需要加“,”,如“2,3,4”。
4、scanf (“%3f”,&a) 是表示截取3个数字字符并其赋值给变量 a 。例如输入123456,它只将123 赋给变量 a ,而且输出结果为 123.000000
而scanf (“%3.2 f”,&a) 这样的格式是不合法的
fflush(stdin); 清空输入缓存
几种输入输出格式的几点说明
1、cin和cout在Dev C++中只能调用<iostream>库,而其他输入输出格式要调用<stdio.h>库或<cstdio>库。
2、cin和cout属于C++的概念,调用时涉及输入输出流,而scanf和printf属于C的概念,是C语言的标准输入/输出库中的函数,所以在时效上,scanf和printf优于cin、cout,对于大数据的输入输出,通常情况下应该用scanf、printf。
3、对于普通数据的输入输出,cin和cout比较方便,而在格式化方面,scanf和printf比较容易。cin效率比scanf低很多,尤其输入数据达到20万以上时非常明显,在100万时cin读入就会超时。
4、scanf和printf也缺点,cin和cout能够自动识别变量的数据类型,因此,在进行输入输出时,不需要指定数据类型,printf和scanf函数在输入输出时需指定数据类型。
5、ios::sync_with_stdio(false)
这段语句可以来打消 iostream 的输入、输出缓存,可以节省许多时间,使效率与 scanf 与 printf 相差无几。