procoes 2022-10-20 21:46 采纳率: 61.5%
浏览 4
已结题

不知道为啥输出频率最高区间的几个数字不对

img


#include<iostream>
using namespace std;
int main()
{
    int n;
    cin>>n;
    int b[1000]={0};
    for(int i=0;i<=n-1;i++)
        {cin>>b[i];}

    int a[5]={0};

    for(int i=0;i<=n-1;i++)
    { if(b[i]/10==10||b[i]/10==9) a[0]++;
    else if(b[i]/10==8)  a[1]++;
    else if(b[i]/10==7) a[2]++;
    else if(b[i]/10==6) a[3]++;
    else if(b[i]/10==5||b[i]/10==4||b[i]/10==3||b[i]/10==2||b[i]/10==1||b[i]/10==0) a[4]++;
    }
    for(int i=0;i<=4;i++)
       {if(i<=3)
           cout<<a[i];
           else cout<<a[i]<<'\n';
       }

     int maxa=0;
        for(int i=0;i<=4;i++)
        {
            maxa=max(maxa,a[i]);
        }
        cout<<maxa<<endl;

       if(maxa==0)
        {for(int i=0;i<=n-1;i++)
            {if(b[i]/10==10||b[i]/10==9) cout<<b[i];}
        }
       else if(maxa==1)
        {for(int i=0;i<=n-1;i++)
            {if(b[i]/10==8) cout<<b[i];}
        }
       else if(maxa==2)0
         {for(int i=0;i<=n-1;i++)
            {if(b[i]/10==7) cout<<b[i];}
        }
        else if(maxa==3)
        {for(int i=0;i<=n-1;i++)
            {if(b[i]/10==6) cout<<b[i];}
        }
        else if(maxa==4)
        {for(int i=0;i<=n-1;i++)
            {if(b[i]/10==5||b[i]/10==4||b[i]/10==3||b[i]/10==2||b[i]/10==1||b[i]/10==0) cout<<b[i];}
        }
}

img


为啥输出80的数字的时候输出不对 输出成60几了 是哪里有问题 代码要怎么改进

  • 写回答

1条回答 默认 最新

  • it_hao528 2022-10-20 23:00
    关注

    1、输出的第一行个数应该添加空格
    2、最后一行是要输出分数最多的分数段的分数,你是直接用的最多的分段分数的个数来当下标了
    3、最后一行输出是要按分数从高到低排序的,你没有排序
    最后参考代码如下:

    int main() {
        int n;
        cin >> n;
        int b[1000] = {0};
        for (int i = 0; i < n; i++) {
            cin >> b[i];
        }
        // 排序
        for (int i = 0; i < n - 1; i++) {
            for (int j = i + 1; j < n; j++) {
                if (b[i] < b[j]) {
                    int t = b[i];
                    b[i] = b[j];
                    b[j] = t;
                }
            }
        }
        int a[5] = {0};
        for (int i = 0; i < n; i++) {
            if (b[i] >= 90 && b[i] <= 100) {
                a[0]++;
            } else if (b[i] >= 80 && b[i] < 90) {
                a[1]++;
            } else if (b[i] >= 70 && b[i] < 80) {
                a[2]++;
            } else if (b[i] >= 60 && b[i] < 70) {
                a[3]++;
            } else if (b[i] >= 0 && b[i] < 60) {
                a[4]++;
            }
        }
        int maxa = 0;
        int maxIndex = 0;
        for (int i = 0; i < 5; i++) {
            if (a[i] >= maxa) {
                maxa = a[i];
                maxIndex = i;
            }
            if (i == 4) {
                cout << a[i] << endl;
            } else {
                cout << a[i] << " ";
            }
        }
        cout << maxa << endl;
        // 找分数个数最多的分数段的下标的起始下标
        int startIndex = 0;
        for (int i = 0; i < maxIndex; i++) {
            startIndex += a[i];
        }
        for (int i = 0; i < maxa; i++) {
            if (i == maxa - 1) {
                cout << b[i + startIndex] << endl;
            } else {
                cout << b[i + startIndex] << " ";
            }
        }
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月29日
  • 已采纳回答 10月21日
  • 创建了问题 10月20日

悬赏问题

  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应
  • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
  • ¥100 连续两帧图像高速减法
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