比较两人生日相差多少天

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

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

 

结果

转载于:https://www.cnblogs.com/cdp1591652208/p/6202810.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值