C++锦囊包(待更新)

在这里插入图片描述

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、当一个人先从自己的内心开始奋斗,他就是个有价值的人。

待更新

猜你喜欢

转载自blog.csdn.net/SoftpaseFar/article/details/106356689