一、printf函数
(1)一般形式
printf(格式控制,输出序列)
如果把格式控制和输出序列看做函数的参数,则一般形式为
printf(参数1,参数2,…,参数n)
如 printf(“%d,%f”,a,b)
(2)格式控制
A.格式控制包括两部分:格式说明(总是以%开头)、普通字符(按原样输出的字符和符号)
如 printf(“a=%d,b=%f”,a,b)其中
“”内是格式控制,””外是输出序列
%d和%f是格式说明,分别表示以十进制整型输出和以十进制浮点型输出
a=和b=以及,是普通字符,按原样输出
a和b是变量,表示输出变量a和b的值
B.格式字符
= 1 \* GB3 ①d格式符
%d表示按十进制整数的实际长度输出
%md表示按十进制整数的指定长度m输出,若实际长度小于m,则补足(前面补0或留空);若大于m则按实际输出
如
#include
void main()
{
Int a,b;
a=123;b=456;
printf(“%2d ,%4d”,a,b)
结果为 123 ,_456
%ld表示按十进制的长整型输出
#include
void mian()
{
long a,b,sum;
a=12345;b=40000;
sum=a+b;
printf(“%ld”,sum)
结果为52345(正确)
若printf(“%d”,sum)
结果为-13191(错误)
原因在于sum的值超出基本整型范围(-32768,32768)
= 2 \* GB3 ②o格式符
%o表示以八进制整数实际长度输出
如
#include
void main()
{
int a,b,sum;
a=10;b=10;
sum=a+b;
printf(“%o”,sum)
}
结果为24(即(20)10)
%mo表示以八进制整数指定长度输出
%lo表示以八进制整数指定长度输出
特殊之处:八进制输出的是无符号数据,有符号的也当做数值输出
= 3 \* GB3 ③x格式符
%x表示以十六进制整数输出
#include
void main()
{
int a,b,sum;
a=10;b=10;
sum=a+b;
printf(“%x”,sum)
}
结果为14(即(20)10)
%mx表示以十六进制指定长度输出
%lm表示以十六进制长整型输出
特殊之处:十六进制输出的是无符号数据,有符号的也当做数值输出
= 4 \* GB3 ④u格式符
%u表示以十进制整数形式输出无符号型数据
= 5 \* GB3 ⑤c格式符
%c用于输出单个字符,其作用于putchar等价
= 6 \* GB3 ⑥s格式符
%s表示以字符串形式输出
如
#include
void main()
{
printf(“%s %s %s”,”I”,”LOVE”,”CHINA”);
}
输出结果为I LOVE CHINA
特别注意:输出序列必须要用双引号括起来,因为只有被双引号括起来才被视为字符串
%ms表示以指定长度输出字符串数据,若实际长度大于m则按实际长度输出,若小于则左补空
%-ms表示以指定长度输出字符串数据,若实际长度大于m则按实际长度输出,若小于则右补空
%m.ns
%-m.ns
= 7 \* GB3 ⑦f格式符
%f
%m.nf
%-m.nf
= 8 \* GB3 ⑧e格式符
%e
%m.ne
%-m.ne
(3)输出序列
输出序列可以是数值、字符、表达式等
一、scanf函数
(1) 一般形式
scanf(格式控制,地址序列)
= 1 \* GB3 ①格式控制
格式控制包括格式说明和普通字符,格式说明与printf函数相似,普通字符按原样输入
如
#include
Void main()
{
Int a,b;
Scanf(“%d,%d”,&a,&b);
Printf(“\na=%d,b=%d”,a,b);
}
输入“1000,10000”
结果在次行显示a=1000,b=10000
= 2 \* GB3 ②地址序列
地址序列必须以&开头,不能只输入变量,它表示按其在内存中的地址将数值存入
(2) 使用scanf函数的注意事项
= 1 \* GB3 ①若果指定输入数据的列宽,则结果会自动截断不空格的数据序列,如
#include
Void mian()
{
Int a,b;
Scanf(“%2d%3d”,&a,&b);
Printf(“\na=%d,b=%d”,a,b);
}
输入“1234567”
结果在次行显示a=12,b=345
= 2 \* GB3 ②不能把地址序列写成变量,如
#include
Void mian()
{
Int a,b;
Scanf(“%2d%3d”,a,b);
Printf(“\na=%d,b=%d”,a,b);
}
是错误的
= 3 \* GB3 ③格式控制中的普通字符(包括字符和标点符号)也要按原样输入,否则结果不符,如
#include
Void mian()
{
Int a,b;
Scanf(“a=%d,b=%d”,&a,&b);
Printf(“\na=%d,b=%d”,a,b);
}
输入“a=123,b=456”
结果在次行显示a=123,b=456(正确)
输入“123456”
结果在次行显示a=0,b=474(错误)
= 4 \* GB3 ④若指定输入数据的类型,则结果会自动截断不空格的数字序列,如
#include
Void mian()
{
Int a,c;char b;
Scanf(“%d%c%d”,&a,&b,&c);
Printf(“\na=%d,b=%c,c=%d”,a,b,c);
}
输入“123a456”
结果在次行显示a=123,b=a,c=456
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/24055160/viewspace-664816/ ,如需转载,请注明出处,否则将追究法律责任。