先看一道题:四舍五入
要求:输入:数字双精度num和n. num是被四舍五入的数,n是保留的小数位数(n>=0)
输出:保留的结果
程序如下:
#include<stdio.h>
int main()
{
double num;
unsigned int n;
printf("Please input num and n:");
scanf("%lf,%d",&num,&n);
printf("output:\n");
printf("%.*f\n",n,num);
return 0;
}
结果为:
这里用到了%*.*f的表达,其中*.*是printf函数的格式附加字符。*表示不确定的变量,可以用变量的值代替。
这里是制定宽度的数值的输出,如果制定宽度值为*号,参数列表中需要用一个整型参数值提供。
MSDN2008
If the width specification is an asterisk (*), an int argument from the argument list supplies the value
关于print函数中用到的格式附加字符说明:
字符:l 一般用于长整型整数,可加在格式符d、o、x、u前面
m(代表一个正整数) 数据最小宽度
n(代表一个正整数) 对实数,表示输出n位小数;对字符串,表示截取的字符个数
- (负号) 输出的数字或字符在域内向左靠
注意:
m(m=1,2,3...) 宽度至少为m位,不够以空格填充
0m(m=1,2,3...) 宽度至少为m位,不够左边以0填充
PS:
如果要输出字符“%”,应该在“格式控制字符串”中用两个“%”表示:
如printf("98%%\n"); //输出98%.