输入一个人的出生日期(包括年月日),将该生日中的年、月、日分别输出。
数据范围:年份满足
,月份满足
,日满足 
输入只有一行,出生日期,包括年月日,年月日之间的数字没有分隔符。
三行,第一行为出生年份,第二行为出生月份,第三行为出生日期。输出时如果月份或天数为1位数,需要在1位数前面补0。
20130225
year=2013 month=02 date=25
通过scanf函数的%m格式控制可以指定输入域宽,输入数据域宽(列数),按此宽度截取所需数据;通过printf函数的%0格式控制符,输出数值时指定左面不使用的空位置自动填0。
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main() {
char input[9];
scanf("%s", input);
int len = strlen(input);
// 提取年份(总是前4位)
char year[5] = {0};
strncpy(year, input, 4);
printf("year=%s\n", year);
// 处理月份和日期
if (len == 8) {
// 完整8位格式: YYYYMMDD
char month[3] = {0};
char date[3] = {0};
strncpy(month, input + 4, 2);
strncpy(date, input + 6, 2);
printf("month=%s\ndate=%s\n", month, date);
} else if (len == 7) {
// 7位格式: 可能是YYYYMMD或YYYYMDD
// 尝试将前两位作为月份
char potential_month[3] = {input[4], input[5], '\0'};
int month_val = (potential_month[0] - '0') * 10 + (potential_month[1] - '0');
if (month_val >= 1 && month_val <= 12) {
// 前两位是有效月份
printf("month=%s\n", potential_month);
// 日期只有一位,需要补0
printf("date=0%c\n", input[6]);
} else {
// 前两位不是有效月份,说明月份只有一位
printf("month=0%c\n", input[4]);
// 日期是后两位
printf("date=%c%c\n", input[5], input[6]);
}
} else if (len == 6) {
// 6位格式: YYYYMD
printf("month=0%c\n", input[4]); // 月份补0
printf("date=0%c\n", input[5]); // 日期补0
} else if (len == 5) {
// 5位格式: YYYYM
printf("month=0%c\n", input[4]); // 月份补0
printf("date=00\n"); // 日期未知,设为00
} else {
// 其他长度处理
printf("month=00\ndate=00\n");
}
return 0;
} #include <stdio.h>
int main(){
int y,m,d;
scanf("%4d %2d %2d ",&y ,&m ,&d);
printf("year=%.4d\n",y);
printf("month=%.02d\n",m);
printf("date=%.02d\n",d);
return 0;
} #include <stdio.h>
int main()
{
int smb[8]={0};
scanf("%1d%1d%1d%1d%1d%1d%1d%1d",&smb[0],&smb[1],&smb[2],&smb[3],&smb[4],&smb[5],&smb[6],&smb[7]);
printf("year=%1d%1d%1d%1d\n",smb[0],smb[1],smb[2],smb[3]);
printf("month=%1d%1d\n",smb[4],smb[5]);
printf("date=%1d%1d\n",smb[6],smb[7]);
return 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;
}