算法入门统计各个年龄阶段的人数
Posted 迷失技术de小猪
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法入门统计各个年龄阶段的人数相关的知识,希望对你有一定的参考价值。
转载自:https://www.johngo689.com/2158/
1 题目
函数:fun()
功能:统计各个年龄阶段的人数
描述:
N个年龄通过调用随机函数获得,并存放在主函数的age中
要求函数把0-9岁年龄段的放在d[0]中,把10-19岁年龄段的放在d[1]中,依次类推。把100岁及以上的放在d[10]中结果在主函数中输出
2 思路
随机使用 rand() 函数,头文件为#include <stdlib.h>
rand()函数是按指定的顺序来产生整数,因此每次执行上面的语句都打印相同的两个值,所以说C语言的随机并不是真正意义上的随机,有时候也叫伪随机数,使用 rand() 生成随机数之前需要用随机发生器的初始化函数 srand(unsigned seed)(也位于 stdlib.h 中) 进行伪随机数序列初始化,seed 又叫随机种子,通俗讲就是,如果每次提供的 seed 是一样的话,最后每一轮生成的几个随机值也都是一样的,因此叫伪随机数,所以需要每次提供不同的 seed 达到完全的随机,我们通常用时间函数 time(NULL) 作为 seed ,因为时间值每秒都不同,但是在此题中使用不到time这个工具
3 代码
#include <stdio.h>
#include <stdlib.h>
#define M 11
#define N 100
/**
函数:fun()
功能:统计各个年龄阶段的人数
描述:
N个年龄通过调用随机函数获得,并存放在主函数的age中
要求函数把0-9岁年龄段的放在d[0]中,把10-19岁年龄段的放在d[1]中,依次类推。把100岁及以上的放在d[10]中
结果在主函数中输出
**/
void fun(int *age, int *d) {
for (int i = 0; i < N; ++i) {
if (*(age+i)<100) {
d[(*(age+i))/10] += 1;
} else {
d[M-1] += 1;
}
}
}
int main(int argc, char const *argv[]) {
int age[N]; // 100个用户
int d[M]={0}; // 11个年龄段
for (int i = 0; i < N; ++i) {
*(age+i) = rand()%121; // 设定年龄的范围是0-120
}
fun(age, d);
printf("各年龄阶段人数数量:\\n");
for (int i = 0; i < M; ++i) {
printf("%d ", d[i]);
}
printf("\\n");
}
示例结果:
$ gcc ex004.c -o demo
$ ./demo
各年龄阶段人数数量:
10 9 8 4 10 8 7 7 6 11 20
oracle 年龄段统计
查看年龄在14和18岁之间的人员信息 select * from postulantinformation where birthday between 'to_number(to_char(sysdate,'yyyy')-18)' and 'to_number(to_char(sysdate,'yyyy')-14)' 为什么会提示missing keyword
年龄段统计可用case when 语句。
如test表中有以下数据:
其中18-29岁为青年,30-49岁为中年,50岁以上为老年,先统计各个年龄段人数,可用如下语句:
count(*) as 人数
from test
group by case when age between 18 and 29 then \'青年\' when age between 30 and 59 then \'中年\' when age>=60 then \'老年\' end;
统计结果:
结合前几位大佬的答案:
先查出所有数据
select a.*,rowid from RELEASED a
下面是先计算年龄,然后按照年龄分组:
SELECT case when age between 18 and 25 then '青年' when age between 26 and 59 then '中年' when age>=60 then '老年' end as 年龄段,
count(*) as 人数
from (SELECT floor(months_between(sysdate,RELEASED.SPRP_BIRTH_DATE) / 12 ) AGE--对月份向下取整,表示年龄
FROM RELEASED)
group by case when age between 18 and 25 then '青年' when age between 26 and 59 then '中年' when age>=60 then '老年' end
ORDER BY 人数 DESC;
select * from postulantinformation where birthday between
to_number(to_char(add_months(sysdate,-216),'YYYY'))
and
to_number(to_char(add_months(sysdate,-168),'YYYY'))
你birthday那个字段是什么类型的,为什么你to_number外边还有单引号。。。本回答被提问者采纳 参考技术C select * from postulantinformation where birthday between to_number(to_char(sysdate,'yyyy')-18)
and to_number(to_char(sysdate,'yyyy')-14) 参考技术D 应该是这样的:select * from postulantinformation where birthday between to_number(to_char(sysdate,'yyyy'))-18 and to_number(to_char(sysdate,'yyyy'))-14;
以上是关于算法入门统计各个年龄阶段的人数的主要内容,如果未能解决你的问题,请参考以下文章
查询各个部门中各职位的人数与平均工资? 查询工资,奖金与10号部门某员工工资,奖金都相同的员工? SQL