1、有了理想,有了目标,有了奋斗,才会在未来的旅途中走得更远。
问题描述
使用C++语言设计一个函数,该函数传入一个一维整型数组的数组名和数组的长度(数组中的元素值在[0,100]之间,具体数据自行给定),要求在函数内部统计出数据在[0,10],[11,20],[21,30],…,[91,100]等区间的分布情况。
解题思路
我们看一下[0,10],[11,20],[21,30],…,[91,100]区间的特点:
假设数组是arr,代表元素索引,则arr[i] / 10 便会落在区间0、1、2、3、4、5、6、7、8、9中的一个,这个数字正好是区间[0,10],[11,20],[21,30],…,[91,100]前半部分的首位数值,但是这里有特殊情况,就是10的倍数的时候,arr[i] / 10 会到下一个区间,因此我们只要把区间往前移动一个即可。最重要的是0最为特殊,因为0也是10的整数倍,但是0不需要移动空间,在判断是否是10的倍数时,把0要排除在外。
代码实现
#include <iostream>
using namespace std;
int res[10] = {0};
void statistic(int arr[], int n) {
for (int i = 0; i < n; i++) {
if ((arr[i] % 10 == 0) && (arr[i] != 0)) {
res[arr[i] / 10 - 1]++;
} else {
res[arr[i] / 10]++;
}
}
}
void show() {
for (int i = 0; i < 10; ++i) {
cout << res[i] << " ";
}
}
int main() {
int arr[32] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23, 24, 25, 26, 27, 28,
29, 30, 31};
statistic(arr, 32);
show();
return 0;
}
结果显示
2、当一个人先从自己的内心开始奋斗,他就是个有价值的人。
待更新