user-0 提问: C语言 任意输入年月日，距离1949年10月1日有多少天？

回复:
user: user-1
content: 这个是我以前写的，写得很不规范，你稍微修改下就能用了 /*显示某年某月某日星期几*/ #include <stdio.h> #include <stdlib.h> int main() { 	int n,y,r,ts;     int sh,zh,ch,x;     int a,b,c;     int d,e,f;     while(1){     system("cls");     printf("请输入年份：");     scanf("%d",&n);	     printf("请输入月份：");     scanf("%d",&y);	     printf("请输入日期：");     scanf("%d",&r);	     int t=0;     for(ch=1900;ch<n;ch++)    {if((ch%4==0)&&(ch%100!=0)||(ch%400==0))  t++; }     if(y==1)	d=0;     if(y==2)	d=31;     if(y==3)	d=59;     if(y==4)	d=90;     if(y==5)	d=120;     if(y==6)	d=151;     if(y==7)	d=181;     if(y==8)	d=212;     if(y==9)	d=243;     if(y==10)	d=273;     if(y==11)	d=304;     if(y==12)	d=334; 	sh=n-1900;zh=sh*365;x=zh+t;     ts=x+d+r;     e=(ts+7)/7;f=e*7;x=ts-f+7;     printf("从1900年1月1日到%d年%d月%d日，已经过了%d天，当天是星期",n,y,r,ts);     if(x==0||x==7)	printf("天");     if(x==6)		printf("六");     if(x==5)		printf("五");     if(x==4)		printf("四");     if(x==3)		printf("三");     if(x==2)		printf("二");     if(x==1)		printf("一");     printf("\n"); 	system("pause");     } 	return 0; }

user: user-2
content: CTime ct1(1949,10,1,0,0,0); CTime ct2(xx,xx,xx,xx,xx,xx);//你输入的时间 CTimeSpan span = ct1 - ct2; //span.GetDays()就是相隔的天数 有可能是负数 取绝对值就好了

user: user-3
content: mktime啊  #include <stdio.h> #include <string.h> #include <time.h>  int main(int argc, char *argv[]) {     struct tm tm0, tm1;     time_t tk0, tk1;      memset(&tm0, 0, sizeof(tm0));     memset(&tm1, 0, sizeof(tm1));      tm0.tm_year = 1949 - 1900;     tm0.tm_mon  = 10 - 1;     tm0.tm_mday = 1;     tk0 = mktime(&tm0);      tm1.tm_year = 1949 - 1900;     tm1.tm_mon  = 9 - 1;     tm1.tm_mday = 30;     tk1 = mktime(&tm1);     printf("%d\n", (int)((tk1 - tk0) / (3600 * 24)));      tm1.tm_year = 1948 - 1900;     tm1.tm_mon  = 10 - 1;     tm1.tm_mday = 1;     tk1 = mktime(&tm1);     printf("%d\n", (int)((tk1 - tk0) / (3600 * 24)));      tm1.tm_year = 1949 - 1900;     tm1.tm_mon  = 10 - 1;     tm1.tm_mday = 2;     tk1 = mktime(&tm1);     printf("%d\n", (int)((tk1 - tk0) / (3600 * 24)));      return 0; }

user: user-4
content: The COleDateTime class handles dates from 1 January 100 – 31 December 9999.  仅供参考#include <afxdisp.h> #include <stdio.h> #include <stdlib.h> int main(int argc, TCHAR* argv[]) {     COleDateTime t;     COleDateTimeSpan ts;     CString s,fmt;     int nYear;     int nMonth;     int nDay;     int nHour;     int nMin;     int nSec;     int lDays;     int nHours;     int nMins;     int nSecs;     int i,N;     // initialize MFC and print and error on failure     if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) {         printf("Fatal Error: MFC initialization failed\n");         return 1;     }     if (argc<13) {         printf("Usage:%s sYYYY sMM sDD shh smm sss pDD phh pmm pss n {SQL|YYYY|YY}\n",argv[0]);         return 2;     }     if (stricmp(argv[12],"SQL")==0) fmt="%Y-%m-%d %H:%M:%S";     else if (stricmp(argv[12],"YYYY")==0) fmt="%Y%m%d %H%M%S";     else if (stricmp(argv[12],"YY")==0) fmt="%y%m%d %H%M%S";     else {         printf("Usage:%s sYYYY sMM sDD shh smm sss pDD phh pmm pss n {SQL|YYYY|YY}\n",argv[0]);         return 3;     }     nYear =atoi(argv[ 1]);     nMonth=atoi(argv[ 2]);     nDay  =atoi(argv[ 3]);     nHour =atoi(argv[ 4]);     nMin  =atoi(argv[ 5]);     nSec  =atoi(argv[ 6]);     lDays =atoi(argv[ 7]);     nHours=atoi(argv[ 8]);     nMins =atoi(argv[ 9]);     nSecs =atoi(argv[10]);     N     =atoi(argv[11]);     if (N<=0) {         printf("Usage:%s sYYYY sMM sDD shh smm sss pDD phh pmm pss n {SQL|YYYY|YY}\n",argv[0]);         return 4;     }     t=COleDateTime( nYear, nMonth, nDay, nHour, nMin, nSec);     ts=COleDateTimeSpan( lDays, nHours, nMins, nSecs );     for (i=1;i<=N;i++) {         s=t.Format(fmt);         printf("%08d %s\n",i,s);         t=t+ts;     }     return 0; }

user: user-5
content: 每年的天数是365或者366天，12个月份，除了2月，天数都是固定的，闰年2月29天，其他时候28天。  1.如果输入的是1949年的，就只要计算月份和日期。 2.如果相差年份，就计算相差的年份*365，补上中间可能的闰年误差的1天，剩下的就归约到了问题1，同年内的月份日期差的天数

user: user-6
content: 这个用模拟的方法就可以做出来啊。 注意闰年、大小月份就是了

user: user-7
content: 引用 3 楼 coding_hello 的回复:每年的天数是365或者366天，12个月份，除了2月，天数都是固定的，闰年2月29天，其他时候28天。  1.如果输入的是1949年的，就只要计算月份和日期。 2.如果相差年份，就计算相差的年份*365，补上中间可能的闰年误差的1天，剩下的就归约到了问题1，同年内的月份日期差的天数+1

user: user-8
content: 用time得到秒数差反算天。有范围，要任意日期得自对照历法去查，不同时期历法不同