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

如题所述

#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;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-05-05
//说明:你的程序存在几个语法错误,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;
}
第2个回答  2020-05-26
#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;
}
第3个回答  2014-05-04
请出门左转c语言吧(个人见解,可以先判断该年是否闰月,再计算第几天)
相似回答