#include<iostream>
#include"stdio.h"
using namespace std;
struct MyDate //定義一個結構體,存盤日期
{
int m_year; //年份
int m_month; //月份
int m_day; //日
};
MyDate computePrevDate(MyDate date) //計算上一天的日期
{
MyDate prev = new MyDate(); //將今天的日期賦值給昨天的日期
prev.m_year=date.m_year;
prev.m_month=date.m_month;
prev.m_day=date.m_day;
int lastday=28; //某個月的月末日期
if((date.m_month%2==1&&date.m_month<8)||(date.m_month%2==0&&date.m_month>=8))
lastday=31;
if(date.m_month==4||date.m_month==6||date.m_month==9||date.m_month==11)
lastday=30;
else{ //2月
if((date.m_year%4==0&&date.m_year%100!=0)||date.m_year%400==0) //是閏年
lastday=29;
else //不是閏年
lastday=28;
}
//如果日期是本月第一天,則上一天是上個月最后一天,否則就是普通日期
if(date.m_day==1) //月初的日期
{
prev.m_day=lastday;
if(date.m_month==1) //年初的日期
{
prev.m_month=12;
prev.m_year--;
}
else
{//月初的日期
prev.m_month--;
}
}
else //普通日期
{
prev.m_day--;
}
return prev;
}
void main{
}
uj5u.com熱心網友回復:
你這個代碼有BUG,代碼邏輯自己去改。首先 computePrevDate 函式中MyDate prev = new MyDate();
這是錯誤的,改成 MyDate prev; 即可。
至于main函式中呼叫,可以這樣:
void main()
{
MyDate d = { 2016, 1, 1 };
MyDate pd = computePrevDate(d);
printf("Prev Date: %d-%d-%d", pd.m_year, pd.m_month, pd.m_day);
getchar();
}
再補充一下,你的代碼中演算法有問題,所以結果會有誤,自己去改吧。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/80108.html
標籤:基礎類
上一篇:堆疊的基本操作,為什么會是亂數
