本题要求统计一个整型序列中出现次数最多的整数及其出现次数

输入格式: 输入在一行中给出序列中整数个数N(0测试用例:10 3 2 -1 5 3 4 3 0 3 2
输出样例:3 4
我的代码:

#include 

int main(void) {
   int a[1000]={0};
   int flag[1000]={0};
   int copy[1000]={0};
   int num,i,j,temp=0,max=0;
   scanf("%d",&num);
for(i=0;i"%d",&a[i]);
for(i=0;i-1;i++){for(j=0;j-1;j++)
{if(a[j]1]){
    temp=a[j];
    a[j]=a[j+1];
    a[j+1]=temp;
}}}
for(i=0,j=0;i1])flag[j]++;
else {copy[j]=a[i];j++;}
}
for(j=0;j-1;j++){
if(flag[j]1])max=j+1;
}printf("%d %d",copy[max],flag[max]+1);
}

提示部分错误,sample等价有负数的答案错误
求问为什么会这样或者什么数据会有错误的答案

其实没有必要像你写的这么复杂。我写了一版,供你参考。 如果有帮助记得采纳。

#include <stdio.h>
#include <string.h>

int main() {
    int n;
    scanf("%d", &n);
    int a[n];
    int flag[n];
    memset(flag, 1, sizeof(flag));
    for (int i = 0; i < n; i++) {
        scanf("%d", &a[i]);
    }
    int count = 0, max_num = 0;
    for (int i = 0 ; i < n; i++) {
        if (!flag[i]) {
            continue;
        }
        int c = 0;
        for (int j = i; j < n; j++) {
            if (a[i] == a[j]) {
                flag[j] = 0;
                c++;
            }

        }
        if (c > count) {
            count = c;
            max_num = a[i];
        }
    }
    printf("%d %d", max_num, count);
    return 0;
}


#include <stdio.h>

int main()
{
    int n[1000][2] = {0};
    int num, i, j, temp = 0, max = 0;
    scanf("%d", &num);

    for (i = 0; i < num; i++)
    {
        scanf("%d", &temp);
        for (j = 0; j < i; j++)
        {
            if (n[j][0] == temp)
            {
                n[j][1]++;
                break;
            }
        }
        if (i == j)
        {
            n[i][0] = temp;
            n[i][1] = 1;
        }
    }
    max = 0;
    temp = n[0][1];
    for (i = 1; i < num; i++)
    {
        if (n[i][1] > temp)
            max = i;
    }

    printf("%d %d", n[max][0], n[max][1]);
}