c语言给出年月日计算该日是该年的第几天

哪里错了
#include<stdio.h>
int x,y,z;
int find(x,y,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);
}

//说明:你的程序存在几个语法错误,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<stdio.h>
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 <stdio.h>
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;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-03
#include<stdio.h>

int find(int x,int y,int z) {//定义的时候必须在参数列表里注明参数的类型 运行没问题了
int i,t,s,d=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;
d=d+30+i%2-s;
}
d=d+z;
return(d);
}
int main()
{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);
return 0;
}
第2个回答  2012-06-03
我把你修改了一下,Visual C++ 6.0可能通过:
#include<cstdio>

int x,y,z;

int 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 argc, char* argv[])
{
int find(int x,int y,int 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);
}
相似回答