#include<stdio.h>
int runnian(int n){
if(n%4==0&&n%100!=0||n%400==0)
return 1;
else return 0;
}
int nian(int xa,int xb){
int t,s;
for(t=xa;t<xb;t++){
if(runnian(t)==1) s=s+366;
if(runnian(t)==0) s=s+365;
}
return s;
}
int yue(int n){
int y;
if(n==1||n==3||n==5||n==7||n==8||n==10||n==12)
y=31;
if(n=2)
{
if(runnian(n)==1) y=29;
if(runnian(n)==0) y=28;
}
else y=30;
return y;
}
main(){
int xa,xb,ya,yb,za,zb,p,q,m,s;
scanf("%d %d %d,%d %d %d",xa,ya,za,xb,yb,zb);
p=nian(xa,xb);
q=-yue(ya)+yue(yb);
m=-za+zb;
s=p+q+m;
printf("%d",s);
}
输入的时候少了地址符:
scanf("%d %d %d,%d %d %d",xa,ya,za,xb,yb,zb);
请改为
scanf("%d %d %d,%d %d %d",&xa,&ya,&za,&xb,&yb,&zb);
还有
int t,s=0;这里s要初始化:
#include<stdio.h>int runnian(int n){
if(n%4==0&&n%100!=0||n%400==0)
return 1;
else return 0;
}
int nian(int xa,int xb){
int t,s=0;
for(t=xa;t<xb;t++){
if(runnian(t)==1) s=s+366;
if(runnian(t)==0) s=s+365;
}
return s;
}
int yue(int n){
int y;
if(n==1||n==3||n==5||n==7||n==8||n==10||n==12)
y=31;
if(n=2)
{
if(runnian(n)==1) y=29;
if(runnian(n)==0) y=28;
}
else y=30;
return y;
}
main(){
int xa,xb,ya,yb,za,zb,p,q,m,s;
scanf("%d %d %d,%d %d %d",&xa,&ya,&za,&xb,&yb,&zb);
p=nian(xa,xb);
q=-yue(ya)+yue(yb);
m=-za+zb;
s=p+q+m;
printf("%d",s);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答 2013-10-22
稍微看了一下你的程序,思路还可以,但是你的思路繁琐
感觉你是计算输入的两个年月日之间的天数
给你一个好一点的思路
就是计算三个数
一个是前边年剩下的天数,一个是中间年的天数,一个是后边日期的天数
先用一个数组,存储每个月的天数
int mo[12]={31,28,31,30,31,30,31,31,30,31,30,31}
用一个if判断闰年来改变mo[1]也就是2月份的天数,随时用到随时改变
用三个子函数来计算这三个数
这几个都用for循环来计算,第一个和第三个用到月份的天数,用上面的数组来for
中间的你可以用你的也可以这样,
先365*(xb-xa-1)
在for一下,判断闰年加一天
最后在main中
有几种情况,一个是年月相同,那么只计算天
年相同,那么只计算两个,中间年不用管
最后是年不同,那么三个加起来
感觉你是计算输入的两个年月日之间的天数
给你一个好一点的思路
就是计算三个数
一个是前边年剩下的天数,一个是中间年的天数,一个是后边日期的天数
先用一个数组,存储每个月的天数
int mo[12]={31,28,31,30,31,30,31,31,30,31,30,31}
用一个if判断闰年来改变mo[1]也就是2月份的天数,随时用到随时改变
用三个子函数来计算这三个数
这几个都用for循环来计算,第一个和第三个用到月份的天数,用上面的数组来for
中间的你可以用你的也可以这样,
先365*(xb-xa-1)
在for一下,判断闰年加一天
最后在main中
有几种情况,一个是年月相同,那么只计算天
年相同,那么只计算两个,中间年不用管
最后是年不同,那么三个加起来
第2个回答 2013-10-22
scanf("%d %d %d,%d %d %d",xa,ya,za,xb,yb,zb);
改为scanf("%d %d %d,%d %d %d",&xa,&ya,&za,&xb,&yb,&zb);//这里少了&
没有验证别的地方对不对,程序不能正常运行应该是这个问题
改为scanf("%d %d %d,%d %d %d",&xa,&ya,&za,&xb,&yb,&zb);//这里少了&
没有验证别的地方对不对,程序不能正常运行应该是这个问题
第3个回答 2013-10-22
scanf("%d",&xa);收了取地址&,scanf怎么会有用呢