全校学生的年龄在 16 到 30 岁之间,请编写程序 输入一批 16 至 30 之间的年龄,以 -1 结束输入,用数组元素作为计数器来统计每一年龄的人数。
时间: 2023-05-31 21:17:47 浏览: 756
输入出生年份,判断年龄段
### 回答1:
以下是Python代码实现:
ages = [] * 15 # 初始化年龄计数器数组,共15个元素,分别对应16岁到30岁
while True:
age = int(input("请输入一个16到30之间的年龄(输入-1结束输入):"))
if age == -1:
break
index = age - 16 # 计算年龄在数组中的下标
ages[index] += 1 # 对应年龄计数器加1
# 输出每个年龄的人数
for i in range(len(ages)):
print("{}岁的人数为:{}".format(i+16, ages[i]))
### 回答2:
为了统计每一年龄的人数,我们可以定义一个整型数组来存储每个年龄的人数,然后依次输入每个年龄并将相应的计数器加一。最后输出每个年龄的人数即可。
具体实现过程如下:
```c
#include <stdio.h>
int main() {
int ages[15] = {0}; // 定义一个15个元素的数组,每个元素存储一个年龄的人数,初始化为0
int age;
while (1) { // 无限循环,直到输入-1结束循环
printf("请输入一个年龄(输入-1结束输入):");
scanf("%d", &age);
if (age == -1) break; // 输入-1跳出循环
if (age >= 16 && age <= 30) { // 只统计16到30岁之间的人数
ages[age-16]++; // 年龄为age的人数加一,存储在数组的第age-16个元素中
}
}
printf("\n各年龄段的人数如下:\n");
for (int i = 0; i < 15; i++) { // 输出每个年龄的人数
printf("%d岁的人数:%d\n", i+16, ages[i]);
}
return 0;
}
```
解释一下程序中的几个关键点:
1. 数组`ages`的大小为15,是由输入年龄范围(16~30)算出的,每个元素存储一个年龄的人数,分别对应16~30岁的人数。
2. 在输入每个年龄时,先判断是否等于-1,如果是则跳出循环;否则检查输入的年龄是否在16~30范围内。只统计在范围内的年龄的人数。
3. 在统计年龄的人数时,数组下标是`age-16`,因为数组下标从0开始计数,而输入的年龄范围是16~30,所以要减去16。
4. 在输出每个年龄的人数时,因为我们的数组下标是从0开始计数,所以要加上16。
希望以上解释能够帮助大家理解这段程序的实现思路。
### 回答3:
题目要求输入一批年龄,统计每个年龄段的人数,因此我们需要用数组来实现计数器的功能。
首先,我们定义一个大小为15的整数型数组count,用于存储年龄16到30岁每个年龄段的人数。由于对数组下标进行操作时是从0开始计数,因此count[0]表示年龄为16岁的人数,count[1]表示年龄为17岁的人数,以此类推,count[14]表示年龄为30岁的人数。
接着,我们使用while循环语句实现输入和计数,当输入年龄为-1时,结束输入。在循环体内部,首先判断输入的年龄是否在16到30之间,如果不是,则输出错误提示信息并要求重新输入;如果是,则使用输入的年龄计算出对应的数组下标,将对应的计数器加1。最后,在循环结束后,使用for循环遍历整个计数器数组,并输出每个年龄段的人数统计结果。
下面是程序的具体实现过程:
#include <stdio.h>
int main()
{
int age, index, count[15] = {0}; //定义年龄、索引和计数器数组
printf("请输入年龄(16-30岁),一次只能输入一个,以-1结束\n");
while(1) //无限循环,直到输入-1结束
{
printf("请输入年龄:");
scanf("%d", &age); //读取年龄
if(age == -1) break; //如果输入-1,则结束循环
if(age < 16 || age > 30) //如果年龄不在16到30之间,输出错误信息
{
printf("年龄必须在16到30之间,请重新输入\n");
continue; //重新输入年龄
}
index = age - 16; //计算年龄对应的索引
count[index]++; //将对应的计数器加1
}
printf("各年龄段人数统计结果如下:\n");
for(int i = 0; i < 15; i++) //遍历计数器数组,输出每个年龄段的人数
{
printf("%d岁:%d人\n", i + 16, count[i]);
}
return 0;
}
在程序中,我们使用了continue语句来实现重新输入年龄的功能。当输入的年龄不在16到30之间时,程序会输出错误提示信息,然后执行continue语句,回到while循环的开头,要求重新输入年龄。这样可以有效避免输入非法年龄导致程序出错的情况。
另外,我们在定义计数器数组时,将其初始化为0。这是因为在计数之前,数组中的元素值都是未知的,需要将其清零以保证计数的准确性。
最后,我们使用了for循环遍历计数器数组,输出每个年龄段的人数。在输出时,我们使用了i+16来表示年龄,这是因为数组下标为0到14对应的年龄分别为16到30岁。
阅读全文