所以我有一个程序,我正在检查如果年份是闰年,然后取决于如果它是一个飞跃或不,我会给(1-366) ..我得到了下面的代码我工作到目前为止,当我输入一个非闰年,我得到一个正常的答案,但是当我输入一个闰年,我得到displayDate(日)运行两次,打印两次,复制粘贴我的代码,并尝试为自己,告诉我什么是错的,请..还有我是新的C所以慢慢来,如果它是很简单的东西,请C程序打印两次
int main()
{
int day ,month , year, LeapOrNot, date ;
printf("PLease enter a date in the following format Month/day/year: ");
scanf("%d/%d/%d" , &month , &day , &year);
LeapOrNot = isLeap(year);
switch (LeapOrNot)
{
case 1 :
switch (month)
{
case 1:
date = day;
break;
case 2:
date = 31 + day;
break;
case 3 :
date = 60 + day;
break;
case 4 :
date = 91 + day;
break;
case 5 :
date = 121 + day;
break;
case 6:
date = 152 + day;
break;
case 7:
date = 182 + day;
break;
case 8 :
date = 213 + day;
break;
case 9 :
date = 244 + day;
break;
case 10:
date = 274 + day;
break;
case 11 :
date = 305 + day;
break;
case 12 :
date = 335 + day;
break;
}
displayDate(date);
case 0 :
switch (month)
{
case 1:
date = day;
break;
case 2:
date = 31 + day;
break;
case 3 :
date = 59 + day;
break;
case 4 :
date = 90 + day;
break;
case 5 :
date = 120 + day;
break;
case 6:
date = 151 + day;
break;
case 7:
date = 181 + day;
break;
case 8 :
date = 212 + day;
break;
case 9 :
date = 243 + day;
break;
case 10:
date = 273 + day;
break;
case 11 :
date = 304 + day;
break;
case 12 :
date = 334 + day;
break;
}
displayDate(date);
}
}
int isLeap(int year)
{
int LeapOrNot;
if ((year % 4 == 0 && year % 100 != 0) || year % 400 ==0)
LeapOrNot = 1 ;
else
LeapOrNot = 0 ;
return LeapOrNot;
}
int displayDate(int date)
{
printf("the day for that year is %d", date);
}
尝试逐行调试程序中的代码。该计划足够小,这是可行的。一旦你这样做,你会发现问题在哪里。 –
一个很好的习惯(因为你是初学者)会增加一个'default'语句。 – TheDarkKnight
可以在'main()'后面实现'isLeap()'和'displayDate()'。为了更好的代码,你应该在'main()'之前插入前两个的原型。 (原型是“函数声明”,即函数的头部用';;而不是主体)。我在开始时也缺少'#include'。 –
Scheff