新手小白求助大神,怎么能输出07而不是7

#include<stdio.h>
int main()
{
    int d,m,y;
    printf("请输入日期,格式为月/日/年,例如01/01/20001:");
    scanf("%d/%d/%d",&m,&d,&y);
    
    printf("%d年%d月%d日\n",y,m,d);
}

printf("%04d年%02d月%02d日\n",y,m,d);

使用这样的方法可以让程序输出时在整数的前面补齐0到指定的位数。

%04d 如果不足4位由用0补到4位,一定要用%04d页不是%4d

这个其实是C标准明确规定过的格式串语法。

规定域宽的语法记得吗?例如%2d,对应的整数变量是2这样的一位数的话,输出时会加个前导空格。

你现在的需求,其实就是域宽为2,但前导不用空格而是0。C标准规定了该怎么做:

把你的月、日上的%d改为%02d即可。

同理,如果需要带前导零的四位数,那就是域宽为4,格式串用%04d。一定不要忘记0,否则前导将是空格而不是0。

给段代码你作为参考:

#include<stdio.h>



int main() {
	int d, m, y;
	printf("请输入日期,格式为月/日/年,例如01/01/20001:");
	scanf_s("%d/%d/%d", &m, &d, &y);

	if (d < 9 && m < 9) {
		printf("%d年0%d月0%d日\n", y, m, d);

	} else if (d < 9) {
		printf("%d年%d月0%d日\n", y, m, d);

	} else if (m < 9) {
		printf("%d年0%d月%d日\n", y, m, d);

	} else {
		printf("%d年%d月%d日\n", y, m, d);
	}
	
	return 0;
}

 

整数是无法以0开头的。

感谢采纳我的回复,对你有帮助的话,关注下我的博客呗,我会持续发技术文章。