找找错误在哪里,我实在看不出来

img


这个我知道我写麻烦了,但是我想把这个代码的错误找出来,实在想不出有什么问题,帮忙看看谢谢

img

两个问题,数组s[] 太小了,最后的排序不需要,输出最后一个即是题目要求的最大值,修改如下,供参考:

#include <stdio.h>
int main()
{
    int n, i, j, k, s[100000] = { 0 }, m = 0, a1, a2, a3; //修改
    scanf("%d", &n);
    for (i = 0; i <= n; i++)
    {
        a1 = i;
        for (j = 0; j <= n; j++)
        {
            a2 = j;
            if ((a1 + a2) % 2 == 0)
            {
                for (k = 0; k <= n; k++)
                {
                    a3 = k;
                    if ((a2 + a3) % 3 == 0 && (a1 + a2 + a3) % 5 == 0)
                    {
                        s[m] = a1 + a2 + a3;
                        m++;
                    }
                }
            }
        }
    }
    //for (int l = 0; l < m - 1; l++) 修改
    //{
    //    if (s[l] > s[l + 1])
    //    {
    //        int x = s[l + 1]; s[l + 1] = s[l]; s[l] = x;
    //    }
    //}
    printf("%d", s[m - 1]);
    return 0;
}

#include <stdio.h>

int main()
{
int n,i,j,k,s[1000]={0},m=0,a1,a2,a3;
scanf ("%d",&n);
for (i=0;i<=n;i++)
{
a1=i;
for (j=0;j<=n;j++)
{
a2=j;
if((a1+a2)%2==0)
{
for ( k=0;k<=n;k++)
{
a3=k;
if((a2+a3)%3==0&&(a1+a2+a3)%5==0)
{
s[m]=a1+a2+a3;
m++;
}
}
}
}
}
for (int l=0;l<m-1;l++)
{
if (s[l]>s[l+1])
{int x=s[l+1];s[l+1]=s[l];s[l]=x;}
}
printf ("%d",s[m-1]);
return 0;
}