1

我想扫描值并在数字前添加 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
}
4

3 回答 3

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;
}
于 2014-10-28T00:16:04.387 回答
0

做这个:

scanf("%d", &value);    //entering '12'  
printf("%04d", value);  //prints 0012
于 2014-10-28T00:04:04.080 回答
0
Scanf(%40d",x); 
//wont work

您可以将值扫描并打印为字符串,只需将输入输入为 00001 ,00002,00003..... 而不是 ,1,2,3,....

于 2014-10-29T09:43:35.397 回答