思路是年月日分开求,代码如下,编译报错在图片里,win7 32下的VS#include<stdio.h>int leap(int year){ if (year% 4 == 0 || year% 400 == 0 && year% 100 != 0) return 1; else return 0;}int s, i, j, y, t1 = 0, t2 = 0, n = 0, n2 = 365, n1 = 366;/*s为总天数,i为两者间的年数,n为年的总天数*/int a[12] = { 31,29,31,30,31,30,31,31,30,31,30,31 };/*闰年月份天数*/int b[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };main(){ int y1, m1, d1; int y2, m2, d2; printf("请输入第一个年月日:\n"); scanf("%d%d%d", &y1, &m1, &d1); printf("请输入第二个年月日:\n"); scanf("%d%d%d", &y2, &m2, &d2); if (m1 > 12 || d1 > 31 || m2 > 12 || d2 > 31) pritnf("输入有误,请重输!"); if (y1 < y2) y = y1;y1 = y2; if (y1>y2) y = y2;y1 = y1; for (i = y;i < y1 - 1;i++) { if (leap(i) == 1) n = n + n1; else n = n + n2; } if (y1 < y2) { for (i = 0;i < m1 - 1; i++) { if (leap(y1) == 1) t1 = n1 - (t1 + a[i] + d1); else t1 = n2 - (t1 + b[i] + d1); } for (j = 0;j < m2 - 1; j++) { if (leap(y2) == 1) t2 = t2 + a[j] + d2; else t2 = t1 + b[j] + d2; } } if (y1 > y2) { for (i = 0;i < m2 - 1; i++) { if (leap(y2) == 1) t1 = n1 - (t1 + a[i] + d2); else t1 = n2 - (t1 + b[i] + d2); } for (j = 0;j < m1 - 1;j++) { if (leap(y1) == 1) t2 = t2 + a[j] + d1; else t2 = t1 + b[j] + d1; } s = n + t1 + t2; printf("%d年%d月%d日与%d年%d月%d日共有%d天\n", y1, m1, d1, y2, m2, d2, s); return 0; }}