请教一个C++的问题,请看我这个代码错在哪里?

来源:百度知道 编辑:UC知道 时间:2024/09/18 06:32:03
用一个结构来表示含有年,月,日的日期,写程序输入一个日期,计算并输出该日期是本年中的第几天。
把上面这个问题,改一下.将由日期计算第几天定义成函数。函数的参数是日期结构的各个成员,函数的返回值是计算的结果。

#include <stdio.h>

struct date
{
int year;
int month;
int day;
}a;

int find(date a)
{
int i,t,s,days=0;
if(a.year%4==0)
{
t=1;
}
else
{
t=0;
}
for(i=1;i<a.month;i++)
{
if(i==2)
{
s=2-t;
}
else
{
s=0;
}
days=days+30+i%2-s;
}
days=days+a.day;
return(days);
}
void main()
{
int dayss;
scanf("%d %d %d",&a.year,&a.month,&a.day);
dayss=find(a.year,a.month,a.day);
printf("该日期是今年第%d天\n",dayss);
}

最后这里报错了.但是我不知道括号里实参应该写什么...
F:\C++编程\结构体\简单3\main.cpp(42) : error C2660: 'find' : function does not take 3 parameters

实参传递错误了,实参传递时应与函数定义的参数相一致!
#include <stdio.h>

struct date
{
int year;
int month;
int day;
}a;

int find(date a)
{
int i,t,s,days=0;
if(a.year%4==0)
{
t=1;
}
else
{
t=0;
}
for(i=1;i<a.month;i++)
{
if(i==2)
{
s=2-t;
}
else
{
s=0;
}
days=days+30+i%2-s;
}
days=days+a.day;
return(days);
}
void main()
{
int dayss;
scanf("%d %d %d",&a.year,&a.month,&a.day);
dayss=find(a);//传递结构体对象a
printf("该日期是今年第%d天\n",dayss);
}

find的参数是date结构的变量,你把a直接传进去就行,其它的没仔细看

你定义的find()函数里只有一个形参,而你却传给了它三个参数