一、累加天数
题目描述
设计一个程序能计算一个日期加上若干天后是什么日期。
#include<iostream>
using namespace std;
int main()
{
int n;
while (cin >> n)
{
for (int i = 0; i < n; i++)
{
int y, m, d, num;
int days[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
cin >> y >> m >> d >> num;
while (num > days[m - 1])
{
if (y % 400 == 0 || (y % 4 == 0 && y % 100 != 0))
days[1] = 29;
else
days[1] = 28;
num -= days[m - 1] - d;
d = 0;
m++;
if (m == 13)
{
y++;
m = 1;
}
}
printf("%4d-%02d-%02d\n", y, m, num);
}
}
return 0;
}
二、打印日期
给出年分m和一年中的第n天,算出第n天是几月几号。
#include <iostream>
using namespace std;
int main()
{
int year;
int day;
int mon[13] = { 31, 28, 31, 30, 31, 30, 31, 31, 30 ,31, 30, 31 };
while (cin >> year >> day)
{
if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
mon[1] = 29;
else
mon[1] = 28;
for (int i = 0; i < 12; i++)
{
if (day <= mon[i])
{
printf("%04d-%02d-%02d\n", year, i + 1, day);
break;
}
else
{
day = day - mon[i];
}
}
}
return 0;
}
三、利用构造函数进行循环
求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)
class Solution {
public:
class sum{
public:
sum()
{
_sum += _num;
_num++;
}
};
int Sum_Solution(int n) {
_sum = 0;
_num = 1;
sum s[n];
return _sum;
}
static int _sum;
static int _num;
};
int Solution::_sum = 0;
int Solution::_num = 1;