|
|
#2
bcbbcclbbc2019-12-09 16:04
|
只有本站会员才能查看附件,请 登录
代码如下:
程序代码:#include<stdio.h>
#include<stdbool.h>
bool isLeap(int year){
return (year%4==0&&year%100!=0) || (year%400==0);
}
int main(){
int month[13][2]={(0,0),(31,31),(28,29),(31,31),(30,30),(31,31),(30,30),(31,31),(31,31),(30,30),(31,31),(30,30),(31,31)};
int time1,y1,m1,d1;
int time2,y2,m2,d2;
int tmp;
int cnt=1;
while(scanf("%d%d",&time1,&time2)!=EOF)//输入年月日并将较大值放入time2中
{
if(time1>time2){
tmp=time1;
time1=time2;
time2=tmp;
}
}
//从8位数据中分离出年月日
y1=time1/10000;
m1=time1/100%100;
d1=time1%100;
y2=time2/10000;
m2=time2/100%100;
d2=time2%100;
//计算从time1到time2所需天数
// do{
// d1++;
// cnt++;
// if(d1>month[m1][isLeap(y1)]){
// d1=1;
// m1++;
//
// }
// if(m1>12){
// y1++;
// m1=1;
// }
//
// }while(y1!=y2&&m1!=m2&&d1!=d2);//do-while就不知道哪里有问题了
while(y1<y2||m1<m2||d1<d2)
{
d1++;
if(d1==month[m1][isLeap(y1)]+1)//我写的是if(d1>month[m1][isLeap(y1)])
{
d1=1;
m1++;
}
if(m1==13)//同上if(m1>12)
{
y1++;
m1=1;
}
cnt++;
}
printf("%d\n",cnt);
return 0;
}
但是用自己的逻辑判断就得不到结果了。#include<stdbool.h>
bool isLeap(int year){
return (year%4==0&&year%100!=0) || (year%400==0);
}
int main(){
int month[13][2]={(0,0),(31,31),(28,29),(31,31),(30,30),(31,31),(30,30),(31,31),(31,31),(30,30),(31,31),(30,30),(31,31)};
int time1,y1,m1,d1;
int time2,y2,m2,d2;
int tmp;
int cnt=1;
while(scanf("%d%d",&time1,&time2)!=EOF)//输入年月日并将较大值放入time2中
{
if(time1>time2){
tmp=time1;
time1=time2;
time2=tmp;
}
}
//从8位数据中分离出年月日
y1=time1/10000;
m1=time1/100%100;
d1=time1%100;
y2=time2/10000;
m2=time2/100%100;
d2=time2%100;
//计算从time1到time2所需天数
// do{
// d1++;
// cnt++;
// if(d1>month[m1][isLeap(y1)]){
// d1=1;
// m1++;
//
// }
// if(m1>12){
// y1++;
// m1=1;
// }
//
// }while(y1!=y2&&m1!=m2&&d1!=d2);//do-while就不知道哪里有问题了
while(y1<y2||m1<m2||d1<d2)
{
d1++;
if(d1==month[m1][isLeap(y1)]+1)//我写的是if(d1>month[m1][isLeap(y1)])
{
d1=1;
m1++;
}
if(m1==13)//同上if(m1>12)
{
y1++;
m1=1;
}
cnt++;
}
printf("%d\n",cnt);
return 0;
}