#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开头的。
感谢采纳我的回复,对你有帮助的话,关注下我的博客呗,我会持续发技术文章。