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

#include<iostream>usingnamespacestd;structdate{intyear;intmonth;intday;};aintleapyear... #include<iostream>
using namespace std;
struct date
{
int year;
int month;
int day;
};a

int leapyear(int a.year);
int calculate(struct date a);

int leapyear(int a.year);//判断是否为闰年
{
if((a&4==0&&a&100!=0)||a&400==0)
return 1;
else
return 0;
}

int calculate(struct date a);//计算一年中的第几天
{
int sum=0;b[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int i;
for(i=0;i<a.mouth;i++)
sum=sum+b[i];
if(a.month>2)
sum=sum+a.day+leapyear(a);
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;
}
到底哪错了啊!
展开
 我来答
ZMHAIK0010
2016-09-16 · 超过22用户采纳过TA的回答
知道答主
回答量:42
采纳率:0%
帮助的人:18.1万
展开全部

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

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

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

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

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

#include<iostream>

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<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;

}

最后望采纳。

棟ddd
推荐于2018-05-14 · 超过25用户采纳过TA的回答
知道答主
回答量:50
采纳率:81%
帮助的人:15.3万
展开全部

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

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

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

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

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

#include<iostream>

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;

}

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式