首页 > 试题广场 >

出生日期输入输出

[编程题]出生日期输入输出
  • 热度指数:115604 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
输入一个人的出生日期(包括年月日),将该生日中的年、月、日分别输出。

数据范围:年份满足 ,月份满足 ,日满足

输入描述:
输入只有一行,出生日期,包括年月日,年月日之间的数字没有分隔符。


输出描述:
三行,第一行为出生年份,第二行为出生月份,第三行为出生日期。输出时如果月份或天数为1位数,需要在1位数前面补0。
示例1

输入

20130225 

输出

year=2013
month=02
date=25

备注:

通过scanf函数的%m格式控制可以指定输入域宽,输入数据域宽(列数),按此宽度截取所需数据;通过printf函数的%0格式控制符,输出数值时指定左面不使用的空位置自动填0。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
    int birthday=0;
    int year=0, month=0, day=0;
    scanf("%d", &birthday);
    year = birthday / 10000;
    day = birthday % 100;
    month = birthday % 10000/100;
    printf("year=%d\n", year);
    printf("month=%02d\n", month);
    printf("date=%02d\n", day);
    return 0;
}
发表于 2025-09-27 22:38:17 回复(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;
}

发表于 2025-09-05 10:28:09 回复(0)
#include <stdio.h>
int main()
{
    int n,y,m,d=0;
    scanf("%d",&n);
    y=(int)n/10000;
    m=(int)(n-y*10000)/100;
    d=(int)(n-y*10000-m*100);
    printf("year=%d\nmonth=%02d\ndate=%02d",y,m,d);
return 0;
}
发表于 2025-08-15 20:19:58 回复(0)
#include <stdio.h>
int main(void)
{
    int year = 0;
    int month = 0;
    int date = 0;
    char ch;
    scanf("%4d", &year);
    scanf("%2d", &month);
    scanf("%2d", &date);
    printf("year=%d\n", year);
    printf("month=%02d\n", month);
    printf("date=%02d", date);
    while ((ch = getchar()) == '\n')
        ;
    return 0;
}

发表于 2025-08-05 01:44:38 回复(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;
}

发表于 2025-06-14 12:14:11 回复(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;
}

发表于 2024-12-15 12:59:54 回复(0)
#include <stdio.h>

int main()
 {
    int y,m,d=0;
    scanf("%4d%2d%2d",&y,&m,&d);
    if(y>=1990&&y<=2015&&m>=1&&m<=12&&d>=1&&d<=30)
    {
        printf("year=%d\nmonth=%02d\ndate=%02d",y,m,d);
    }

    return 0;
}

发表于 2024-11-22 23:08:33 回复(0)
#include <stdio.h>
int main(){
    int a=0;
    scanf("%d",&a);
    int year=a/10000;
    int month=a%10000/100;
    int date=a%100;
    printf("year=%d\n",year);
    if(month<10)
    printf("month=0%d\n",month);
    if(month>=10)
    printf("month=%d\n",month);
    if(date<10)
    printf("date=0%d\n",date);
    if(date>=10)
    printf("date=%d\n",date);
    return 0;
}
最笨的方法给到大家
发表于 2024-11-08 20:50:32 回复(0)
#include<stdio.h>
int main()
{
int a=0;

scanf("%d",&a);
int year=a/10000;
int b=a%10000;
int month=b/100;
int date=b%100;
printf("year=%.4d\n",year);
printf("month=%.2d\n",month);
printf("date=%.2d\n",date);

    return 0;
}
发表于 2024-07-27 13:26:01 回复(0)
#include <stdio.h>

int main() {
    int year = 0;
    int mont = 0;
    int day = 0;
    scanf("%4d %2d %2d",&year, &mont, &day);//年份是4位数 月份是2位数 天是2位数
    printf("year=%4d\n",year); //取4位数
    printf("month=%02d\n",mont);//%02d :再取2位 当为1时(即1位数)在前面补0
    printf("date=%02d\n",day);//%02d:再取2位 当为1时(即1位数)在前面补0
    return 0;
}
发表于 2024-05-11 09:24:12 回复(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;
}

