输入一个人的出生日期(包括年月日),将该生日中的年、月、日分别输出。
数据范围:年份满足 ,月份满足 ,日满足
输入只有一行,出生日期,包括年月日,年月日之间的数字没有分隔符。
三行,第一行为出生年份,第二行为出生月份,第三行为出生日期。输出时如果月份或天数为1位数,需要在1位数前面补0。
20130225
year=2013 month=02 date=25
通过scanf函数的%m格式控制可以指定输入域宽,输入数据域宽(列数),按此宽度截取所需数据;通过printf函数的%0格式控制符,输出数值时指定左面不使用的空位置自动填0。
#include <stdio.h> int main() { int year = 0; int month = 0; int date = 0; //按照格式输入 scanf("%4d%2d%2d", &year, &month, &date); printf("year=%4d\n", year); printf("month=%02d\n", month); printf("date=%02d\n", date); return 0; }
#include <stdio.h> int main(){ int y = 0; int m = 0; int d = 0; scanf("%4d%2d%2d", &y, &m, &d); printf("year=%d\n",y); if (m>0 && m<10) { printf("month=0%d\n",m); }else { printf("month=%d\n",m); } if (d>0 && d<10) { printf("date=0%d\n",d); }else { printf("date=%d\n",d); } return 0; }
struct Struct { int year; int month; int date; }; int main() { struct Struct s; int k = 1; while (k) { scanf("%4d%2d%2d", &s.year, &s.month, &s.date); if ((s.year >= 1990) && (s.year <= 2015) && (s.month >= 1) && (s.month <= 12) && (s.date >= 1) && (s.date <= 30)) k = 0; else printf("请重新输入\n"); } printf("year=%04d\nmonth=%02d\ndate=%02d\n", s.year, s.month, s.date); }