【发布时间】:2014-03-06 21:11:12
【问题描述】:
我有一个从 0 到 100 的年龄数组。你一直输入年龄,直到输入哨兵数据(-99)。
然后我需要计算每个年龄出现的次数。
示例输出:
5岁的人数是3
8岁的人数是1
9岁的人数是1
10岁的人数是1
17岁的人数是1
20岁的人数是2
100岁的人数是1
但是,当我这样做时,我的输出是这样的:
5 岁的人数是 3
10岁的人数是1
100岁的人数是1
20岁的人数是2
5岁的人数是3
8岁的人数是1
20岁的人数是2
5岁的人数是3
9岁的人数是1
17岁的人数是1
我需要修复它,使其只显示 5 一次,等等。
这是我的代码:
#include <iostream>
using namespace std;
const int MAXSIZE = 100;
int ages[MAXSIZE];
int findNumOfAges(int ages[], int pos, int i);
int main()
{
int pos = 0;
int age;
for(int count = 0; count < MAXSIZE; count++)
{
ages[count] = 0;
}
do
{
cout << "Please input an age from one to 100, put -99 to stop." << endl;
cin >> age;
if (age >=0 && age <=100)
{
ages[pos] = age;
}
pos++;
}while(age != -99);
for(int i = 0; i < pos; i++)
{
int numOfAges;
numOfAges = findNumOfAges(ages, pos, i);
cout << "The number of people age " << ages[i] << " is " << numOfAges << endl;
}
}
int findNumOfAges(int ages[], int pos, int i)
{
int numOfAges = 0;
for(int j = 0; j < pos; j++)
{
if(ages[i] == ages[j])
{
numOfAges += 1;
}
}
return numOfAges;
}
【问题讨论】:
-
一定要用数组吗?你可以改用 STL 容器吗?
-
是的,它必须使用数组
-
无需存储所有年龄,只需为每个可能的年龄设置一组计数器,并为每个输入的年龄设置适当的计数器...