为啥一个是03一个是3不应该都输出3吗

img

因为month是int类型,scanf中 %2d 读取输入的03,会转成int数值3,前面的0会忽略,不会保留.
输出int数值默认开头不会有0, 你要输出"03"printf中要写成%02d
你题目的解答代码如下:

#include<stdio.h>

int main()
{
    int year,month,date;
    scanf("%4d%2d%2d", &year,&month,&date);
    printf("year=%04d\nmonth=%02d\ndate=%02d",year,month,date);
    return 0;
}

img

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

你这两张图是一样的啊,你说一个03,一个3在哪里?
%2d读入2个数字,03转成整数是3,你输出用%d则只输出3,如果用%2d则输出空格和3,如果用%02d则输出03

因为month是int类型,scanf中 %2d 读取输入的03,会转成int数值3,前面的0会忽略,不会保留.
输出int数值默认开头不会有0, 你要输出"03"printf中要写成%02d,不足两位数前面补0