编辑于 2024-04-12 15:28:01 回复(0)
#include <stdio.h>

int main() {
  int y = 0, m = 0,d = 0;
  while(1)
  {
    //printf("请输入出生日期\n");//(跳出了题目要求,用户行为必须约束)
    scanf("%4d%2d%2d", &y, &m, &d);
    if(y >= 1900 && y <= 2015 && m >= 1 && m <= 12 && d >= 1 && d <= 30)
    {
        printf("year=%4d\nmonth=%02d\ndate=%02d\n", y, m, d);
        break;
    }
    else
    {
        printf("输入错误请重新输入\n");
    }
  }
  return 0;
}

发表于 2024-03-20 12:41:25 回复(0)
#include <stdio.h>

int main() {
    int year, month,day,temp;
    int cc;
    scanf("%d",&cc);
    year=cc/10000;
    month=cc/100%100;
    day=cc%100;
if (year>=1990&&year<=2015&&month>=1&&month<=12&&day>=1&&day<=30) {
    printf("year=%d\n",year);
    printf("month=%02d\n",month);
    printf("date=%02d\n",day);
    }
    return 0;
}
发表于 2024-03-06 10:22:34 回复(1)
#include <stdio.h>

int main() 
{
    int y, m, d;

    scanf("%4d%2d%2d", &y, &m, &d);

    printf("year=%d\nmonth=%02d\ndate=%02d", y, m, d);

    return 0;
}

编辑于 2024-03-02 19:22:13 回复(0)
#include <stdio.h>
#include <string.h>

int main() {
    char ch[8];
    char year[4],month[2],date[2];
    scanf("%s",ch);
    strncpy(year,ch,4);
    strncpy(month,ch+4,2);
    strncpy(date,ch+6,2);
    printf("year=%.4s\n",year);
    printf("month=%.2s\n",month);
    printf("date=%.2s\n",date);

    return 0;
}
我恨c语言没有java的substring函数
编辑于 2024-01-16 16:22:36 回复(0)
#include <stdio.h>

int main() {
    int a=0;
    scanf("%d",&a);
    printf("year=%d\n",a/10000);
    printf("month=%02d\n",(a/100)%100);
    printf("date=%02d\n",a%100);

    return 0;
}
编辑于 2024-01-09 20:16:02 回复(0)
#include <stdio.h>

int main() {
    int a,b,c;
    scanf("%4d%2d%2d", &a,&b,&c);
    printf("year=%d\n", a);
    printf("month=%0*d\n", 2,b);
    printf("date=%0*d", 2,c);
    return 0;
}
编辑于 2024-01-05 14:02:50 回复(0)
#include <stdio.h>

int main() {
    int a, year, month, date;
    scanf("%d", &a);
    year = a / 10000;
    month = (a - year * 10000) / 100;
    date = a - year * 10000 - month * 100;
    printf("year=%d\n",year);
    printf("month=%02d\n",month);
    printf("date=%02d",date);
    return 0;
}
编辑于 2023-12-30 17:37:27 回复(0)
#include <stdio.h>
int main() {
int a,y,m,d;
scanf("%d",&a);
d=a%100;
m=(a%10000-d)/100;
y=(a-m*100-d)/10000;
printf("year=%04d\nmonth=%02d\ndate=%02d\n",y,m,d);
    return 0;
}
编辑于 2023-12-23 20:52:29 回复(0)
#include <stdio.h>

int main ()
{
    int year=0;
    int month=0;
    int date=0;
    scanf("%4d %2d %2d\n", &year,&month,&date);
    printf("year=%4d\n",year);
    printf("month=%02d\n",month);
    printf("date=%02d\n",date);

    return  0;
}
发表于 2023-11-05 21:18:22 回复(1)