scanf函数和printf函数

scanf函数

scanf函数能够完成精确的格式化输入,其功能是:按照给定的格式从标准输入设备上接收整型、实型、字符型和字符串等各种类型的一个或多个数据的输入并将其保存到指定的变量中。

scanf函数原型包含在标准输入输出头文件“stdio.h”中。
格式:scanf("格式控制字符串",输入项地址列表);

1)格式转换说明符

d
输入一个十进制整数
o
输入一个八进制整数
x
输入一个十六进制整数
i
输入一个有符号或无符号的十进制、八进制、十六进制整数
u
输入一个无符号十进制整数
f 、e或E、
g或G
输入一个小数形式或指数形式的浮点数
c
输入一个字符
s
输入一个字符串

2)修饰符

①域宽
可以用一个十进制数指定输入数据的数据宽度,系统自动按域宽截取输入数据
scanf(“%3d”,&a);表示按宽度3输入一个整数给变量a。如果读入数据为:123456<回车 >,则变量a实际接收的值为123。
②字符*
*表示按指定格式读入数据但不赋予相应的变量,作用是跳过相应的读入数据。
#include<stdio.h>
mian( )
{
int month, day,yaer;
printf("Enter a date in the form d-m-y:");
scanf("%d%*c%d %*c%d",&date,&month,,&year);
printf("date=%d month=%d year=%d/n",date ,month,year);
}
运行结果:
Enter a date in the from d-m-y:12/3/2003
day=12,month=3,year=2003
③l和h
用于说明输入的数据时长整型(l)或短整型(h)。l和h可以和转换说明符d、o、x一起使用,形式为%ld、%lo、%lx、%hd、%ho、%hx,此外l还可以与f或e一起(%lf或%le)表示输入double型数据。
3)普通字符(非格式字符)
格式控制字符串中除了格式字与修饰符外,还可以包含普通字符,这些普通字符包括:可打印字符、空格和转义字符。
①可打印字符
对scanf函数,如果格式控制字符串中的说明符之间包含有其他字符,那么在输入数据时,必须在相应位置读入这些字符。
②空格
格式控制字符串中的空格可以分隔数据,在多个数据输入过程中,如果没有普通字符做数据的分隔符,则在数值数据输入时,可以用空格作为读入数据的分隔符,但在字符数据输入时,空格则不能作为数据之间的分隔符,它将被作为有效数据处理。
③转义字符
在以%c格式的数据读入中,转义字符被作为有效字符处理。而在格式控制字符串中的转义字符具有输入转义字符所代表的控制代码或特殊字符的能。

printf()函数

格式化输出函数,一般用于向标准输出设备按规定格式输出信息

printf()函数的调用格式为: printf("<格式化字符串>", <参量表>);

其中格式化字符串包括两部分内容:

 一部分是正常字符, 这些字符将按原样输出;

另一部分是格式化规定字符, 以"%"开始, 后跟一个或几个规定字符, 用来确定输出内容格式。 
参量表是需要输出的一系列参数, 其个数必须与格式化字符串所说明的输出参数个数一样多, 各参数之间用","分开, 且顺序一一对应, 否则将会出现意想不到的错误。

\n 换行 
\f 清屏并换页 
\r 回车 
\t Tab符

示例 
#include<stdio.h> 
#include<string.h> 
int main() 
{ 
char c, s[20], *p; 
int a=1234, *i; 
float f=3.141592653589; 
double x=0.12345678987654321; 
p="How do you do"; 
strcpy(s, "Hello, Comrade"); 
*i=12; 
c='\x41'; 
printf("a=%d\n", a); /*结果输出十进制整数a=1234*/ 
printf("a=%6d\n", a); /*结果输出6位十进制数a= 1234*/ 
printf("a=%06d\n", a); /*结果输出6位十进制数a=001234*/ 
printf("a=%2d\n", a); /*a超过2位, 按实际值输出a=1234*/ 
printf("*i=%4d\n", *i); /*输出4位十进制整数*i= 12*/ 
printf("*i=%-4d\n", *i); /*输出左对齐4位十进制整数*i=12*/ 
printf("i=%p\n", i); /*输出地址i=06E4*/ 
printf("f=%f\n", f); /*输出浮点数f=3.141593*/ 
printf("f=6.4f\n", f); /*输出6位其中小数点后4位的浮点数 
f=3.1416*/ 
printf("x=%lf\n", x); /*输出长浮点数x=0.123457*/ 
printf("x=%18.16lf\n", x);/*输出18位其中小数点后16位的长浮点 
数x=0.1234567898765432*/ 
printf("c=%c\n", c); /*输出字符c=A*/ 
printf("c=%x\n", c); /*输出字符的ASCII码值c=41*/ 
printf("s[]=%s\n", s); /*输出数组字符串s[]=Hello, Comrade*/ 
printf("s[]=%6.9s\n", s);/*输出最多9个字符的字符串s[]=Hello, 
Co*/ 
printf("s=%p\n", s); /*输出数组字符串首字符地址s=FFBE*/ 
printf("*p=%s\n", p); /* 输出指针字符串p=How do you do*/ 
printf("p=%p\n", p); /*输出指针的值p=0194*/ 
getch(); 
retunr 0; 
} 

转载请注明: http://write.blog.csdn.net/postedit/39313123



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值