输入一个人的出生日期(包括年月日),将该生日中的年、月、日分别输出。
数据范围:年份满足
,月份满足
,日满足 
输入只有一行,出生日期,包括年月日,年月日之间的数字没有分隔符。
三行,第一行为出生年份,第二行为出生月份,第三行为出生日期。输出时如果月份或天数为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; }