两个问题,数组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;
}