注册 登录
编程论坛 C语言论坛

小白发问,求大佬赐教

cherry梨 发布于 2021-09-16 19:54, 1533 次点击
#include <stdio.h>

int main()
{
    int year,month,day;
    printf("请用标准格式输入一个日期(YYYY_MM_DD):");
    scanf("%d_%d_%d",&year,&month,&day);
    printf("中国日期格式:%d年%d月%d日\n",year,month,day);
    printf("美国日期格式:%d/%d/%d/\n",month,day,year);
    printf("英国日期格式:%d/%d/%d/\n",day,month,year);
    return 0;
}


新人小白发问:若日期输入格式为 YYYYMMDD,且严格按 4 位年、2 位月和 2 位日的宽度进
行输入,不足宽度的需在前面补 0。例如:2018-9-1 的输入格式为 20180901。程序应如
何修改?
2 回复
#2
自由而无用2021-09-16 20:46
//online parser: https://www.bccn.net/run/
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define strIN "请用标准格式输入一个日期(YYYY_MM_DD):"
#define strCN(cn) cn"日期格式"
#define strFM(y, m, d) "%s"y"%s"m"%s"d"\n"


typedef char* string;
struct sdate {
    string year;
    string month;
    string day;
};

int main(int argc, char *argv[])
{
    struct sdate vdate;
    argv[0] = "20180901";
   
    strncpy(vdate.year = malloc(5), argv[0], 4);
    strncpy(vdate.month = malloc(2), argv[0] + 4, 2);
    strncpy(vdate.day = malloc(2), argv[0] + 6, 2);
   
    puts(strIN);
    puts(argv[0]);
    printf(strCN("CHN")strFM("(Y)", "(M)", "(D)"), vdate.year, vdate.month, vdate.day);
    printf(strCN("USA")strFM("(M)", "(D)", "(Y)"), vdate.month, vdate.day, vdate.year);
    printf(strCN("UK")strFM("(D)", "(M)", "(Y)"), vdate.day, vdate.month, vdate.year);
   
    return 0;
}
#3
自由而无用2021-09-16 20:47
output sample:
请用标准格式输入一个日期(YYYY_MM_DD):
20180901
CHN日期格式2018(Y)09(M)01(D)
USA日期格式09(M)01(D)2018(Y)
UK日期格式01(D)09(M)2018(Y)
#4
diycai2021-09-17 12:54
#include <stdio.h>

int main()
{
    char date[10];
    int year,month,day;
    printf("请用标准格式输入一个日期(YYYYMMDD):");
    scanf("%s", date);

    year = (date[0]&15)*1000 + (date[1]&15)*100 + (date[2]&15)*10 + (date[3]&15);
    month = (date[4]&15)*10 + (date[5]&15);
    day = (date[6]&15)*10 + (date[7]&15);

    printf("中国日期格式:%d年%d月%d日\n",year,month,day);
    printf("美国日期格式:%d/%d/%d/\n",month,day,year);
    printf("英国日期格式:%d/%d/%d/\n",day,month,year);
    return 0;
}
#5
我善治鬼2021-09-17 13:07
程序代码:


#include <stdio.h>

int main()
{
    int year = 2021, month = 9, day = 15;
    printf("中国日期格式:%04d年%02d月%02d日\n", year, month, day);
    printf("美国日期格式:%02d/%02d/%04d/\n", month, day, year);
    printf("英国日期格式:%02d/%02d/%04d/\n", day, month, year);
    return 0;
}


1