c语言题目,急求!!!要求利用函数,输入一个日期字符串,然后输出该日期的前一天!

比如输入20080301,输出20160229

typedef struct {
int y;
int m;
int d;
}Date;

void pre_date(Date* s, Date* p) {
   *p = *s;
if (p->d > 1) {
p->d--;
return;
}
p->m--;
switch (p->m) {
case 0:
p->y--;
p->m = 12;
case 1: case 3: case 5: case 7: case 8: case 10:
p->d = 31;
break;
case 2:
p->d = 28;
if (((p->y % 4 == 0)) && !(p->y %100 == 0 && p->y % 400 != 0))
p->d++;
break;
case 4: case 6: case 9: case 11:
p->d = 30;
        break;
}

}
void get_date(char*s , Date* d) {
const char fmt[] = "YYYYMMDD";
const char* m = fmt;
d->y = d->m = d->d = 0;
while (*s) {
int *c;
switch (*m) {
case 'Y': c = &d->y;break;
case 'M': c = &d->m;break;
case 'D': c = &d->d;break;
}
*c = *c * 10 + (*s - '0');
m++;
s++;
}
}
int main() {
char str[512];
Date d1, d2;
gets(str);
get_date(str, &d1);
pre_date(&d1, &d2);
printf("%d-%02d-%02d", d2.y, d2.m, d2.d);
return 0;
}

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网