c语言 输入某年某月某日,判断这一天是这一年的第几天

#include<stdio.h>intmain(){intday,month,year,sum,leap;scanf("%d年%d月%d日",&year,&month,... #include<stdio.h>
int main()
{
int day,month,year,sum,leap;

scanf("%d年%d月%d日",&year,&month,&day);
switch(month)
{
case 1:sum=0;break;
case 2:sum=31;break;
case 3:sum=59;break;
case 4:sum=90;break;
case 5:sum=120;break;
case 6:sum=151;break;
case 7:sum=181;break;
case 8:sum=212;break;
case 9:sum=243;break;
case 10:sum=273;break;
case 11:sum=304;break;
case 12:sum=334;break;
default:printf("data error");break;

}

if(year%400==0||(year%4==0&&year%100!=0))
sum=sum+day;
else if(year%400==0&&month>2)
sum=sum+day+1;
printf("这是这一年的第%d天。",sum);
return 0;
}

为什么输出结果不对
展开
 我来答
听不清啊
高粉答主

2019-07-07 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.8亿
展开全部

#include<stdio.h>

int main()

{

int day,month,year,sum,leap;

scanf("%d年%d月%d日",&year,&month,&day);

switch(month)

{

case 1:sum=0;break;

case 2:sum=31;break;

case 3:sum=59;break;

case 4:sum=90;break;

case 5:sum=120;break;

case 6:sum=151;break;

case 7:sum=181;break;

case 8:sum=212;break;

case 9:sum=243;break;

case 10:sum=273;break;

case 11:sum=304;break;

case 12:sum=334;break;

default:printf("data error");break;

}

sum=sum+day;

if((year%400==0||(year%4==0&&year%100!=0))&&month>2)

sum++;

printf("这是这一年的第%d天。",sum);

return 0;

}

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
当归网
2007-06-07
知道答主
回答量:3
采纳率:0%
帮助的人:0
展开全部
#include<stdio.h>
void main()
{
int nian,yue,ri,leap,sum;
printf("\n 请输入年月日: \n");
scanf("%d%d%d",&nian,&yue,&ri);
switch(yue)
{
case 1:sum=0;
break;
case 2:sum=31;
break;
case 3:sum=59;
break;
case 4:sum=90;
break;
case 5:sum=120;
break;
case 6:sum=151;
break;
case 7:sum=181;
break;
case 8:sum=212;
break;
case 9:sum=243;
break;
case 10:sum=273;
break;
case 11:sum=304;
break;
case 12:sum=334;
break;
default:
printf("\n 数据错误 \n");
}
sum=sum+ri;
if((nian%400==0) || (nian%4==0 && nian%100!=0 )
leap=1;
else
leap=0;
if(leap==1 && nian>3)
sum++;
printf("\n 这一天是这一年的第 %d 天 \n",sum);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
MICHAELXIA23
2010-06-09 · TA获得超过345个赞
知道小有建树答主
回答量:191
采纳率:0%
帮助的人:149万
展开全部
哈哈,告诉你哦。
定义一个全局函数 int this_year(int,int,int);
定义一个全局数组 Mon[12]={31,28,31,30,31,30,31,31,30,31,30,31};
函数如下:

int this_year(int Year,int Month,int Day)//返回该日期是当年的第几天
{
int Sum=0;
for(int i=1;i<Month;i++)
{
if(i==2)
Sum+=Mon[1]+(Year%4==0&&Year%100!=0||Year%400==0);
else
Sum+=Mon[i-1];
}
return Sum+Day;
}

用这个函数就行了。。。不懂直接问我
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
QQ410128746
2007-06-07
知道答主
回答量:17
采纳率:0%
帮助的人:0
展开全部
main()
{
int n,year,month,day,month_day_sum=0,sum,
month_day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
printf("please input the \"year month day\"\n");
scanf("%d%d%d",&year,&month,&day);
if(year%100!=0&&year%4==0||year%400) month_day[2]=29;
if(day>31||day<1||month>12||month<1) printf("error");
else
{
for(n=1;n<month;n++) month_day_sum+=month_day[n];
sum=month_day_sum+day;
printf("%d",sum);
}
getch();
}
在WIN-TC调试通过
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友2a754b6
2007-06-07 · TA获得超过500个赞
知道小有建树答主
回答量:821
采纳率:0%
帮助的人:462万
展开全部
楼上的是正确的:
#include<stdio.h>
void main()
{
int nian,yue,ri,leap,sum;
printf("\n 请输入年月日: \n");
scanf("%d%d%d",&nian,&yue,&ri);
switch(yue)
{
case 1:sum=0;
break;
case 2:sum=31;
break;
case 3:sum=59;
break;
case 4:sum=90;
break;
case 5:sum=120;
break;
case 6:sum=151;
break;
case 7:sum=181;
break;
case 8:sum=212;
break;
case 9:sum=243;
break;
case 10:sum=273;
break;
case 11:sum=304;
break;
case 12:sum=334;
break;
default:
printf("\n 数据错误 \n");
}
sum=sum+ri;
if((nian%400==0) ||(nian%4==0 && nian%100!=0 ))//楼上的只是在这里丢了个括号//
leap=1;
else
leap=0;
if(leap==1 && nian>3)
sum++;
printf("\n 这一天是这一年的第 %d 天 \n",sum);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式