跪求,C语言找错误.

来源:百度知道 编辑:UC知道 时间:2024/05/26 05:24:10
我写了个输入年月求那一月的月历的程序,发现写的求星期7的函数那出错了,但单独提出来又没有错误,我都快疯了,谁能帮我指出错误并修正一次(我不需要再帮我写一份)
原程序:
#include <stdio.h>
#include <conio.h>

int y_day(int a,int b)
{int t1=0,i;
int mth[12]={0,31,28,31,30,31,30,31,31,30,31,30};
if(a%4==0&&a%100!=0||a%400==0)
mth[2]=29;
for(i=1;i<=b;i++)
t1+=mth[i-1];
return t1;
}

int m_day(int x,int y)
{int t;
switch(x)
{case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:t=31;break;
case 4:
case 6:
case 9:
case 11:t=30;break;
case 2:
if(y%4==0&&y%100!=0||y%400==0)
t=29;
else
t=28;
}
return(t);
}

main()
{char space[]=" ",dayth[][4]={"Sun","Mon","Tue","Wed","Thu","Fri&quo

我观察并运行了你的代码,感觉没多大问题.可能你没有描述清你的具体问题.但是在你的生成日历的代码中的main函数中,定义int变量后的h和o去掉就没有错误,因为h和o变量多余.我也按照日历查看了.正确的.

然后看了你的y_day函数,这个函数我有看有些问题.看你的函数,意思是通过输入的年月来判断到这个月为止共有多少天对吧?
但是你的函数得不出正确答案.如果输入2007年5月,正确应该为151,而它只能输出1月到4月的天数和120,没有加上5月的天数.可能你要的就是120这个结果,但要得到151,要把t1+=mth[i-1]; 改为t1+=mth[i];

如果你说的错误指日历星期天的问题,我运行的结果是没问题的.

其他的就没有发现了,因为我最终运行结果为0错误0警告,输出的格式也整齐,对应日历没错.

不知道这个定义行不行啊?
dayth[][4]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};

rest_day0=year-1+(int)((year-1)/4)-(int)((year-1)/100)+(int)((year-1)/400)+y_day(year,month);
这个中的int型好像没必要吧!!如果产生了非int型号的,那你的结果应该是不对的了
其他的也没仔细看了,现在在外面,没办法调试,要不你给我邮箱my7091818@163.com发一份,我调试一下再看了.