本蒟蒻第一次写文章,如有错误请大佬指正。
○| ̄|_ =3
先来一波scanf和printf概念的解释:
C++语言兼容C语言中的基本语句语法,scanf语句和printf语句是C语言中的输入输出语句,在C++语言环境中亦可以使用。对于大数据的输入输出,使用scanf语句和printf语句比C++的输入输出流效率高、速度快。
scanf和printf分别称为格式输入函数和格式输出函数,其关键字最末一个字母f即为"格式"(format)之意,其意义是按指定的格式输入输出值。
scanf和printf是标准库函数,对于不同数据类型变量和数据的输入与输出,有严格对应的配对格式,使用前需在头文件部分使用:
include<cstdio>
我们来看scanf
scanf函数的功能是格式化输入任意数据列表,其一般调用格式为:
scanf(格式控制符,地址列表);
[说明]
(1)地址列表中给出各变量的地址,也可以是字符串的首地址。
(2)格式控制符有%和格式符组成,作用是将要输入的字符按指定的格式输入,如%d,%c等。
scanf函数的格式符
| 格式符 | 说明 |
|---|---|
| d,i | 用于输入十进制整数 |
| u | 以无符号十进制形式输入十进制整数 |
| o | 用于输入八进制整数 |
| x | 用于输入十六进制整数 |
| c | 用于输入单个字符 |
| s | 用于输入字符串(非空格开始,空格结束,字符串变量以’\0’结尾) |
| f | 用于输入实数(小数或指数均可) |
| e | 与f相同(可与f互换) |
scanf函数的附加格式说明符
| 附加格式 | 说明 |
|---|---|
| l | 用于长整型数(%ld、%lo、%lx) 或double型实数(%lf、%le) |
| h | 用于短整型数(%hd、%ho、%hx) |
| 域宽(一个整数) | 指定输入所占列宽 |
| * | 表示对应输入量不赋给一个变量 |
例1 *格式符的使用
#include<cstdio>
int main()
{
int a,b;
scanf("%d%*d%d",&a,&b);
printf("a=%d,b=%d\n",a,b);
}
//输入:1 2 3
//输出:a=1,b=3
例2 域宽格式符的使用
#include<cstdio>
int main()
{
int a,b;
scanf("%4d%4d",&a,&b);
printf("a=%d,b=%d\n",a,b);
}
//输入:1234567
//输出:a=1234,b=567
例3 %s格式符的使用
#include<cstdio>
int main()
{
char st[40];
scanf("%s",st);
printf("Your input is:%s",st);
}
//输入:abc hello
//输出:abc
例4 非格式符的使用
#include<cstdio>
int main()
{
int a,b,c;
scanf("%d,%d,%d",&a,&b,&c);
printf("a=%d,b=%d,c=%d",a,b,c);
}/*例中scanf用非格式字符','做间隔
故此输入应为:5,6,7(本来输入:5 6 7)
输出:a=5,b=6,c=7*/
再说printf
printf函数的功能是格式化输出任意数据列表,其一般调用格式为:
printf(格式控制符,地址列表);
[说明]
(1)格式控制由输入格式说明和普通字符组成,必须用双引号括起来。
①格式说明由%和格式字符组成,作用是将要输出的字符转换为指定的格式,如%d,%c等。
②普通字符是在输出时原样输出的字符,一般在显示时起提示作用。
(2)输出列表时需要输出的一组数据(可以为表达式和变量),各参数之间用‘,’分开。要求格式说明和各输出项在数量和类型上一一对应,否则将会出现意想不到的错误。
printf函数的格式符
| 格式符 | 说明 |
|---|---|
| d,i | 以带符号十进制形式输出整数,正数的(+)号省略不输出 |
| u | 以无符号十进制形式输出整数 |
| o | 以八进制无符号形式输出整数(不输出前导符数字0) |
| x | 以十六进制无符号形式输出整数(不输出前导符数字0) |
| c | 输出一个字符 |
| s | 输出字符串 |
| f | 以小数形式输出单、双精度,隐含输出6位小数 |
| e(或E) | 以指数形式输出单、双精度,隐含输出6位小数 |
| g(或G) | 自动选用%f、%e或%E格式中输出宽度较小的一种使用 |
d格式符
| 参数 | 说明 |
|---|---|
| %d | 输出数字长为变量数值的实际长度 |
| %md | 输出m位(不补足空格,大于m位时按实际长度输出) |
| %-md | m含义同上。左对齐输出 |
| %ld | l(小写字母)表示输出"长整型"数据 |
| %mld | 指定长整型输出宽度m位,左边补空格;否则,按实际位数输出 |
| %0md,%0mld | 0(数字0)表示位数不足m时补0 |
例如,对于以下程序段
int i=1;
long j=123;
printf("%d,%2d,%03d,%ld,%-4ld,%05ld",i,i,i,j,j,j);
//输出:1, 1,001,123,123 ,00123
f格式符
| 参数 | 说明 |
|---|---|
| %f | 按实数格式输出 ,整数部分按实际位数输出,6位小数 |
| %m.nf | 总位数m(含小数点), |
| %-m.nf | 同上,左对齐 |
s格式符
| 参数 | 说明 |
|---|---|
| %s | 按实际宽度输出一个字符串 |
| %ms | m指定宽度(不足时左补空格,大于时按实际宽度输出) |
| %-ms | 左对齐,不足时右补空格 |
| %m.ns | 输出占m个字符位置,其中字符数最多n个,左补空格 |
| -m.ns | 同上,右补空格 |
好了,这就是c++中scanf和printf用法详解
参考文献
- 《信息学奥赛一本通》
- 《CCF中学生程序设计》
本文详细介绍了C++中scanf和printf函数的使用方法,包括格式输入输出、格式符和附加格式说明符的使用,以及多个实例演示,适合初学者理解和掌握。
747

被折叠的 条评论
为什么被折叠?



