求助高人(翻译语句):定义一个结构体变量(包括年月日)。输入你的生日,计算该日是本年中的第几天

2024-12-04 23:42:18
推荐回答(4个)
回答1:

#include
using namespace std;

//定义日期结构体,包括年、月、日
struct
{
int year; //年
int month; //月
int day; //日
}date; //声明实体日期date

int main()
{
int i,days; //设输入日期在该年中为第days天

//每年12个月的天数存放在数组里,2月初始为平年
int day_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};

cout<<"input year,month,day:";

//输入年月日
cin>>date.year>>date.month>>date.day;

//初始化days
days=0;

//从第1个月到输入月数的前一个月累加天数
for (i=1;i {
days+=day_tab[i];
}

//累加输入当月的天数
days+=date.day;

//判断闰年,如果是闰年,则多加一天
if ((date.year%4==0 && date.year%100!=0 || date.year%400==0) && date.month>=3)
{
days+=1;
}

//输出结果
cout< <<"th day in "<
return 0;
}

回答2:

void main()
{
struct date{
int year;
int month[12];
int day;
}_date={0,{31,28,31,30,31,30,31,31,30,31,30,31},0};//初始化日期结构
int mon,i,days=0;
scanf("%d%d%d",&_date.year,&mon,&_date.day);//输入年月日
if((!(_date.year%4)&&_date.year%100)||!(_date.year%400))//判断是否是闰年
_date.month[1]=29;//2月增加一天
for(i=0;i days+=_date.month[i];//累加整月的天数
days+=_date.day;//加当月日期
printf("%d\n",days);//输出结果
}
最好分开写:我是这样写的
#include
static const int daytable [2][13] = {
{0,31,28,31,30,31,30,31,31,30,31,30,31},//平年每月天数
{0,31,29,31,30,31,30,31,31,30,31,30,31}//闰年每月天数

};

struct Date
{
int year;
int month;
int day;
};
//判断闰年
int IsLeapYear(int year)
{
if(year%4==0&&year%100!=0||year%400 == 0)
return 1;
return 0;
}
//得到天数
int GetDays(Date& date)
{
int days = date.day;
int flag = IsLeapYear(date.year);//如果是闰年则是1,平年是0
for (int i = 0;i {
days += daytable[flag][i]; //根据数组下标,累加每月天数
}
return days;
}
int main ()
{
Date date;
printf("输入日期:");
scanf("%d %d %d",&date.year,&date.month,&date.day);
int days = GetDays(date);//得到天数
printf("得到天数=%d\n",days); //输出天数
return 0;
}

回答3:

void main()
{
struct date{ // 定义结构体
int year; // 年份
int month[12]; // 月份数组 保存每月所拥有的天数
int day; // 日期
}_date={0,{31,28,31,30,31,30,31,31,30,31,30,31},0}; // 初始化 月份数组含义:1月31天,2月28天,以此类推
int mon,i,days=0; // 初始化局部变量:月份、循环用变量、天数
scanf("%d%d%d",&_date.year,&mon,&_date.day); // 按“年 月 日”的格式从键盘读取3个整数并分别保存
if((!(_date.year%4)&&_date.year%100)||!(_date.year%400)) // 输入的年份是闰年?
_date.month[1]=29; // 2月为29天 [end if]
for(i=0;i days+=_date.month[i]; // 累计计算所输入月之前的总天数 [end for]
days+=_date.day; // 将所输入的天数累加至总天数
printf("%d\n",days); // 打印总天数
}

回答4:

好的