用c语言编写一个计算两个日期之间相差天数的小程序。语法尽量简单,... 用c语言编写计算两个日期之间相差的天数,并用万年历的形式输出...
\u8fd9\u662f\u6211\u5199\u7684c\u8bed\u8a00\u8ba1\u7b97\u4e24\u4e2a\u65e5\u671f\u4e4b\u95f4\u7684\u5929\u6570\u7684\u7a0b\u5e8f\uff0c\u6c42\u6307\u6559\u600e\u4e48\u9519\u7684\uff1f\u3000\u3000\u62b1\u6b49\uff0c\u4f60\u7684\u4ee3\u7801\u98ce\u683c\u5b9e\u5728\u662f\u8ba9\u6211\u770b\u4e0d\u4e0b\u53bb\u3002\u8fd9\u6837\u7684\u4ee3\u7801\u4f30\u8ba1\u8fc7\u51e0\u5929\u4f60\u81ea\u5df1\u90fd\u770b\u4e0d\u61c2\u4e86\u3002\u51fd\u6570\u547d\u540d\u548c\u53d8\u91cf\u547d\u540d\u4e00\u5b9a\u8981\u6709\u610f\u4e49\uff0c\u867d\u7136\u4e0d\u4e00\u5b9a\u7b80\u6d01\uff0c\u4f46\u53ef\u8bfb\u6027\u4e00\u5b9a\u8981\u597d\uff0c\u8fd9\u6837\u5c31\u7b97\u9519\u4e86\u8c03\u8bd5\u4e5f\u65b9\u4fbf\u3002\u6211\u81ea\u5df1\u5199\u4e86\u4e00\u4e2a\u7c7b\u4f3c\u7684\u7a0b\u5e8f\uff0c\u4f60\u770b\u770b\u662f\u4e0d\u662f\u4f60\u60f3\u8981\u7684\u3002\u4e0a\u4ee3\u7801(\u8fd9\u7f51\u9875\u4e0a\u7684\u6392\u7248\u4e0d\u4f1a\u641e\uff0c\u4f60\u590d\u5236\u5230\u81ea\u5df1\u7684\u7f16\u8bd1\u73af\u5883\u91cd\u65b0\u6392\u7248\u4e0b\u5427)\uff1a
#include "stdafx.h" //\u8fd9\u91cc\u9762\u5565\u4e5f\u6ca1\u6709\uff0c\u5c31\u4f5c\u4e3a\u4e00\u4e2a\u9884\u7f16\u8bd1\u5934#include #include #include bool IsLeapYear(UINT uYear){ return (0 == uYear % 4 && 0 != uYear % 100) || (0 == uYear % 400);}UINT GetTotalDayOfMonth(UINT uYear, UINT uMonth){ if (uMonth > 12 || uMonth 0 && uDay = 2 && IsLeapYear(uYear)) { ++uResult; } while (uMonth uEndYear) { lResult *= -1; } lResult += (GetDaysOfYear(uBigYear, uBeginMonth, uBeginDay) - GetDaysOfYear(uBigYear, uEndMonth, uEndDay)); printf("\u76f8\u5dee\u5929\u6570\u4e3a\uff1a%d", lResult); system("pause"); return 0;}\u3000\u3000
\u4f60\u597d\uff01\u4e24\u4e2a\u65e5\u671f\u90fd\u662f\u8f93\u5165\u540e\u8ba1\u7b97\u5417
//May 05 2015 By 12052010 测试通过,望采纳
#include<stdio.h>
//判断闰年,如果是闰年返回1,否则返回0
int isYear(int year){
return (year%4==0)&&( year %400==0 || year %100!= 0) ? 1:0;
}
//返回该年 year 该月 month 的最大天数
int getDayOfMonth(int year , int month) {
int dayArr[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
return (month == 2 && isYear(year)==1) ? dayArr[month]+1 : dayArr[month] ;
}
//获取两个日期之间的天数,第一个日期必须比第二个日期小 :)
int getTotalDay(int year1,int month1,int day1,int year2,int month2,int day2){
long total = 0;
for(int year = year1; year < year2 ; year ++ ){
total = total + 365;
if(isYear(year)==1)
total ++;
}
for(int month =1; month < month2; month ++ ){
total = total + getDayOfMonth(year2,month);
}
total = total + day2;
for(int month=1 ; month < month1; month ++ ){
total = total - getDayOfMonth(year1,month);
}
return total - day1;
}
int main(){
int year1 ,month1,day1;
int year2, month2,day2;
do{//控制日期输进合法,同时year1应该小于year2
printf("
Input year1-month1-day1
(such as 2012-12-12) : ");
scanf("%d-%d-%d", &year1,&month1,&day1);
} while( year1 <0 || month1<1 || month1>12 || day1<1|| day1> getDayOfMonth(year1,month1));
do{//控制日期输进合法
printf("
Input year2-month2-day2
(such as 2014-12-12) : ");
scanf("%d-%d-%d", &year2,&month2,&day2);
} while( year2 <0 || year2 <year1|| month2<1 || month2>12 || day2<1|| day2> getDayOfMonth(year2,month2));
printf("
Between two date have: %ld days
", getTotalDay(year1,month1,day1,year2,month2,day2));
return 0;
}
绛旓細dayArr[month]+1 : dayArr[month] ;}//鑾峰彇涓や釜鏃ユ湡涔嬮棿鐨勫ぉ鏁帮紝绗涓涓鏃ユ湡蹇呴』姣旂浜屼釜鏃ユ湡灏 锛) int getTotalDay(int year1,int month1,int day1,int year2,int month2,int day2){long total = 0;for(int year = year1; year < year2 ; year ++ ){total = total + 365;...
绛旓細if (((Y%4==0)&&(Y%100!=0)||(Y%400==0)) && (M>2)) JD++;return JD;} 鏁村勾鐨勫ぉ鏁帮紝娑夊強闂板勾鐨勫垽鏂細鏌愬勾鏄惁闂板勾锛岀敤 (Y%4==0)&&(Y%100!=0)||(Y%400==0) 鍒ゆ柇銆傞棸骞366澶╋紝骞冲勾365澶┿ 鏈変簡杩欎簺锛鍐绋嬪簭涓嶉毦銆傛湭鑰冭檻鍏厓鍓嶇殑骞存湀鏃璁$畻銆
绛旓細return uDays[uMonth - 1] + (IsLeapYear (uYear) && 2 == uMonth ? 1 : 0);}bool IsCorrectInput(UINT uYear, UINT uMonth, UINT uDay){ UINT uTotalDayOfMonth = GetTotalDayOfMonth(uYear, uMonth); return (0 != uTotalDayOfMonth && uDay > 0 && uDay <= uTotalDayOf...
绛旓細鍙互杩欐牱鍋氾細缂栧啓涓涓眰浠1.1.1鍒皔.m.d鐨勬诲ぉ鏁扮殑鍑芥暟锛堟瘮濡 int days(int,int,int)锛夛紝鐒跺悗璋冪敤杩欎釜鍑芥暟鍗冲彲銆傚墠鐪嬩笅闈㈢▼搴忥細include <stdio.h> int days(int y,int m,int d); /* 姹1.1.1~y.m.d鐨勫ぉ鏁 */ inline int isleap(int y); /* 鍒ゆ柇y骞存槸鍚﹂棸骞 */ void main(){ ...
绛旓細31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366 } };int rtc_year_days(unsigned int day, unsigned int month, unsigned int year){ return rtc_ydays[LEAP_YEAR(year)][month] + day-1;} 娉ㄩ噴锛氱敤rtc_year_days鍑芥暟绠楀嚭涓や釜鏃ユ湡鍚勮嚜涓轰粖骞寸殑绗嚑澶╋紝鐩稿噺鍗冲彲銆
绛旓細{return year % 400 == 0 || (year % 100 && year % 4 == 0);}int DateDistace(Date a, Date b){if (DateCmp(a, b))//淇濊瘉a灏忎簬b{Date t = b;b = a;a = t;}//璁$畻缁撴灉瀛樺偍鍦╮es涓//棣栧厛璁$畻鐩稿樊鐨勫勾int i = a.year + 1, j = b.year - 1, res = a....
绛旓細浠ヤ笅鏄涓涓狢璇█绋嬪簭锛屽彲浠ュ疄鐜颁互mm/dd/yyyy鐨勬牸寮忚緭鍏涓や釜鏃ユ湡锛屽垽鏂畠浠殑澶у皬锛屽苟鎸夊崌搴忚緭鍑恒cCopy code#include <stdio.h>int main(){ int month1, day1, year1; int month2, day2, year2;// 杈撳叆绗竴涓棩鏈 printf("Enter date in mm/dd/yyyy format: "); scanf("%d/...
绛旓細灞閮ㄥ彉閲忎細灞忚斀鎺夊悓鍚嶇殑鍏ㄥ眬鍙橀噺 鎵浠ワ細鍏堣皟鐢 fun 杈撳嚭 鍑芥暟鍐 灞閮ㄥ彉閲廰鐨勫5 鍐嶈緭鍑簃ain鍑芥暟鍐呭眬閮ㄥ彉閲 b鐨勫5 閫鍑篺un鍑芥暟 fun鍑芥暟鍐呯殑灞閮ㄥ彉閲廰 鐢熷懡鏈 缁撴潫 鍐峱rinft 鎵撳嵃鐨刟鐨勫煎氨鏄叏灞鍙橀噺a 鐨勫间簡锛岃宐杩樻槸main鍑芥暟鐨勫眬閮ㄥ彉閲 鎵浠 杈撳嚭鏄 5,5,0,5 ...
绛旓細浠ュ墠鍋鐨C璇█瀹炰範浣滀笟...瑕佹妸骞淬佹湀銆佹棩鍒嗗紑鏉ユ眰...include <stdio.h> int mon[12]={31,28,31,30,31,30,31,31,30,31,30,31}; /*鍌ㄥ瓨12涓湀鐨勫ぉ鏁*/ void main(){ int spec_year(int);void scan(int *year,int *month,int *day);long com_year(int y1,int y2);int...
绛旓細鐢–璇█璁捐涓涓绋嬪簭璁$畻涓や釜缁欏畾鏃ユ湡涔嬮棿鎵鍖呮嫭鐨勫畬鏁存湀浠芥暟銆傚皢璁$畻鐨勫勾鏁板拰 瀹屾暣鏈堜唤杈撳嚭銆傝鏄庯紝瑙勫畾涓や釜鐩搁偦骞翠唤鐨勫悓鏈堝悓鏃ヤ箣闂寸殑闂撮殧涓轰竴骞淬備緥濡傦紝2007.11.30鈥2008.11.30鏃堕棿闂撮殧涓轰竴骞达紝鑻ョ浉閭讳袱骞翠腑鍓嶄竴骞存槸闂板勾锛屽苟涓斿鏈熶负2鏈29锛屽垯鍒颁笅涓骞寸殑2鏈28鏃ヤ负涓骞达紝鍗2008.2.29鈥2009.2.28...