用c语言表示日期为dd / mm / yy

# include  int main(){ int d1, d2, m1, m2, year; printf("Enter date (dd/mm/yy): "); scanf("%d,%d/%d,&,d/%d", &d1,&d2,&m1,&m2,&year); 

**大家好我是c编程的新手,所以我试着将日期作为dd / mm / yy格式,但是当我这样写它时,它给出了一个输出为191/033/0的19/07/14输入我该如何解决这个问题? **

 # include  int main(){ int d, m, year; printf("Enter date (dd/mm/yy): "); scanf("%d/%d/%d", &d,&m,&year); if (d%10==1 && d!=11) printf("%d st",d); else if (d%10==2 && d!=12) printf("%d nd",d); else if (d%10==3 && d!=13) printf("%d rd",d); else printf("%d th",d); return 0; } 

顺便说一句, dd/mm/yy 并不意味着“两天,两个月和两年”。 这意味着“日,月,年两位数”。 这就是你不需要这么多变量的原因。

您需要strftime()函数,并正确处理输入,以免发生意外

这是如何做到这一点的一个例子

 #include  #include  #include  int main() { char buffer[100]; struct tm date; memset(&date, 0, sizeof(date)); printf("Enter date (dd/mm/yy): "); if (fgets(buffer, sizeof(buffer), stdin) == NULL) return -1; if (sscanf(buffer, "%d/%d/%d", &date.tm_mday, &date.tm_mon, &date.tm_year) == 3) { const char *format; format = "Dated %A %dth of %B, %Y"; if (strftime(buffer, sizeof(buffer), format, &date) > sizeof(buffer)) fprintf(stderr, "there was a problem converting the string\n"); else fprintf(stdout, "%s\n", buffer); } return 0; }