每天作死一道题——统计工龄

今天来帮车间主任统计工龄。
额,也可能不是帮车间主任算的。。。
管他的,都一样吧大概。

统计工龄(20 分)
给定公司N名员工的工龄,要求按工龄增序输出每个工龄段有多少员工。

输入格式:

输入首先给出正整数N(≤10
​5
​​ ),即员工总人数;随后给出N个整数,即每个员工的工龄,范围在[0, 50]。

输出格式:

按工龄的递增顺序输出每个工龄的员工个数,格式为:“工龄:人数”。每项占一行。如果人数为0则不输出该项。

输入样例:

8
10 2 0 5 7 2 5 2
输出样例:

0:1
2:3
5:2
7:1
10:1

思路的话
似乎也没啥好说的,弄个东西来记录工龄,工龄最大50,一个东西来记录人数,这么看,数组挺合适的。(工龄最大50挺不科学的,现在是到65退休,未必15岁开始上班啊)
弄一个数组,把数组的下标 当做工龄,把数组的值全部变成0,有一个人,就在他对应的工龄加一。
输出的时候,0人就不输出。就是这样的。
代码:

# include <stdio.h>
# include <malloc.h>

struct Array
{
    int * pAge;
    int num;
};

int main (void)
{
    int Num=51;
    int num, val,i,j;
    scanf ("%d", &num);
    struct Array Arr;
    Arr.pAge=(int *)malloc(sizeof(int)*Num);

    for (i=0; i<Num; i++)
    {
        Arr.pAge[i] = 0; 
    }
    for (i=0;i<num;i++)
    {
        scanf ("%d", &val);
        for (j=0;j<Num;j++)
        {
            if (val == j)
            Arr.pAge[j] ++;
        }
    }
    //for (i=0; i<Num; i++)
    //  printf ("%d", Arr.pAge[i]);
    for (i=0; i<Num; i++)
    {
        if (Arr.pAge[i]==0)
            continue;
        if (Arr.pAge[i]!=0)
        {
            printf ("%d:%d\n", i, Arr.pAge[i]);
        }
    }

    return 0;
}

我的代码,是写完了通过了测试后,是什么样就是什么样的,我不会去大规模的改他,我想保留我最开始的想法,等到以后来翻看的时候反思一下,,,,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值