您能否定义从C中的数字打印的最小和最大数字量?

您能否定义从C中的数字打印的最小和最大数字量?,c,formatting,printf,C,Formatting,Printf,例如,我想打印出最多8个数字的0被截断,如果小于0,则打印出最少3个数字。像这样: int x = 3; printf("%max/min d", x) 将打印 003 1674 83028573 将打印 003 1674 83028573 及 将打印 003 1674 83028573 可以这样做吗?您可以这样做: printf("%03d", x % 100000000); %03d告诉printf向左填充零,直到输出长度至少为3个字符 另一部分相当简单,您最多需要8个

例如,我想打印出最多8个数字的0被截断,如果小于0,则打印出最少3个数字。像这样:

int x = 3;
printf("%max/min d", x)
将打印

003
1674
83028573
将打印

003
1674
83028573

将打印

003
1674
83028573

可以这样做吗?

您可以这样做:

printf("%03d", x % 100000000);
%03d告诉printf向左填充零,直到输出长度至少为3个字符

另一部分相当简单,您最多需要8个右键?看看剩下的

如果您的输入不适合整数,只需将int替换为long long,然后将%03d替换为%03lld,因为lld是long long int的说明符,或者只将ld替换为long int

所有这些都假设您的值始终是严格正的,在这种情况下,您还可以使用无符号变量,其中说明符d被u替换。如果您的值是有符号的,并且希望最终输出长度为8个字符减去包含的字符,则只需应用条件语句:

printf("%03d", (x < 0 ? x % 10000000 : x % 100000000));

您可以编写一个简单的函数来完成此操作: -使用ceil和log计算数字中的位数 -使用long int存储值并执行算术以获得正确的结果 -使用正确的转换说明符%lld打印值

#include <stdio.h>
#include <math.h>

#define min_length  3
#define max_length  8

void PrintDigits(long long int x)
{
    int noOfDigits = ceil(log10(x));
    if(noOfDigits < min_length)
        printf("%03lld\n", x % 1000000);
    else if (noOfDigits > max_length)
        printf("%lld\n", x % 100000000);

}

int main()
{

   long long int x = 3;
   PrintDigits(x);
   x = 840683028573;
   PrintDigits(x);  

   return 0;
}

你对格式化代码了解多少?你知道场地的宽度吗?关于精度?你试过这些吗?如果这还不够的话,那么通过直接截断或填充字符串缓冲区来生成一个函数来为您实现这一点怎么样?你在那里试过什么?“它是怎么工作的?”某个程序员说,“我明白你的意思了,我没有描述。谢谢