以下是格式输出的一些例子。例如,
int i=1234; long j=1234567L;
printf(”%d,%+6d,%06d,%-6d, %5ld”,i,i,i,i,j)
将输出:
1234,+1234,00l234,1234,1234567
注意:对于long型数据输出,必须在格式符之前有长度修饰符l,表明输出long型数据。
若 int k=045;long p=-1L;printf(”%#o,%4o,%6lo”,k,k,p)
将输出:
045, 45, 37777777777
而printf("%#x,%4x,%6lx”,k,k,p)将输出:
0x25, 25, FFFFFFFF
若 unsigned int u= 65535u;prinif(”%d,%4u,%ln’,u,u,p)
将输出:
-l, 65535, 4294967295
若 char ch1= 045, ch2=’a’;printf(”%c,%-3c,%2c”,ch1,ch2,ch2)
将输出:
%,a, a
若 char s[]==”ABCDEF’;printf(”%3s,%4.2s,%-7.4s,%.5s”,s,s,s,s)
将输出:
ABCDEF, AB, ABCD, ABCDE
若 float f=123.4567f; double d=123.456789;
printf(”%.4f,%8.3f,%-7.2f,%.7f",f,f,f,d)
将输出:
123.4567, 123.457, 123.46, 123.4567890
而 printf(”%.6e,%10.2e,%-10.2e,%.2e,%.9e”,f,f, f,f,d)
将输出:
1.23457e+02, 1.2e+02,1.2e+02,l.2e+02, 1.23456789e+02
注意:实型数据的有效位数,不要以为凡是打印(显示)的数字都是准确的。一般地,float型只有7位有效数字,double型有15位有效数字。实际上,因计算过程中的误差积累,通常不能达到所说的有效位数。
另外,要注意%g格式的特殊性,当它选择“整数部分.小数部分”形式时,因格式修饰说明.p在e格式中的意义是指明精度,所以p的值是整数部分位数与小数部分位数之和(不是f
格式中的小数位数)。如有
float g1=12.34f,g2=0.0f;
double d=123.456789, g=123456.789;
printf("%g,%G",g1,g2);
printf("%f,%g,%g,%g,%.8g"’,g1,g1,d,g,g)
将输出:
12.34,0
12.340000,12.34,123.457,123457,123456.79
3.5 选择结构
选择结构有单分支选择结构、双分支选择结构和多分支选择结构。C语言提供相应的if语句和switCh语句分别用来描述这些选择结构。
1.单分支选择语句
单分支选择语句有以下形式:
if(表达式)
语句
这种形式的语句执行过程是:
(1)计算表达式的值;
(2)测试表达式的值。若表达式的值非0,则执行它的成分语句,并结束单分支选择的执行;若表达式的值为0,则立即结束单分支选择的执行。
2.双分支选择语句
汉分支选择语句有以下形式:
if(表达式)
语句1
else
语句2
双分支选择语句根据给定的选择条件表达式值为非0或为0两种情况,从两个供选择的成分语句中自动选取一个成分语句执行。双分支选择语句的执行过程是:
(1)计算表达式的值;
(2)测试表达式的值并选择执行语句。若表达式的值非0,则执行语句1,并结束双分支选择语句;否则执行语句2,并结束双分支选择语句。
注意;无论条件表达式的值为何值,只能执行语句1或语句2中的一个。当双分文选择语句中的else之后的语句2为空语句时,就变成单分支选择语句。
单分文选择语句和双分支选择语句统称且语句。在if语句中的语句、语句1和语句2可以是任何语句。当它们中的某一个需用语句序列描述时,必须将这语句序列写成复合语句。当它们中的某一个又是if语句时,就呈现嵌套的if语句形式。这时应注意else与if的对应关系。C语言约定else总是与它前面最接近的if对应。