问题描述】将每月天数存放在顺序表,计算某天到2021-10-10的间隔天数
【输入形式】输入三个数,以空格为分隔
【输出形式】一个整数
【样例输入】1997 2 18
【样例输出】9000
【样例说明】
【评分标准】
#include<iostream>
using namespace std;
typedef struct node
{
int *day;
int length;
}list;
int main()
{
list A; //设置一个list类型的变量
A.day = new int[12]; //结构体数组(结构体内部一个变量为数组)创建空间:int day[12] 的空间
A.day[0]=31;
A.day[1]=28;
A.day[2]=31;
A.day[3]=30;
A.day[4]=31;
A.day[5]=30;
A.day[6]=31;
A.day[7]=31;
A.day[8]=30;
A.day[9]=31;
A.day[10]=30;
A.day[11]=31;
A.length = 12;
int y, m, d;
int sum = 0;
cin >> y >> m >> d;
if (y == 2021) //首先判断在年份相同时
{ //(当前月剩余天数+10月份的10天)
sum = 10 + (A.day[m - 1] - d);
m++; //m++进入下个月份
for (; m < 10; m++)
{
sum = sum + A.day[m - 1]; //再加上当前月和十月间隔月份所包含天
}
}
else //当年份在2021之前时 (不要漏了闰年+1)
{
sum = (A.day[m - 1] - d)+10; //计算当前月份剩余天数 和 10月份包含天数x10
m++; //进入下一个月
for (; m <= 12; m++) //计算剩余月份所包含的天数
{
sum = sum + A.day[m - 1];
}
for (m=1; m < 10; m++) //从1月份开始 计算2021年月份所包含天数
{
sum = sum + A.day[m - 1];
}
y++; //进入下一个年份
for (;y < 2021; y++)
{
for (m = 1; m <= 12; m++) //计算当年与21年间隔天数
{
sum = sum + A.day[m - 1];
}
if (y % 4 == 0)
sum++; //不要漏了润年
}
cout <<sum;
}
return 0;
}
Tips:结构体中所包含的数组 及其 空间开创
struct list{
int *day; //int day[12]数组 day为其地址名
};
list A;
A.day=new int[12] //开创空间:int类型[12]