我想扫描数值并在数字前加0,直到它长4位数。
示例:
scanf("%d",&value); //entering '4'..modify the scan somehow with format specifier?
printf("%d",value); //prints 0004
或其他例子:
scanf("%d",&value); //entering '12'
printf("%d",value); //prints 0012
或其他例子:
scanf("%d",&value); //entering '123'
printf("%d",value); //prints 0123
并且对于扫描值已经是4位数的情况,请忽略。
有像printf("%04d",value)这样的格式说明符,但是在扫描语句中指定格式对我来说至关重要。
输入:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
我的输出
_______1_______
/ \
__2__ __3__
/ \ / \
4 5 6 7
/ \ / \ / \ / \
8 9 10 11 12 13 14 15
它不像我喜欢的那样排队,因为我硬编码了所有数字长度为4的情况。
期望的输出:(排队很好)
_______0001_______
/ \
__0002__ __0003__
/ \ / \
0004 0005 0006 0007
/ \ / \ / \ / \
008 009 0010 0011 0012 0013 0014 0015
目前如何调用:
int main()
{
int q[100];
int inputValue;
int qSize=1;
while (inputValue != -1) //scanning until -1 is reached
{
cin >> inputValue; //here is each number
//What can I add here to make it 4 digits long? (i.e. adding 0's)
if (inputValue != -1)
insertAndSort (q, qSize, inputValue); //sorts a heap
}
drawSortedTree (q, qSize);//output
}
答案 0 :(得分:0)
这样做:
scanf("%d", &value); //entering '12'
printf("%04d", value); //prints 0012
答案 1 :(得分:0)
您说printf ("%04d", value);
不是您想要的 - 您想在输入语句中指定格式,但您的示例不会在输入中指定前导零。但如果他们这样做,保留它们的唯一方法就是捕获整个字符串。
int main()
{
int value;
char string[100];
scanf ("%s", string);
value = atoi (string);
printf( "%d\n", value);
printf( "%s\n", string);
return 0;
}
答案 2 :(得分:0)
Scanf(%40d",x);
//wont work
你可以扫描&将值打印为字符串 只需输入00001,00002,00003 ..... 而不是1,2,3 ...... ....