本文介绍了当整数长度未知时,保持前导零的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

以下程序将反转用户输入.但是,对于带有尾随零的数字,在打印反向数字时,零将被忽略".

The following program reverses user input. However, for numbers with trailing zeroes, the zeroes are 'ignored' when printing the reversed number.

#include<stdio.h>

int main(void)
{
   int n, reversedNumber = 0, remainder;

    printf("Enter an integer: ");
    scanf("%d", &n);

    while(n != 0)
    {
        remainder = n%10;
        reversedNumber = reversedNumber*10 + remainder;
        n /= 10;
    }

    printf("Reversed Number = %d\n", reversedNumber);

    return 0;
}

由于用户输入的整数长度未知,我们如何打印所有尾随的零,例如:

Since the integer length of the user input is unknown, how can we print all the trailing zeros for example:

Enter an Integer: 3000
Reversed Number = 0003

推荐答案

不是.:-)

计算迭代次数,并将其作为宽度传递给对 printf 的最终调用.

Count the number of iterations and pass it to the final call to printf as width.

#include<stdio.h>

int main(void)
{
   int n, reversedNumber = 0, remainder;

   printf("Enter an integer: ");
   scanf("%d", &n);

   {
     size_t i = (0 > n);

     while (n != 0)
     {
       remainder = n % 10;
       reversedNumber = reversedNumber * 10 + remainder;
       n /= 10;
       ++i;
     }

     printf("Reversed Number = %0*d\n", (int) i, reversedNumber); /* Alternatively
                                            to the cast you can define i as int. */
   }

   return 0;
}

文档:

[...]

  • 可选的最小字段宽度.如果转换后的值的字符数少于字段宽度,则在字段宽度的左边(或默认情况下,如果给定了左边的调整标志,则在右边)用空格填充(默认情况下).字段宽度采用星号*(稍后描述)或非负十进制整数的形式.[...])

[...]

5 如上所述,字段宽度可以用星号表示.在这种情况下,int参数可提供字段宽度或精度.指定字段宽度[...]的参数应(按此顺序)出现在要转换的参数(如果有)之前.

5 As noted above, a field width [...] may be indicated by an asterisk. In this case, an int argument supplies the field width or precision. The arguments specifying field width [...] shall appear (in that order) before the argument (if any) to be converted.

[...]

这篇关于当整数长度未知时,保持前导零的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-17 15:45
查看更多