我是靠谱客的博主 朴素纸飞机,最近开发中收集的这篇文章主要介绍PAT乙级C语言 1028 人口普查思路推荐,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

思路

判断是否符合要求并计数,把符合的结构输入另一个数组,对该数组进行qsort排序,然后输出第一个和最后一个元素里的相关成员

推荐

我觉得这个写的很好(呜呜呜我写了七十几行人家写二十几行就好了,差距好大)

PAT乙级1028. 人口普查(C语言)_对方北方-CSDN博客

#include<stdio.h>
#include<stdlib.h>
typedef struct{
    char name[10];
    int year,month,date;
}citizen;
int cmp(const void*a,const void*b){
    citizen*pa=(citizen*)a;
    citizen*pb=(citizen*)b;
    int num1=pa->year;
    int num2=pb->year;
    int num3=pa->month;
    int num4=pb->month;
    int num5=pa->date;
    int num6=pb->date;
    if(num1!=num2){
        return num1-num2;
    }else{
        if(num3!=num4){
            return num3-num4;
        }else{
            if(num5!=num6){
                return num5-num6;
            }
        }
    }
    return 0;
}

int main(){
    int N;
    scanf("%d",&N);
    citizen a[100000],b[100000];
    int cnt=0;
    int m=0;
    for(int i=0;i<N;i++){
        scanf("%s %d/%d/%d",a[i].name,&a[i].year,&a[i].month,&a[i].date);
        if(a[i].year>1814&&a[i].year<2014){
            cnt++;
            b[m]=a[i];
            m++;
        }else if(a[i].year==1814){
            if(a[i].month>9){
                cnt++;
                b[m]=a[i];
                m++;
            }
            if(a[i].month==9&&a[i].date>=6){
                cnt++;
                b[m]=a[i];
                m++;
            }
        }else if(a[i].year==2014){
            if(a[i].month==9&&a[i].date<=6){
                cnt++;
                b[m]=a[i];
                m++;
            }
            if(a[i].month<9){
                cnt++;
                b[m]=a[i];
                m++;
            }
        }
    }
    qsort(b,m,sizeof(citizen),cmp);
    if(cnt==0){
        printf("0");
    }else{
        printf("%d %s %s",cnt,b[0].name,b[m-1].name);
    }
    return 0;
}

最后

以上就是朴素纸飞机为你收集整理的PAT乙级C语言 1028 人口普查思路推荐的全部内容,希望文章能够帮你解决PAT乙级C语言 1028 人口普查思路推荐所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部