您的位置:首页 > 编程语言 > C语言/C++

判断从出生到18岁生日一共度过了多少天

2015-11-23 11:39 239 查看
杭电acm第1201

/***********判断从出生到18岁生日一共度过了多少天*******************/
#include<stdio.h>
#define N 100

void show(int data[][3],int n){
int sum=0;
for(int i=0;i<n;i++){
printf("%d-%d-%d\n",data[i][0],data[i][1],data[i][2]);
}
}

int judge(int y,int m,int d){
if(m==2&&d==29&&(y%400==0||(y%4==0&&y%100!=0))){
return 1;
}else if(y%400==0||(y%4==0&&y%100!=0)){
return -1;
}return 0;
}
int procs(int y,int m,int d){
int sum=0;
if(judge(y,m,d)==1)
return -1;
for(int i=0;i<18;i++){
if(judge(y+i,m,d)==-1){
sum+=366;
}else{
sum+=365;
}
}if(m>2){
if(judge(y,m,d)==-1)
sum--;
else if(judge(y+18,m,d)==-1)
sum++;
}
return sum;
}
void main(){
int DATA
[3]={0};
int n=0;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d-%d-%d",&DATA[i][0],&DATA[i][1],&DATA[i][2]);
printf("%d\n",procs(DATA[i][0],DATA[i][1],DATA[i][2]));
}
//show(DATA,n);
//	for(int i=0;i<n;i++){
//		printf("%d\n",procs(DATA[i][0],DATA[i][1],DATA[i][2]));
//	}
}

测试数据

4
2000-02-29
2001-02-28
1988-02-28
1988-03-07
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ACM C++ 日期计算