超级鸡杰 发表于 2020-12-5 15:17:03

为啥输出的时候少了一个0?

#include<stdio.h>
int main(void)
{
        char ch;
        int x,y;
       
        printf("Enter a 12-hour time:");
        scanf("%2d:%2d ",&x,&y);
       
        while((ch=getchar() )!='M'){
       
        if(ch=='P'){
                x+=12;
                printf("%d:%d PM",x,y);
               
        }else if(ch == 'A'){
                printf("%d:%d AM",x,y);
               
        }}
        return 0;
        }
求助,如图,当输入00的时候输出只有一个零?这是为什么?谢谢大佬们

jitianmoshen 发表于 2020-12-5 15:23:11

#include<stdio.h>
int main(void)
{
    char ch;
    int x,y;   
    printf("Enter a 12-hour time:");
    scanf("%2d:%2d ",&x,&y);   
    while((ch=getchar() )!='M')
    {   
      if(ch=='P')
      {
            x+=12;
            printf("%d:%02d PM",x,y);    //%02d
               
      }
      else if(ch == 'A')
            printf("%d:%02d AM",x,y);
    }
    return 0;
}

昨非 发表于 2020-12-5 15:23:46

#include<stdio.h>
int main(void)
{
        char ch;
        int x, y;

        printf("Enter a 12-hour time:");
        scanf("%2d:%2d ", &x, &y);

        while ((ch = getchar()) != 'M') {

                if (ch == 'P') {
                        x += 12;
                        printf("%d:%02d PM", x, y);   //这里改成%02d限制两位,不够的前面补0

                }
                else if (ch == 'A') {
                        printf("%d:%02d AM", x, y);//一样

                }
        }
        return 0;
}

测试结果:Enter a 12-hour time:12:00 AM
12:00 AM

昨非 发表于 2020-12-5 15:24:40

本帖最后由 昨非 于 2020-12-5 15:26 编辑

因为值为0的整型在用%d输出时只显示一位

格式控制串语法:%02d :意思时输出两位整型,不足的在前面用0来补齐

超级鸡杰 发表于 2020-12-5 15:32:30

昨非 发表于 2020-12-5 15:24
因为值为0的整型在用%d输出时只显示一位

格式控制串语法:%02d :意思时输出两位整型,不足的在前面用0 ...

谢谢

超级鸡杰 发表于 2020-12-5 15:33:14

昨非 发表于 2020-12-5 15:23
测试结果:

谢谢

超级鸡杰 发表于 2020-12-5 15:34:36

jitianmoshen 发表于 2020-12-5 15:23


谢谢
页: [1]
查看完整版本: 为啥输出的时候少了一个0?