C/C++學習:某日期到今天總天數
阿新 • • 發佈:2018-12-30
問題
兩週實訓,擴充套件題:某日期到今天總天數
問題描述: 根據鍵入的某日期計算到今天為止的總天數。
解題
完整程式碼:
/*
Module Name:某日期到今天總天數
Module Date:20141223
Module Auth:CLyoko
Description:根據鍵入的某日期計算到今天為止的總天數。
Other:
Revision History:
Date Rel Ver. Notes
20141223 1.0 建立程式
*/
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
struct date
{
int year;
int month;
int day;
}data;
int main(int argc, char *argv[])
{
int m[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int total_day = 0, i, j;
int toyear,tomonth,today;
printf(" 某日期到今天總天數\n");
printf("請輸入日期(例19951006):" );
scanf("%4d%2d%2d",&data.year, &data.month, &data.day);
//獲取操作當天的日期
struct tm *tm;
time_t t;//Long
t=time(NULL);
tm=localtime(&t);
toyear=tm->tm_year+1900;
today=tm->tm_mday;
tomonth=tm->tm_mon+1;
//過去完整年的處理
//除今年之外的年份天數加和
for(j = toyear-1 ;j>data.year;j--)
{
//把12個月的天數加和
for(i = 1;i <= 12;i++)
{
total_day += m[i];
}
//這些年份若為閏年則總天數+1
if( (j % 4 == 0 && j % 100 != 0) || (j % 400 == 0) )
{
total_day += 1;
}
}
//起始年的不完整月份天數加和
//輸入年天數加和
for(i=12;i>data.month;i--)
{
total_day += m[i];
}
total_day+=m[data.month]-data.day+1;
//當年天數加和
//除當年當月的天數加和
for(i = tomonth;i >= 1;i--)
{
total_day += m[i-1];
}
//今月天數加和
total_day+=today;
//今年若為閏年則總天數+1
if( (toyear % 4 == 0 && toyear % 100 != 0) || (toyear % 400 == 0) )
{
if(tomonth > 2)
{
total_day += 1;
}
}
printf("該日期到今天的總天數為:%d\n\n",total_day);
system("pause");
return 0;
}