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

 我来答
小小欧平儿
高粉答主

2019-05-12 · 说的都是干货,快来关注
知道答主
回答量:1039
采纳率:100%
帮助的人:17.2万
展开全部

1、首先打开vc6.0, 新建一个vc项目。

2、添加头文件和main函数

3、定义day、month、year、sum、leap 五个变量。

4、使用 scanf给定义的变量赋值。

5、使用switch语句,先计算某月以前的月份的总天数。

6、使用sum, 加上某天的天数。

7、判断是不是闰年。

8、如果是闰年且月份大于2, 总天数应该加一天。

9、使用printf打印sum。

10、运行程序。

小夏聊生活
高能答主

2019-11-23 · 专注于分享生活知识,热爱生活
小夏聊生活
采纳数:448 获赞数:114616

向TA提问 私信TA
展开全部

以2月10日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。

源代码:

#include "stdio.h"

#include "stdlib.h"

int main()
{
int day,month,year,sum,leap;

printf("\nplease input year,month,day\n");

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\n");break;
}
sum=sum+day; /*再加上某天的天数*/

if(year%400==0||(year%4==0&&year%100!=0)) /*判断是不是闰年*/
{
leap=1;
}
else
{
leap=0;
}

if(leap==1&&month>2) /*如果是闰年且月份大于2,总天数应该加一天*/
{
sum++;
}
printf("It is the %dth day.\n",sum);
return 0;
}

输出

please input year,month,day

2019,02,10

It is the 41th day.

扩展资料

c语言编写程序根据输入的时间分别输出问候语

#include <stdio.h>
int main()
{
int a;
printf("请输入时间,例如:17");

scanf("%d",&a);

if(a<=12&&a>=0) printf("早");

else if(a>12&&a<=14) printf("午");

else printf("晚");

printf("%d",s);

return 0;

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tattackor
2015-10-26 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:893万
展开全部

1、先定义每个月的天数,2月按28天算输入年月日后,根据年判断是否闰年(闰年加1天),再从1月加到当月的前一月,再加上日期就可以了


2、例程:

#include <stdio.h>
int month[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
main()
{
int yy,mm,dd, days;
int i;
printf("input year:"); scanf("%d", &yy);
printf("input month:"); scanf("%d", &mm);
printf("input day:"); scanf("%d", &dd);
/* 如果大于2月,要做闰年的判断,忘了,不一定准 */
if( mm > 2 && ((year%4==0 && year%100!=0) || year%400==0) ) days = 1;
else days = 0;
/* 加上前面各整月的天数 */
for(i = 0; i < mm-1; i++) days += month[i];
/* 加上日数 */
days += dd;
printf("This is the %d day of year %d!!\n", days, yy);
}
//输入:1999 2 1
//输出:This is the 32 day of year 1999!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
来自大龙山欢欢喜喜的鹅掌籐
2018-10-25
知道答主
回答量:58
采纳率:40%
帮助的人:10.4万
展开全部
首先要判断这一年是闰年还是平年,直接用年除以四没有余数就是闰年,在闰年里一共三百六十六天,除二月多一天其他都没什么变化,在平年里,二月一号就是这一年第三十二天,三月一号是第六十天,四月一号就是第九十一天,十月一号就是这一年第二百七十四天。就这样
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2019-07-31
展开全部
#include<stdio.h>
int main()
{
int day,month,year,sum=0,leap;
printf("输入年月日如2019 7 12\n");
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;
}
方法2
#include<stdio.h>
int day_of_year(int (*p)[13],int year,int month,int day)
{
int i,leap;
leap=(year%100!=0 && year%4 ==0||year%400 ==0);
for(i=1;i<month;i++)
day+=*(*(p+leap)+i);
return day;
}
main()
{
static int day_tab[][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
printf("%d\n",day_of_year(day_tab,a,b,c));
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(9)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式