我不明白这段代码有什么问题。它说“我的功能不允许使用不完整的类型。”
这就是我要做的事情:
编写一个名为
yrClac()
的函数,该函数具有一个整数参数,表示自世纪之交以来的总天数(1.1.2000)以及名为年,月和日的参考参数。该函数用于计算传递给它的给定天数的当前年,月和日。使用引用,该函数应直接更改调用函数中的相应实际参数。对于这个问题,假设一年总是有365天,而每个月恰好有30天。
#include <iostream>
using namespace std;
void yrClac(int total, int &a, int &b, int &c); // says incomplete type
// is not allowed
int main()
{
int totaldays;
cin >> totaldays;
int year = 2000, month = 1, day = 1;
void yrClac(totaldays, year, month, day);
cout << year << month << day;
system ("PAUSE");
return 0;
}
void yrClac(int total, int &a, int &b, int &c)
{
a = 365 / total;
b = total - a * 12;
c = total - b * 30;
}
答案 0 :(得分:3)
调用函数时,不应该放置void
(也就是返回类型)。在void yrClac(totaldays, year, month, day);
中删除它,它应该可以。
答案 1 :(得分:3)
void yrClac(totaldays, year, month, day);
声明一个函数,将totaldays
,year
,month
,day
类型的对象作为参数。 (这些类型都没有被声明,这解释了抱怨“不完整类型”的编译错误消息)。
您想要调用yrCalc
,而不是重载它,因此请使用yrClac(totaldays, year, month, day)
(即删除void
)。
答案 2 :(得分:2)
您的代码存在明显问题。
在main()
内你有这个声明
void yrClac(totaldays,year,month,day);
删除void
另一个潜在问题是您365/total
由于截断(如果总数大于365),这很可能会导致0
最好使用double
total
或输入。
答案 3 :(得分:1)
int year=2000, month=1, day=1;
void yrClac(totaldays, year, month, day);
cout << year << month << day;
删除“void”将正常工作。调用方法不需要告诉它应返回哪种类型。