1028. 人口普查(20)

本文深入剖析了信息技术领域的各个方面,包括前端开发、后端开发、移动开发、游戏开发等细分领域。从HTML、CSS、JavaScript等基础到更高级的技术如React、Vue、Flutter,再到大数据开发、AI音视频处理等前沿技术,文章全面展示了信息技术的广阔范围和深度。同时,还涵盖了开发工具、嵌入式开发环境、音视频基础、测试、基础运维等多个领域,为读者提供了一站式的知识导航。

1028. 人口普查(20)

时间限制
200 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue

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

这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过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


  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  使用高级编辑器

     1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
    	
    	
    	#include<stdio.h>
    #include<string.h>
    int main()
    {
    	int n,i,num,j,k=0,count=0,m=0;
    	int r[11][1];
    	char max[11];
    	char z[11]="2014/09/06";
    	char x[11]="1814/09/06";
    	struct a{
    		char b[10];
    	    char c[11];
    	};
    	/*
    	
    	
    	5
    John 2001/05/12
    Tom 1999/09/06
    Ann 1945/01/30
    James 2000/09/05
    Steve 1967/11/20
    	
    	
    	
    	*/ 
    	scanf("%d",&n);
    	struct a d[n];
    	scanf("%d",&n);
    	for(i=0;i<n;i++)
    	{
    		scanf("%s%s",d[i].b,d[i].c);
    	}
    //strcmp(str1, str2);
    //str1>str2 返回1, str1 < str2返回-1,str1 == str2 返回0
        for(i=0;i<n;i++)
    	{
             if(strcmp(d[i].c,z)<=0)
    		 {
    		  if(strcmp(d[i].c,x)>=0)//0 1 4
    		 	{
    		 		count++;
    		 		r[m++][0]=i;
    			 }
    		}      		
    	}	
    	for(i=0;i<count-1;i++)
    	{
    		for(j=0;j<count-1-i;j++)
    		{
    			if(strcmp(d[r[j][0]].c,d[r[j+1][0]].c)>0)
    			{
    				//字符串名字跟着时间一起进行交换 
    			strcpy(	max,d[r[j][0]].b);
    			strcpy(d[r[j][0]].b,d[r[j+1][0]].b);
    			strcpy(	d[r[j+1][0]].b,max);
    			strcpy(	max,d[r[j][0]].c);
    			strcpy(d[r[j][0]].c,d[r[j+1][0]].c);
    			strcpy(	d[r[j+1][0]].c,max);
    			}
    		}
    		
    	} 
         if(count==0)
         {
         	printf("0");
    	 }else
        printf("%d %s %s",count,d[r[0][0]].b,d[r[count-1][0]].b);	
    	return 0;
    } 





    解法二:#include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    int compare(char *you,char *old)
    {
        int i;
        for(i=0;i<10;i++)
        {
            if(you[i]-old[i]>0)
                return 1;
            if(you[i]-old[i]<0)
                return 0;
        }
        return 0;
    }
    int main()
    {
        int n,i,count=0;
        char oldName[6],youName[6],bigDate[11]="1814/09/05",youDate[11]="2014/09/07",tempName[6],tempDate[11];
        scanf("%d",&n);
        for(i=0;i<n;i++)
        {
            scanf("%s %s",tempName,tempDate);
            if(compare(tempDate,"1814/09/05")&&compare("2014/09/07",tempDate))
            {
                count++;
                //可以想象成找最大最小数,不过现在成了字符串而已 
                if(compare(tempDate,bigDate))
                {
                    strcpy(bigDate,tempDate);
                    strcpy(youName,tempName);
                }
                if(compare(youDate,tempDate))
                {
                    strcpy(youDate,tempDate);
                    strcpy(oldName,tempName);
                }
            }
        }
        if(count>0)
        {
          printf("%d %s %s\n",count,oldName,youName);
        }
        else
        {
            printf("0");
        }


        return 0;
    }

    ### 关于人口普查的C++编程示例 在处理人口普查数据时,通常会涉及到大量的数据分析操作。下面提供一段简单的C++代码用于模拟基本的人口普查数据收集和统计功能。 #### 定义人口普查记录结构体 为了存储个人的信息,在此定义了一个`PersonRecord`结构体来保存每个人的年龄、性别和地区信息: ```cpp #include <iostream> #include <vector> #include <string> struct PersonRecord { std::string name; int age; char gender; // 'M' for male, 'F' for female std::string region; PersonRecord(std::string n, int a, char g, std::string r) : name(n), age(a), gender(g), region(r) {} }; ``` #### 创建并填充人口普查数据库 接下来创建一个函数用来初始化一组虚拟的人口普查数据,并将其存入到容器中以便后续分析: ```cpp std::vector<PersonRecord> createPopulationData() { return { {"Alice", 30, 'F', "North"}, {"Bob", 25, 'M', "South"}, {"Charlie", 45, 'M', "East"}, {"Diana", 38, 'F', "West"} }; } ``` #### 统计特定条件下的统计数据 这里展示如何计算某个区域内男性人数以及平均年龄的例子: ```cpp void analyzeDemographics(const std::vector<PersonRecord>& population) { double totalAge = 0; size_t countMaleInRegion = 0; const auto& targetRegion = "East"; // 可以更改为其他地区 for (const auto& person : population) { if (person.region == targetRegion && person.gender == 'M') { ++countMaleInRegion; totalAge += person.age; } } if (!countMaleInRegion) { std::cout << "No males found in the specified region." << std::endl; } else { std::cout << "Number of males in '" << targetRegion << "' is " << countMaleInRegion << ". Average age: " << static_cast<double>(totalAge)/countMaleInRegion << "." << std::endl; } } int main() { auto popData = createPopulationData(); analyzeDemographics(popData); return 0; } ``` 这段程序展示了如何利用C++中的标准库特性(如字符串处理、向量容器等),实现对人口普查数据的基本管理和查询功能[^1]。
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包

    打赏作者

    测试小牛

    你的鼓励将是我创作的最大动力

    ¥1 ¥2 ¥4 ¥6 ¥10 ¥20
    扫码支付:¥1
    获取中
    扫码支付

    您的余额不足,请更换扫码支付或充值

    打赏作者

    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

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

    余额充值