• 图书馆借书(年,月,日)


    题目描述
    最近图书馆的工作人员在检查馆藏书目的时候发现,有很多书籍久久没有被借书人归还。于是工作人员决定给这些不负责任的借书人发信件通知他们来图书馆归还书籍并缴纳罚款(会有用吗?)。现在请你为图书馆工作人员编写程序,以计算每个不归还书籍的借书者借书天数。

    程序输入说明

    第一行输入为三个正整数y m d,分别代表现在的年、月、日;
    第二行输入为一个正整数n,代表下面有多少个借书者信息;
    下面有n行输入,每行有三个正整数yy mm dd, 代表一个借书者借书的日期(年、月、日)。
    年份数据的范围为[1, 9999]

    程序输出说明

    输出共有n行,每行输出一个正整数,代表对应的借书者借书天数。

    程序输入样例

    1 1 1
    3
    1 1 1
    1 1 31
    1 2 28
    

    程序输出样例

    0
    30
    58
     1 //图书馆借书
     2 #include<iostream>
     3 #include<cstdio>
     4 #include<cstring>
     5 using namespace std;
     6 
     7 bool run(int year){
     8     if( ((year%4==0)&&(year%100!=0)) || (year%400==0) )
     9         return true;
    10     else
    11         return false;
    12 }
    13 
    14 int solve_day(int year,int month,int day){
    15     int sum = 0;
    16     if( run(year) ){
    17         for( int i = 1; i < month; i++ ){
    18             if( i == 2 )
    19                 sum += 29;
    20             else if( i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12 )
    21                 sum += 31;
    22             else
    23                 sum += 30; 
    24         }
    25         sum += day;
    26     }
    27     else{
    28         for( int i = 1; i < month; i++ ){
    29             if( i == 2 )
    30                 sum += 28;
    31             else if( i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12 )
    32                 sum += 31;
    33             else
    34                 sum += 30;
    35         }
    36         sum += day; 
    37     } 
    38     return sum;
    39 } 
    40 
    41 int main(){
    42     int y,m,d,n,yy,mm,dd;
    43     cin>>y>>m>>d;
    44     cin>>n;
    45     while(n--){
    46         int day = 0;
    47         cin>>yy>>mm>>dd;
    48         if( yy == y )
    49             day = solve_day(yy,mm,dd)-solve_day(y,m,d);
    50         else{
    51             for( int i = 1; i < yy-y; i++ ){
    52                 if( run(i) )
    53                     day += 366;
    54                 else
    55                     day += 365;
    56             }
    57             if( run(y) )
    58                 day += 366-solve_day(y,m,d);
    59             else
    60                 day += 365-solve_day(y,m,d);
    61             day += solve_day(yy,mm,dd);
    62         }
    63         cout<<day<<endl;
    64     }
    65     return 0;
    66 }

  • 相关阅读:
    Swing-文本输入组件(一)
    JFrame常用属性设置模板
    Swing-BoxLayout用法-入门
    linux创建和查看用户命令
    elasticsearch,http://ip:9200访问不到的解决办法
    U盘制作Linux系统盘
    Linux中oracle的安装,亲测
    Linux中yum的安装
    Linux中oracle安装时候报ora-00119解决办法
    eclipse中多个工程编译到同一个目录下
  • 原文地址:https://www.cnblogs.com/geziyu/p/10106250.html
Copyright © 2020-2023  润新知