请问这道c语言题怎么写?

题目描述:小明的18岁生日就要到了,他当然很开心,可是他突然想到一个问题,是不是每个人从出生开始,到达18岁生日时所经过的天数都是一样的呢?似乎并不全都是这样,所以他想请... 题目描述:
小明的18岁生日就要到了,他当然很开心,可是他突然想到一个问题,是不是每个人从出生开始,到达18岁生日时所经过的天数都是一样的呢?似乎并不全都是这样,所以他想请你帮忙计算一下他和他的几个朋友从出生到达18岁生日所经过的总天数,让他好来比较一下。

输入样式:
1
1988-03-07

输出样式:
6574
展开
 我来答
White_MouseYBZ
2019-06-16 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6674万
展开全部

#include "stdio.h"

int main(int argc,char *argv[]){

int y,m,d,sum,i,w[12]={31,28,31,30,31,30,31,31,30,31,30,31};

printf("Please enter the birth year-month-day...\n");

if(scanf("%d-%d-%d",&y,&m,&d)!=3 || y<1 || m<1 || m>12 || (w[1]=y%4==0 && y%100 || y%400==0 ? 29 : 28,d>w[m-1])){

printf("Input error, exit...\n");

return 0;

}

for(sum=w[m-1]-d,i=m;i<12;sum+=w[i++]);//求第一年生日后总天数

for(i=y+1,y+=18;i<y;i++)

sum+=(365+(i%4==0 && i%100 || i%400==0));//求到18岁前一年总天数

w[1] = i%4==0 && i%100 || i%400==0 ? 29 : 28;//18岁那一年是闰年?

for(m-=2;m>=0;sum+=w[m--]);//求到18岁那一年整月天数和

printf("%d\n",sum+d);//输出

return 0;

}

代码图片和运行样例:

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式