C语言输入年月日计算该日是该年第几天,

输入年月日计算该日是该年第几天,
#include <stdio.h>
#include <stdlib.h>
int main()
{
int isLeapYear(int year);
int sumupDays;
int year,month,day,a,i;
int b[12]={31,28,31,30,31,30,31,31,30,31,30,31};
scanf("%d",&year);
scanf("%d",&month);
scanf("%d",&day);
for (i=1;i<month;i++)
a=a+b[i];
sumupDays=isLeapYear(year)+day+a;
printf("%d",sumupDays);
}

int isLeapYear(int year)
{ int leap;
if(year%4!=0)
leap=1;
else if(year%100!=0)
leap=0;
else if(year%400!=0)
leap=1;
else leap=0;
return(leap);
}

求助哪里错了

//根据用户输入的日期计算出该日期是该年的第多少天。
#include
#include
//system("pause")
main()
{
int year,month,day,total,leap; //total总天数 ,leap用于闰年的2月天数
printf("请输入年 月 日(按顺序,中间用空格隔开):");
scanf("%d%d%d",&year,&month,&day);
if((year%4==0 && year%100!=0) || year%400==0) //判断是否闰年,闰年2月多一天,所以闰年leap为1,平年为leap为0。
{
leap=1;
}
else
{
leap=0;
}
switch(month) //根据月份计算对应的最终天数。
{
case 1: total=day;break;
case 2: total=31*1+day;break;
case 3: total=31*1+28+leap+day;break;
case 4: total=31*2+28+leap+day;break;
case 5: total=31*2+28+leap+30*1+day;break;
case 6: total=31*3+28+leap+30*1+day;break;
case 7: total=31*3+28+leap+30*2+day;break;
case 8: total=31*4+28+leap+30*2+day;break;
case 9: total=31*5+28+leap+30*2+day;break;
case 10: total=31*5+28+leap+30*3+day;break;
case 11: total=31*6+28+leap+30*3+day;break;
case 12: total=31*6+28+leap+30*4+day;break; //12月之前的11个月中有6个31天,4个30天,2月为28天+leap。
}
if(year>=1 && year=1 && month=1 && day<=31) //判断输入是否正解,年份最大为9999,可自行更改。
{
printf("\n\t%d月%d日止,%d年已过去%d天。\n\n",month,day,year,total);
system("pause"); //按任意键继续...
}
else
{
printf("\n\t错误\n\n");
system("pause"); //按任意键继续...
}
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-01-16
//根据用户输入的日期计算出该日期是该年的第多少天。 
#include <stdio.h>
#include <stdlib.h>  //system("pause")

main()
{
int year,month,day,total,leap;  //total总天数 ,leap用于闰年的2月天数 

printf("请输入年 月 日(按顺序,中间用空格隔开):");
scanf("%d%d%d",&year,&month,&day);

if((year%4==0 && year%100!=0) || year%400==0)  //判断是否闰年,闰年2月多一天,所以闰年leap为1,平年为leap为0。 
{
leap=1;
}
else
{
leap=0;
}

switch(month)  //根据月份计算对应的最终天数。
{
case 1: total=day;break;
case 2: total=31*1+day;break;
case 3: total=31*1+28+leap+day;break;
case 4: total=31*2+28+leap+day;break;
case 5: total=31*2+28+leap+30*1+day;break;
case 6: total=31*3+28+leap+30*1+day;break;
case 7: total=31*3+28+leap+30*2+day;break;
case 8: total=31*4+28+leap+30*2+day;break;
case 9: total=31*5+28+leap+30*2+day;break;
case 10: total=31*5+28+leap+30*3+day;break;
case 11: total=31*6+28+leap+30*3+day;break;
case 12: total=31*6+28+leap+30*4+day;break;  //12月之前的11个月中有6个31天,4个30天,2月为28天+leap。 
}

if(year>=1 && year<=9999 && month>=1 && month<=12 && day>=1 && day<=31)  //判断输入是否正解,年份最大为9999,可自行更改。 
{
printf("\n\t%d月%d日止,%d年已过去%d天。\n\n",month,day,year,total);
system("pause");  //按任意键继续...
}
else
{
printf("\n\t错误\n\n"); 
system("pause");  //按任意键继续...
}
return 0;
}

第2个回答  2013-12-09
你这里面有好几处问题:
1、for (i=1;i<month;i++),注意C语言的下标是从0开始,应该改为for (i=0;i<month-2;i++)
2、a=a+b[i];你这里的变量a没有初始化为0,应该int a=0;
3、sumupDays=isLeapYear(year)+day+a;如果是闰年的一月和二月,也没必要多加一天;应该先判断月份是否大于2;
4、判断闰年的函数int isLeapYear(int year)貌似也不对,应该是
int isLeapYear(int year)
{ int leap;
if ((year%4=0) && (year%100!=0)) //能被4整除而不能被100整除
leap=1;
else if(year%400=0) //能被400整除
leap=1;
else leap=0;
return(leap);
}
第3个回答  2013-12-09
#include <stdio.h>
#include <stdlib.h>
int main()
{
int isLeapYear(int year);
int sumupDays;
int year,month,day,a=0,i;//a值初始化为0
int b[12]={31,28,31,30,31,30,31,31,30,31,30,31};
scanf("%d",&year);
scanf("%d",&month);
scanf("%d",&day);
for (i=1;i<month;i++)
a=a+b[i-1];//
sumupDays=(month>2?isLeapYear(year):0)+day+a;//
printf("%d",sumupDays);
}

int isLeapYear(int year)
{   int leap;
if(year%400==0||(year%4==0&&year%100!=0))
leap=1;
else
leap=0;
    return(leap);
}

本回答被提问者采纳
第4个回答  2013-12-09
#include <stdio.h>
#include <stdlib.h>
int main()
{
int isLeapYear(int year);
int year,month,day,a=0,i,p;
int b[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int c[12]={31,29,31,20,31,30,31,31,30,31,30,31};
scanf("%d",&year);
scanf("%d",&month);
scanf("%d",&day);
p=isLeapYear(year);
if(month>1)
{
if(p==0)
for (i=0;i<month-1;i++)
a=a+b[i];
else
for(i=0;i<month-1;i++)
a=a+c[i];
}
a=a+day;
printf("%d",a);
}
int isLeapYear(int year){
int leap;
if((year%4==0&&year%100!=0)||(year%400==0))
leap=1;
else leap=0;
return(leap);
}
相似回答