|
发表于 2022-9-27 19:05:57
|
显示全部楼层
本楼为最佳答案
本帖最后由 jackz007 于 2022-9-28 09:57 编辑
- #include <stdio.h>
- #define dd 2
- int main(void)
- {
- int b[12] = {31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31} ;
- int d , e , m , y ;
- scanf("%d-%d-%d" , & y , & m , & d) ;
- if(y > 1999 && y < 3001 && m > 0 && m < 13) {
- e = b[m - 1] ;
- if(m == 2 && ((! (y % 4) && y % 100) || ! (y % 400))) e ++ ;
- if(d > 0 && d < e + 1) {
- while(d < dd + 1) {
- if(m < 2) {
- y -- ;
- m += 12 ;
- }
- m -- ;
- d += b[m - 1] ;
- if(m == 2 && ((! (y % 4) && y % 100) || ! (y % 400))) d ++ ;
- }
- d -= dd ;
- printf("%04d-%02d-%02d\n" , y , m , d) ;
- } else printf("[* error *] : invalid date !\n") ;
- } else printf("[* error *] : invalid date !\n") ;
- }
复制代码
编译、运行实况:
- D:\[00.Exerciese.2022]\C>g++ -o x x.c
- D:\[00.Exerciese.2022]\C>x
- 2022-3-1
- 2022-02-27
- D:\[00.Exerciese.2022]\C>x
- 2024-3-1
- 2024-02-28
- D:\[00.Exerciese.2022]\C>x
- 2022-1-2
- 2021-12-31
- D:\[00.Exerciese.2022]\C>x
- 2021-1-1
- 2020-12-30
- D:\[00.Exerciese.2022]\C>
复制代码 |
|