如何在C语言中显示两位数的数字?

65

对于C编程。如何将数字显示为00、01、02、03,而不是0、1、2、3。我只需要在10之前加上0。

我知道当你处理小数时,可以使用"%.2f"等方式。但整数反过来怎么办?

这是我正在使用的代码...**

printf("Please enter the hours: ");
    scanf ("%d",&hour);
printf("Please enter the minutes: ");
    scanf ("%d",&minute);
printf("Please enter the seconds: ");
    scanf ("%d",&second);
printf("%d : %d : %d\n", hour, minute, second);

我需要将数字显示为 00 : 00 : 00

??


2
一定是个重复的,对吧? - Carl Norum
3个回答

91

如果你想在前面填充两个空格的前导零,那么你需要使用%02d

printf ("%02d : %02d : %02d\n", hour, minute, second);

例如,看下面这个完整的程序:

#include <stdio.h>
int main (void) {
    int hh = 3, mm = 1, ss = 4, dd = 159;
    printf ("Time is %02d:%02d:%02d.%06d\n", hh, mm, ss, dd);
    return 0;
}

输出结果为:

Time is 03:01:04.000159
记住,%02d 表示最小宽度为两个字符,因此它将输出 123 作为 123。如果你的值是有效的小时、分钟和秒钟,则这不应该是问题,但有必要牢记这一点,因为许多经验不足的程序员似乎会犯把2当成最小最大长度的错误。

4
如何调节最大长度的解决方案是什么? - rahman
1
@rahman,关于指定最大长度,目前没有很好的解决方案。如果你有一个值为123,并将其塞入两个数字中,你会得到1223之一,这取决于你如何决定。在我看来,这两种情况都是不可接受的。更好的做法是输出**以表示出现了严重错误。 - paxdiablo
这也适用于十六进制 printf("%02X", ... ); - Stoica Mircea

45
使用格式:%02d。 这里的0表示使用零填充字段,而2表示该字段宽度为两个字符,因此对于任何需要显示少于2个字符的数字,它都将用0填充。

7
""%.2d" 是应该使用的表达方式。基本规则如下:"%<minimum-characters-overall>.<minimum-digits>d",其中<minimum-characters-overall>表示总字符数,<minimum-digits>表示最小数字位数。例如:"%6.3d"将打印6个字符,其中至少有3个数字。"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接