用C语言写一个函数,给出年月日,计算该日是该年的第几天

 我来答
地球小使
2014-11-28
知道答主
回答量:1
采纳率:0%
帮助的人:1285
展开全部
#include <stdio.h>

int main()
{
int year,month,day;//年月日
int judge,i;
int sum=0;//标记天数
int date[2][12]={
{31,28,31,30,31,30,31,31,30,31,30,31},
{31,29,31,30,31,30,31,31,30,31,30,31}};//储存闰年和非闰年每一月的天数
printf("输入年月日:");
scanf("%d %d %d",&year,&month,&day);

judge=(year%4==0)||(year%400==0 && year%100!=0);
//判断年份是不是闰年 是闰年judge就是1;否则就是0

for(i=0;i<month-1;i++)//加month之前的所有天数
sum+=date[judge][i];
sum+=day;//加当天月份的天数day

printf("它是%d年中的第%d天\n",year,sum);
return 0;
}
ghalan
2014-05-05 · TA获得超过109个赞
知道答主
回答量:38
采纳率:0%
帮助的人:41.4万
展开全部
//说明:你的程序存在几个语法错误,1、find(x,y,z)应改成find(int x,int y,int z)函数的定义语法;2、//int find(x,y,z);此处声明多余了,因为函数是在前面定义的,就无需再声明了,而且声明语法不对,应为find(int x,int y,int z);要加分号。3、格式控制符号用错了,应该是没有“,”的scanf("%d%d%d",&year,&month,&date);即在%d%d之间没有逗号;//另外我也编了一个仅供参考,编译成功的,在后面。
//此为我对你的代码的改正,都做了注释说明。
#include
int x,y,z;
int find(int x,int y,int z)//find(x,y,z)应改成find(int x,int y,int z)
{int i,t,s,days=0;
if(x%4==0)t=1;
else t=0;
for(i=1;i<y;i++)
{if(i==2)s=2-t;
else s=0;
days=days+30+i%2-s;
}
days=days+z;
return(days);
}

void main()
{//int find(x,y,z);此处声明多余了,因为函数是在前面定义的,就无需再声明了
int year,month,date,day;
scanf("%d%d%d",&year,&month,&date);//格式控制符号用错了,应该是没有“,”的
day=find(year,month,date);
printf("THE DATE IS THE %dth DAYS\n",day);
}
//另外我也编了一个仅供参考,编译成功的
#include
void main()
{
int year,month,day,sum;
scanf("%d%d%d",&year,&month,&day);
int p(int year);
int monday(int m);
int find(int y,int m,int d);
sum=find(year,month,day);
printf("THE DATE IS THE %dth DAYS\n",sum);
}

int p(int year){//判断是否为闰年
int leap;
if((year%4==0&&year%100!=0)||(year%400==0)) leap=1;
else leap=0;
return leap;
}
int mon_day(int y,int m){//判断月份的日子总数
int num;
switch (m)
{ case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:num=31;break;
case 4:
case 6:
case 9:
case 11:num=30;break;
case 2:{if (y&&(m=2)) num=29;
else num=28;
}break;
}
return num;
}

int find(int y,int m,int d){//计算日子,用遍历的方法,因为每个月份的天数是不同的,闰年时2月天数也不同
int sum=d;
while (m>1){
m=m-1;
sum=sum+mon_day(y,m);}
return sum;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
流浪的狼NO1
2020-05-26
知道答主
回答量:3
采纳率:0%
帮助的人:1707
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int date(int year,int month,int day)
{
int i,sum=day;
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
for(i=0;i<month;i++)
sum=sum+a[i];
if(month>2&&((year%4==0&&year%100!=0)||year%400==0))
sum=sum+1;
return(sum);
}
int main()
{
int year,month,day,n;
scanf("%d %d %d",&year,&month,&day);
n=date(year,month,day);
printf("%d",n);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-05-04
展开全部
请出门左转c语言吧(个人见解,可以先判断该年是否闰月,再计算第几天)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式