第1个回答 2020-01-02
不是
printf("%3d",a,b);的意思是输出的数占三个宽度
但是输出列表有a,b两个数而已
宽度就是3不是a的值
第2个回答 2020-04-02
楼主好像已经知道了这个问题的答案了吧.
printf("%*d",a,b);其中a作为b的输出宽度控制.
其实也就是*的替换功能了,正是由于*的替换功能结合%md的宽度控制,替换之后具体怎么输出的规则就和宽度控制的规则一样了.
举个例子:
printf("%*d",2,123);//输出为:123,相当于%2d输出的效果,因为123位数超过2,故原样输出,且为默认的右对齐.
printf("%*2d",1,123);//输出应为[7的空格][123],即相当于%12d输出的效果.
欢迎交流.
第3个回答 2019-02-25
C语言中printf里的%d是输出
int
型数据的格式符。
在scanf()函数里也是如此。
第4个回答 2019-05-05
在printf可以这样理解*被替换成printf("%*d",number,var);中的number,然后按照printf("%number
d"10);来格式化输出数据,看代码:
#include
void main()
{
printf("000000123450000000\n");
printf("1=%d,2=%*d,3=%d\n",1,5,3,3);
return;
}
从图中可以看出输出
了5个空格。
补充:在scanf中其表示忽略该输入