C++ 定义一个结构体变量,计算该日是一年中的第几天

2025-04-08 10:09:16
推荐回答(2个)
回答1:

我编译了一下你的程序,结果是:

先解决这几个问题,最后两个的问题是你在函数体没有写的时候就加了:“;”;

还有求闰年的函数头也出了点小问题。

我完善了一下程序,不过算法你需要自己改:

比如我输入:2016 1 1时结果就不对。

#include

using namespace std;

struct date

{

int year;

int month;

int day;

} a; 

/*结构体定方式:

struct 结构体名称{

参数 

} 结构体别名; 

*/

int leapyear(int year);

int calculate(date a);//函数定义:返回值类型 函数名(参数类型 参数名){函数体} 

//你只需要的参数类型的名为date的结构体。 


int leapyear(int year)//判断是否为闰年

{

if((year%4 == 0 && year%100 != 0)||year % 400==0)

return 1;

    else

        return 0;

}


int calculate(date a)//计算一年中的第几天

{

int sum=0;//这里不能再用前面的int了 

int b[12]={31,28,31,30,31,30,31,31,30,31,30,31};

int i;

for(i=0;i

sum=sum+b[i];

if(a.month>2)

sum=sum+a.day+leapyear(a.year);

else

sum=sum+a.day;

return sum;

}


int main()

{

struct date a;

cout<<"请输入年月日"<

cin>>a.year>>a.month>>a.day;

int x;

x=calculate(a);

cout<<"该日是一年中的第"<

return 0;

}

最后望采纳。

回答2:

改过可以运行,但你的问题太多:

  1. 结构体变量、数组变量声明格式错:变量声明要有;结束,同时,结束后要再声明时要加类型。

  2. 函数形参为:类型+变量,你所用的方式是错的。

  3. 函数声明后接着定义时,不能加;。

  4. 自己要学会看错误提示。

#include

using namespace std;

struct date

{

int year;

int month;

int day;

}; 

date a;

int leapyear(int x);

int calculate(struct x);

int leapyear(int x)//判断是否为闰年

{

if (((x & 4 == 0) && (x & 100 != 0) )||( x & 400 == 0))

return 1;

else

return 0;

}

int calculate(date a)//计算一年中的第几天

{

int sum = 0; 

int b[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };

int i;

for (i = 0; i < a.month; i++)

sum = sum + b[i];

if (a.month > 2)

sum = sum + a.day + leapyear(a.year);

else

sum = sum + a.day;

return sum;

}

int main()

{

struct date a;

cout << "请输入年月日" << endl;

cin >> a.year >> a.month >> a.day;

int x;

x = calculate(a);

cout << "该日是一年中的第" << x << "天" << endl;

return 0;

}