(1)定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天?

(1)定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天?写一个函数days实现该问题,然后由主函数将年、月、日传递给days函数,计算后将日子数传回主函数输... (1)定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天?写一个函数days实现该问题,然后由主函数将年、月、日传递给days函数,计算后将日子数传回主函数输出。 展开
 我来答
千里草头
2010-05-25 · TA获得超过115个赞
知道答主
回答量:38
采纳率:0%
帮助的人:0
展开全部
#include <stdio.h>

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

int days(date d)
{
int num = 0;
int m, da, i;
if ((d.year %4 == 0 && d.year %100!=0)||(d.year % 400 == 0))
{
for (m = 1; m <= d.month ; m++)
{
if (m == 2)
da = 29;
else if (m==4||m==6||m==8||m==11)
da = 30;
else
da = 31;
for (i = 1; i <= da;i++)
{
num++;
if ( m == d.month && i == d.day )
return num;
}
}

}
else
{
for (m = 1; m <= d.month ; m++)
{
if (m == 2)
da = 28;
else if (m==4||m==6||m==8||m==11)
da = 30;
else
da = 31;
for (i = 1; i <= da;i++)
{
num++;
if ( m == d.month && i == d.day )
return num;
}
}
}

}

int main()
{
date d;
scanf("%d%d%d",&d.year,&d.month,&d.day);
printf("%d年%d月%d日 is the %d days of this year",d.year,d.month,d.day,days(d));
return 0;
}
//示例:输入2010 2 5
//输出为:2010年2月5日 is the 36 days of this year
//
xgfone
2010-05-25 · TA获得超过300个赞
知道小有建树答主
回答量:239
采纳率:50%
帮助的人:264万
展开全部
#include<iostream>
using namespace std;
struct Date
{
int year;
int month;
int day;
};
bool run(int);
int days(Date &);

int main()
{
cout<<"请输入你要计算的日期:\n";
Date date;
cout<<"年:";
cin>>date.year;
cout<<"月:";
cin>>date.month;
cout<<"日:";
cin>>date.day;
cout<<date.year<<"年"<<date.month<<"月"<<date.day<<"日是这一年的第"
<<days(date)<<"天\n";
system("pause");
return 0;
}
bool run(int ra)
{
if(ra%4==0&&ra%100!=0||ra%400==0)
return 1;
else
return 0;
}
int days(Date & date)
{
int yue[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int x,sum=0;
for(x=1;x<date.month;x++)
sum=sum+yue[x];
if(run(date.year)&&date.month>=3)
sum++;
return sum+date.day;
}

参考资料: C++

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhaoweiwen1992
2012-05-27
知道答主
回答量:3
采纳率:0%
帮助的人:4734
展开全部
#include <stdio.h>

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

int leap_year(int a);
int cal_day(struct date a);

/*判断闰年*/
int leap_year(int a)
{
if(a%400==0||(a%4==0&&a%100!=0))
return 1;
else
return 0;

// if(a%400==0)
// return 1;
// else if(a%100==0)
// return 0;
// else if(a%4==0)
// return 1;
// else
// return 0;
}

/*计算一年中的第几天*/
int cal_day(struct date a)
{
int sum=0,b[]={31,28,31,30,31,30,31,31,30,31,30,31} ;
for(int i=0;i<a.month-1;i++)
sum+=b[i];
if(a.month>2)
sum=sum+a.day+leap_year(a.year);
else
sum=sum+a.day;
return sum;
}

void main()
{
struct date a;
int n;
printf("\n请输入日期(年 月 日)\n");
scanf("%d%d%d",&a.year,&a.month,&a.day);
n=cal_day(a);
printf("该日在本年中是第%d天\n",n);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式