printf语句和scanf语句

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 相差无几。

Scroll to Top