比较两人生日相差多少天
算法:从键盘输入出生日期,取较小者的年份为基准,先计算其中一个生日距基准年份的第一天相差天数,再计算第二个,再将两个结果做差即可
如输入2015 2 14
2013 4 28
则基准为2013 1 1
1 // ConsoleApplication1.cpp : 定义控制台应用程序的入口点。 2 // 3 4 #include "stdafx.h" 5 #include<stdio.h> 6 7 int time(int a, int b, int c, int year); //申明函数time 8 9 struct student{ 10 int year; 11 int month; 12 int day; 13 }c[2]; //定义两位学生结构体和变量 14 15 int main() 16 { 17 int i, sum1 = 0, sum2 = 0, sum; 18 for (i = 0; i<2; i++) 19 { 20 printf("请输入第%d位同学生日:", i + 1); 21 scanf_s("%d %d %d", &c[i].year, &c[i].month, &c[i].day); 22 } //输入两位同学生日信息 23 if (c[0].year >= c[1].year) 24 { 25 sum1 = time(c[0].year, c[0].month, c[0].day, c[1].year); 26 sum2 = time(c[1].year, c[1].month, c[1].day, c[1].year); 27 } 28 else 29 { 30 sum1 = time(c[0].year, c[0].month, c[0].day, c[0].year); 31 sum2 = time(c[1].year, c[1].month, c[1].day, c[0].year); 32 } //用小一点的同学出生年份做基准 33 sum = (sum1 >= sum2) ? (sum1 - sum2) : (sum2 - sum1); //输出正的天数 34 printf("两人相差%d天\n", sum); 35 } 36 37 int time(int a, int b, int c, int year) //定义函数time 38 { 39 int num = 0, i, sum = c; 40 for (i = 1; i<b; i++) 41 { 42 switch (i) 43 { 44 case 1: 45 case 3: 46 case 5: 47 case 7: 48 case 8: 49 case 10: 50 case 12:num = 31; break; 51 case 4: 52 case 6: 53 case 9: 54 case 11:num = 30; break; 55 case 2:if (a % 4 == 0 && a % 100 != 0 || a % 400 == 0) 56 num = 29; 57 else 58 num = 28; 59 break; 60 default:num = 0; 61 } 62 sum += num; //统计该同学生日和他出生那年第一天差 63 } 64 if (a == year) 65 return sum; 66 else if (a>year) 67 { 68 for (i = year; i<a; i++) //循环是用来大一点同学大出年份的总天数 69 { 70 if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) 71 sum += 366; 72 else 73 sum += 365; 74 } //求出总天数 75 return sum; 76 } 77 }
结果