PTA:分段统计

2023-12-18 23:33:32

题干

给定各个分段统计的区间端点和待统计的一组数据,请统计每区间中数据的个数及其占比百分数。

输入格式:
第一行为一个正整数n(0<n<=100),表示分段区间的端点数,n个端点构成n-1个区间。其后的n个整数按升序给出,分别表示区间的端点值,相邻的两个端点构成一个“区间”,每个区间均为左闭右开区间。
接下来的一行中有一个正整数k(0<k<=1000),表示待统计数据的个数。
其后一行有k个正整数,表示待统计的数据。
数据之间空格分隔。

输出格式:
输出每个区间的数据个数和占比百分数。
请注意:
(1)最后一个区间也是左闭右开区间。
(2)每行输出中的第1个逗号为半角字符,第2个逗号为全角字符,左右括号为半角字符。

输入样例:
6
0 60 70 80 90 100
20
0 59 60 61 65 69 70 70 71 72 75 78 79 80 81 83 85 89 90 100
输出样例:
区间[0,60)有2个数据,占比10.00%
区间[60,70)有4个数据,占比20.00%
区间[70,80)有7个数据,占比35.00%
区间[80,90)有5个数据,占比25.00%
区间[90,100)有1个数据,占比5.00%

解答过程

#include <stdio.h>
int main() {
    int n, k;
    scanf("%d", &n);
    int intervals[n];
    for (int i = 0; i < n; ++i) {
        scanf("%d", &intervals[i]);
    }
    scanf("%d", &k);
    int data[k];
    for (int i = 0; i < k; ++i) {
        scanf("%d", &data[i]);
    }
    int counts[n];
    for (int i = 0; i < n; ++i) {
        counts[i] = 0;
    }
    for (int i = 0; i < k; ++i) {
        for (int j = 0; j < n - 1; ++j) {
            if (data[i] >= intervals[j] && data[i] < intervals[j + 1]) {
                counts[j]++;
                break;
            }
        }
    }
    for (int i = 0; i < n - 1; ++i) {
        float percentage = (float)counts[i] / k * 100;
        printf("区间[%d,%d)有%d个数据,占比%.2f%%\n", intervals[i], intervals[i + 1], counts[i], percentage);
    }
    return 0;
}

文章来源:https://blog.csdn.net/WeiYan_2022/article/details/135073359
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。