精华内容
下载资源
问答
  • 要求:给出一个人的出生日期,计算出该人到今天已经活过的天数,出生的那一天算一天,现在这一刻也算一天 思路:假定这个人是19900324现在时间为20140310 1.计算1990年到2014年这24年中的天数 days = (2014 - 1990...

    要求:给出一个人的出生日期,计算出该人到今天已经活过的天数,出生的那一天算一天,现在这一刻也算一天

    思路:假定这个人是19900324现在时间为20140310

    1.计算1990年到2014年这24年中的天数 days = (2014 - 1990) * 365,每一年按平年算

    2.计算1990年到2014年有有n个闰年 days = days + n

    3.计算0324到0310的天数temp_days days = days + temp_days

     

    这中间还有一些细节需要考虑,下面是用python实习的代码,试了两个日期没怎么调试

    Caculate.py

     1 import datetime
     2 import pdb
     3 
     4 #定义计算一个人从出生到现在活的天数类
     5 class Caculate:
     6     #每个月天数 2月算的28天
     7     __monthDaysArray = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
     8     __days = 0
     9 
    10      #定义计算函数
    11     def caculateDays(self):
    12         #获取用户的出生日期
    13         bir_date = input("请输入你的出生日期,格式为19900806")
    14         bir_year = int(bir_date[0:4])
    15         bir_month = int(bir_date[4:6])
    16         bir_day = int(bir_date[6:8])
    17         #获取当前系统年月日
    18         now =datetime.datetime.now()
    19         cur_year = now.year
    20         cur_month = now.month
    21         cur_day = now.day
    22         #计算如19900806-20140806之间的天数
    23         self.__days = (cur_year - bir_year) * 365
    24         #计算1990-2014之间闰年次数 出生月份小月2月从1990年开始计算
    25         if bir_month < 2:
    26             for tempYear in range(bir_year, cur_year - 1, 1):
    27                 if self.isReap(tempYear):
    28                     self.__days += 1
    29         else:
    30             for tempYear in range(bir_year + 1, cur_year, 1):
    31                 if self.isReap(tempYear):
    32                     self.__days += 1
    33         temp_days = 0
    34         if cur_month < bir_month:
    35             temp_days = self.__monthDaysArray[cur_month] - cur_day
    36             for temp_month in range(cur_month + 1, bir_month, 1):
    37                 temp_days += self.__monthDaysArray[temp_month]
    38             if cur_month <= 2 and bir_month > 2:
    39                 if self.isReap(cur_year):
    40                     temp_days += 1
    41             self.__days -= temp_days
    42         if cur_month > bir_month:
    43             self.__days += temp_days
    44         self.__days += 1
    45 
    46         return  self.__days
    47 
    48     #判断是否为闰年
    49     def isReap(self, year):
    50         if year % 100 == 0 and year % 4 == 0:
    51             return True
    52         elif year % 100 != 0 and year % 4 == 0:
    53             return True
    54         else:
    55             return False

    mainF.py

     1 import Caculate
     2 #测试类
     3 def main():
     4     caculate = Caculate.Caculate()
     5     days = caculate.caculateDays()
     6     print("你已经活了", days)
     7 
     8 
     9 if __name__ == '__main__':
    10     main()

    中间还有很多异常没有处理

    转载于:https://www.cnblogs.com/luckygxf/p/3592966.html

    展开全文
  • 1028. 人口普查(20)

    2017-02-02 17:19:02
    某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。这里确保每个输入的日期都是合法的,但不一定...随后N行,每行给出1个人的姓名(由不超过5个英文字母组成的字符串)、以及按

    某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。

    这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过200岁的老人,而今天是2014年9月6日,所以超过200岁的生日和未出生的生日都是不合理的,应该被过滤掉。

    输入格式:

    输入在第一行给出正整数N,取值在(0, 105];随后N行,每行给出1个人的姓名(由不超过5个英文字母组成的字符串)、以及按“yyyy/mm/dd”(即年/月/日)格式给出的生日。题目保证最年长和最年轻的人没有并列。

    输出格式:

    在一行中顺序输出有效生日的个数、最年长人和最年轻人的姓名,其间以空格分隔。

    输入样例:
    5
    John 2001/05/12
    Tom 1814/09/06
    Ann 2121/01/30
    James 1814/09/05
    Steve 1967/11/20
    输出样例:
    3 Tom John

    #include <iostream>
    #include <stdio.h>
    #include <string.h>
    using namespace std;
    
    int main()
    {
        int n;
        int count = 0;
        cin>>n;
        char Max[20] = "1814/09/05";
        char Min[20] = "2014/09/07";
        char old[20],young[20];
        for ( int i = 0 ; i < n ; i++){
            char name[10],birthday[20];
            scanf("%s %s",name,birthday); 
            if ((strcmp(birthday,"1814/09/05") == 1) && ( strcmp("2014/09/07",birthday) == 1)){
                count++;
                if (strcmp(birthday,Max) == 1){
                    strcpy(Max,birthday);
                    strcpy(old,name);
                }
                if ( strcmp(Min,birthday) == 1){
                    strcpy(Min,birthday);
                    strcpy(young,name);
                }
            }
        } 
        if ( count > 0){
            cout<<count<<" "<<young<<" "<<old;
        }
        else{
            cout<<0;
        }
        return 0;
    }

    这里写图片描述

    展开全文
  • PAT-B 1028. 人口普查

    2016-07-22 10:58:53
    某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。这里确保每个输入的日期都是合法的,但不一定...随后N行,每行给出1个人的姓名(由不超过5个英文字母组成的字符串)、以及按

    某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。

    这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过200岁的老人,而今天是2014年9月6日,所以超过200岁的生日和未出生的生日都是不合理的,应该被过滤掉。

    输入格式:

    输入在第一行给出正整数N,取值在(0, 105];随后N行,每行给出1个人的姓名(由不超过5个英文字母组成的字符串)、以及按“yyyy/mm/dd”(即年/月/日)格式给出的生日。题目保证最年长和最年轻的人没有并列。

    输出格式:

    在一行中顺序输出有效生日的个数、最年长人和最年轻人的姓名,其间以空格分隔。

    输入样例:

    5
    John 2001/05/12
    Tom 1814/09/06
    Ann 2121/01/30
    James 1814/09/05
    Steve 1967/11/20

    输出样例:

    3 Tom John

    程序代码:

    #include<stdio.h>
    #define MAX 100000
    struct man
    {
        char name[6];
        int year;
        int month;
        int day;
    };
    struct man old(struct man[],int n,int* count);
    struct man young(struct man[],int n,int* count);
    void compare_old(struct man* a,struct man* old);
    
    int date(struct man *a);
    int main()
    {
        struct man a[MAX];
        int N;
        int count = 0;
        scanf("%d",&N);
        int i = 0;
        for(;i<N;i++)   
        {
            scanf("%s",a[i].name);
            scanf("%d/%d/%d",&a[i].year,&a[i].month,&a[i].day);
        }
        struct man max=old(a,N,&count);
        struct man min=young(a,N,&count);
        if(count == 0)
        printf("0");
            else
            printf("%d %s %s",count,max.name,min.name);
    return 0;
    }
    struct man old(struct man a[],int n,int* count)
    {
        struct man old={"z",2014,9,7};
        //old.year = 2014;
        //old.month = 9;
        //old.day = 6;
        int i;
        for(i=0;i<n;i++)
        {
            if(date(&a[i])!=0)  
            {   
                if(a[i].year<old.year)
                    old = a[i];
                else if((a[i].month<old.month)&&(a[i].year==old.year))
                    old = a[i];
                else if((a[i].year==old.year)&&(a[i].month==old.month)&&(a[i].day <old.day))
                    old = a[i];
                (*count)++;
            }
        }
        return old;
    }
    struct man young(struct man a[],int n,int* count)
    {
            struct man young={"z",1814,9,5};
            //young.year = 1814;
            //young.month = 9;
            //young.day = 6;
            int i;
            for(i=0;i<n;i++)
            {
                    if(date(&a[i])!=0)
            {
                            if(a[i].year>young.year)
                                    young = a[i];
                            else if((a[i].month>young.month)&&(a[i].year==young.year))
                                    young = a[i];
                            else if((a[i].year==young.year)&&(a[i].month==young.month)&&(a[i].day > young.day))
                                    young = a[i];
    //                        (*count)++;
                    }
            }
            return young;
    }
    int date(struct man *a)
    {
        if(a->year>2014||a->year<1814)
            return 0;
        else if(((a->year==2014)&&(a->month>9))||((a->year==1814)&&(a->month<9)))
            return 0;
        else if(((a->year==2014)&&(a->month==9)&&(a->day>6))||((a->year==1814)&&(a->month==9)&&(a->day<6)))
            return 0;
        else
            return 1;
    
    }
    void compare_old(struct man* a,struct man* old) 
    {
        if(a->year<old->year)
            *old=*a;
        else if((a->year==old->year)&&(a->month<old->month))
            *old = *a;
        else if((a->year==old->year)&&(a->month==old->month)&&(a->day<old->day))
            *old = *a;
    }
    
    展开全文
  • 题目大意:n个人,编号1到n,给出m组数据,如0 1 2表示编号为1人在编号为2出生前就死了;1 1 2表示存在一段时间,1和2两个人同时活着。现在要求给出一组能满足上述m组数据的n个人出生死亡日期,不存在这样...

    2019清华叉院夏令营某组笔试题第一题:图的拓扑排序算法(先得到不等式组然后转换为图的拓扑排序)
    题目大意:n个人,编号1到n,给出m组数据,如0 1 2表示编号为1的人在编号为2的人出生前就死了;1 1 2表示存在一段时间,1和2两个人同时活着。现在要求给出一组能满足上述m组数据的n个人出生死亡日期,不存在这样的日期就返回"NO"。

    #include <iostream>
    #include <queue>
    #include <vector>
    using namespace std;
    const int N=1000;
    int ind[2*N+10],date[2*N+10];
    vector <int> edge[2*N+10];
    queue <int> que;
    int main(){
    	int n,m;	cin>>n>>m;
    	for(int i=0;i<n;i++){
    		edge[i*2].push_back(i*2+1);
    		ind[i*2+1]++;
    	}
    	for(int i=0;i<m;i++){
    		int type,p,q;
    		cin>>type>>p>>q;
    		p--;
    		q--;
    		if(type==1){
    			edge[p*2+1].push_back(q*2);
    			ind[q*2]++;
    		}
    		else{
    			edge[p*2].push_back(q*2+1);
    			ind[q*2+1]++;
    			edge[q*2].push_back(p*2+1);
    			ind[p*2+1]++;
    		}
    	}
    	for(int i=0;i<2*n;i++)
    		if(ind[i]==0)	que.push(i);
    	int count=0;
    	while(!que.empty()){
    		int u=que.front();
    		que.pop();
    		count++;
    		for(int v : edge[u]){
    			ind[v]--;
    			if(ind[v]==0){
    				que.push(v);
    				date[v]=max(date[v],date[u]+1);
    			}
    		}
    	}
    	if(count<2*n)	cout<<"NO"<<endl;
    	else{
    		cout<<"YES"<<endl;
    		for(int i=0;i<n;i++)
    			cout<<date[i*2]<<" "<<date[i*2+1]<<endl;
    	}
    	return 0;
    }
    
    展开全文
  • 某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。 这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过 ...随后N行,每行给出 1 个人的姓名(由...
  • 立志用更少的代码做更高效的表达 某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最...随后 N 行,每行给出 1 个人的姓名(由不超过 5 个英文字母组成的字符串)、以及按 yyyy/mm/dd
  • 题目 某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。 这里确保每个输入的日期都是合法的,但不一定是合理的——假设...随后N行,每行给出1个人的姓名(由不超过5个英文...
  • 1028 人口普查 (20 分) 某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最...随后 N 行,每行给出 1 个人的姓名(由不超过 5 个英文字母组成的字符串)、以及按 yyyy/mm/dd(即年/月/日
  • 给出N个人的名字与出生年月日, 名字为10个字符以内的英文字母, 出生年月日为8位数字。 有M个询问,每个询问给出一个k与某一天s,输出生日在这天s的年龄第k大的人。 保证每一个朋友的出生年月日不同,且出生...
  • 1028 人口普查 (20分)

    千次阅读 2020-02-08 19:37:16
    某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。 这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过 200 岁的...随后N行,每行给出 1 个人的...
  • 1028 人口普查

    2019-10-07 10:12:32
    某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。 这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过 ...随后N行,每行给出 1 个人的姓名(由...
  • 1028 人口普查 (20 分)

    2019-10-07 01:50:13
    某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。 这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过 ...随后N行,每行给出 1 个人的姓名(由...
  • 某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。 这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过 ...随后N行,每行给出 1 个人的姓名(由...
  • PAT B-1028 人口普查

    2019-09-28 13:08:06
    某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。 这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过 ...随后N行,每行给出 1 个人的姓名(由...
  • 某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。 这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过 ...随后N行,每行给出 1 个人的姓名(由...
  • PAT乙级1028

    2021-02-18 17:31:31
    1028 人口普查 某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最...随后 N 行,每行给出 1 个人的姓名(由不超过 5 个英文字母组成的字符串)、以及按 yyyy/mm/dd(即年/月/日)格式给出的生日
  • 某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。 这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过 200 岁...随后 N 行,每行给出 1 个人的...
  • 题目 某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最...随后 N 行,每行给出 1 个人的姓名(由不超过 5 个英文字母组成的字符串)、以及按 yyyy/mm/dd(即年/月/日)格式给出的生日。题目保
  • PAT B1028 人口普查

    2020-08-08 21:02:32
    某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻...随后 N 行,每行给出 1 个人的姓名(由不超过 5 个英文字母组成的字符串)、以及按 yyyy/mm/dd(即年/月/日)格式给出的生日。题
  • 某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。 这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过 200 岁...随后 N 行,每行给出 1 个人的...
  • B1028 人口普查

    2020-02-22 20:48:17
    某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。 这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过 200 岁...随后 N 行,每行给出 1 个人的...
  • 某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。 这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过 200 岁的...随后N行,每行给出 1 个人的...
  • 某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和...随后 N 行,每行给出 1 个人的姓名(由不超过 5 个 英文字母组成的字符串)、以及按 yyyy/mm/dd(即年/月/日)格式给出的生日。题目保
  • 某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。 这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过 200 岁...随后 N 行,每行给出 1 个人的...
  • C _ PAT B1028 人口普查

    2021-01-10 20:32:03
    题目描述: 某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最...随后 N 行,每行给出 1 个人的姓名(由不超过 5 个英文字母组成的字符串)、以及按 yyyy/mm/dd(即年/月/日)格式给出的生日。

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 272
精华内容 108
关键字:

给出n个人的出生