比较两人生日相差多少天

算法:从键盘输入出生日期,取较小者的年份为基准,先计算其中一个生日距基准年份的第一天相差天数,再计算第二个,再将两个结果做差即可

如输入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 }

 

结果

posted on 2016-12-20 15:19  么么打123  阅读(1041)  评论(0编辑  收藏  举报