急!程序C语言,无语法错误,但是运行不了。应该是有重大错误!

#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中
有几种情况,一个是年月相同,那么只计算天
年相同,那么只计算两个,中间年不用管
最后是年不同,那么三个加起来
第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);//这里少了&
没有验证别的地方对不对,程序不能正常运行应该是这个问题
第3个回答  2013-10-22
scanf("%d",&xa);收了取地址&,scanf怎么会有用呢

相关了解……

你可能感兴趣的内容

大家正在搜

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