给你总结一下%后面接的东西吧 看完你就懂了  
格式控制符: 
       %d:   输出一个10进制的整数;%md问题:m表示域宽也可以理解为位数,可为正可为负 正表示左侧空格 负表示右侧空格; 
       %f    输出一个实数类型的数据;默认输出为6位小数 不足补零;如果只想打印两位小数 则在f前写入.2 就是printf("f1=%.2f",f1); 
             如果写成%d6.3f  其中6表示有6位数 .3表示是3位小数; 如果是%-6.3f表示位数不够的时候从右边空小数;如果不是负数而小数位不够就会从左边空格; 
             精度问题:float:%f打印出来后,精度小数位为6位 有效数字是7位 到第八位时就不精确了 如3.1415926有八位数字了 所以最后第八个数子就算打印出来也是无效数字; 
                       double:双精度下有效位是15位 只要写 double d1=3.1415926;printf(d1=“%.7f”,d1);就可以打印出来了 
       %c    输出一个字符; 
       %s    输出一个字符串; 
       %o    输出一个八进制数; 
       %x    输出一个十六进制数; 
       %p    输出一个地址; |