C及C++格式控制符

来源:互联网 发布:如何在手机淘宝上开店 编辑:程序博客网 时间:2024/06/06 01:29

算法题中经常要求按照某种固定的格式输出

C语言中主要的使用printf()

1.d格式:用来输出十进制整数。主要有以下几种用法:

% - 0 m.n l或h 格式字符

%-:表示左对齐输出,如省略表示右对齐输出

0:有0表示指定空位填0,如省略表示指定空位不填

m.n m指域宽,即对应的输出项在输出设备上的所占的字符数。n指精度,用于说明输出的实型数的小数位数。未指定n时,隐含的精度为n=6位。

l或h:l对整型指long型,对实型指double型。

h用于将整型的格式字符修正为short型

对实型指double型。


%d  按整型数据的实际长度输出

%md m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。

%ld 输出长整型数据

2.o格式:以无符号八进制形式输出整数。对长整型可以用“%lo"格式输出。同样也可以指定字段宽度用“%mo"格式输出、

main(){    int a = -1;    printf("%d %o",a,a);}运行结果为-1,177777

因为-1在内存中以补码形式存放为(1111111111111111)2,转换为八进制数为(177777)8。注意此编译器int为16位,我的电脑上int型占32位。


3.x格式:以无符号十六进制形式输出整数。对长整型可以适用”lx“格式输出。

4.u格式:以无符号十进制形式输出整数。对长整型可以适用”lu“格式输出。


5.c格式,输出一个字符

6.s格式:输出一个字符串,

%s:printf("%s","China");输出china字符串,没有”“。

%ms,输出的字符串占m列,如本身长度大于m,全部输出。若小于m,则左补空格。

其余控制符如m.n






其余注意

输出%,则使用%%

对于单精度数,使用%f,格式输出时,仅前7位是有效数字,小数6位

对于双精度数,使用%lf,格式输出时,仅前16位是有效数字,小数6位

进阶

对于m.n的格式还可以用如下方法表示

char ch[20];

printf("%*.*s\n",m.n.ch);

前面一个*对应后面的m,定义的是中的输出宽度,后面*对应于后面的n,定义输出的字符个数。好处,可以对m,n赋值

 main() 

   { int a = -1; 

     printf("%d, %o", a, a); 

   }




"格式描述串"是由一系列的"格式转换说明符号"组成,格式转换说明符号的描述形式如下:
% [+][-] 0 m[.n] [输出精度] <形式字母>
(1)形式字母:制定输出格式,如表
d:十进制整型数
i:十进制整型数
x:十六进制整型数
o:八进制整型数
u:无符号十进制整型数
c:单个字符;
s:字符串
e:指数形式的浮点数
f:小数形式的浮点数
g:e和f中比较短的一种
p:显示变量所在的内存地址
n:它不是向printf()传递格式化信息,而是令printf()把自己已经输出的字符总数放到相应变元指
的整形变量中
%:符号%本身;
(2):输出精度如果形式字母是d,x,o.u,则可以指定如下两类精度
l:long型输出精度
h:short型输出精度
默认时为int型精度
如:long x=123454578;printf("%d",x);
如果形式字母为e,f,g的时候,则指定l的 时候为double精度,不指定为float精度;
(3):m[.n]指定输出长度,如果输出的是实例,则m表示该项输出占用字符位置的总长度,n表示小数部分的字

符长度,如float x=4.56;printf("%7.4f",x);
(4)0:指定不被使用的空位置填写0,入股不指定使用0,则不使用的位置为空白.该项仅仅对树枝输出时才可

以指定,对字符串输出不用指定.例如
int x=234;
printf("%05d",x);//00234
printf("%5d",x);//**234
(5)[+][-]:指定输出位置,如果指定+或者缺省时为右对齐,如果为"-"的时候为左对齐;



0 0
原创粉丝点击