无符号型数据也可用%o或%x格式输出
例3.12 无符号数据的输出。
#include <stdio.h>
void main()
{unsigned a=65535;
int b=-2;
printf("a=%d,%o,%x,%u\n",a,a,a,a);
printf("b=%d,%o,%x,%u\n",b,b,b,b);
}
在TC2.0下(占2字节)的运行结果为:
a=-1,177777,ffff,65535
b=-2,177776,fffe,65534
在VC++6.0下(占4字节)的运行结果为:
a=65535,177777,ffff,65535
b=-2,37777777776,fffffffe,4294967294
%mc。用来指定输出字符数据的宽度
char c=‘a’;
printf(“%3c”,c);
a
%ms。指定输出的字符串占m列
若串长大于m,则将串全部输出
若串长小于m,则左补空格
%-ms。如果串长小于m,则在m列范围内,字符串向左靠,右补空格。
例3.13 字符串的输出。
#include <stdio.h>
void main ( )
{
printf("%3s,%7.2s,%.4s,%-5.3s\n",
"CHINA","CHINA", "CHINA", "CHINA");
}
CHINA, CH,CHIN,CHI
%m.nf。指定输出的实数共占m列,其中有n位小数
如果数值长度小于m,则左端补空格
%-m.nf与%m.nf基本相同,只是使输出的数值向左端靠,右端补空格
例3.14 输出实数时指定输出两位小数。
#include <stdio.h>
void main ( )
{ float f=123.456;
printf("%f %10f\n”,f,f);
printf(”%10.2f %.2f\n”,f,f);
printf(”%-10.2f\n",f);
}
123.456001 123.456001
123.46 123.46
123.46
例3.15 求3个圆的周长,输出结果时上下按小数点对齐,取两位小数。
#include <stdio.h>
#define PI 3.1415926
void main ( )
{ double r1=1.53,r2=21.83,r3=123.71, s1,s2,s3;
s1=2.0*PI*r1; s2=2.0*PI*r2; s3=2.0*PI*r3;
printf("r1=%10.2f\nr2=%10.2f\nr3=%10.2f\n",
r1,r2,r3);
}
%m.ne和%-m.ne。 m、n和“-”字符的含义与前相同。此处n指拟输出的数据的小数部分(又称尾数)的小数位数
%g。用来输出实数,它根据数值的大小,自动选f格式或e格式(选择输出时占宽度较小的一种),且不输出无意义的零
2.输入数据格式控制
与printf函数中的格式声明相似
以%开始,以一个格式字符结束,中间可以插入附加的字符
可以指定输入数据所占的列数,系统自动按它截取所需数据