请问这个我错在哪里了

img


#include<stdio.h>
#include<math.h>
int main() {
int n, v, i, num, b, c, a[1000];
i = num = b = 0;
scanf("%d%d", &n, &v);
for (i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
c = a[0];
for (i = 1; i < n; i++) {
if (a[i] > a[i + 1]) {
c = a[i];
a[i] = a[i + 1];
a[i + 1] = c;
}
}

for (i = 0; i < n; i++) {
    num += a[i];
    if (num <= v) { b++; }
    else break;

}
printf("%d\n", b);
return 0;

}

排序那里要两个循环

#include<stdio.h>
#include<math.h>
int main()
{
    int n, v, i,j, num, b, c, a[1000];
    i = num = b = 0;
    scanf("%d%d", &n, &v);
    for (i = 0; i < n; i++)
    {
        scanf("%d", &a[i]);
    }
    for (i = 0; i < n-1; i++)//排序 
    {
        for (j = 0; j < n-i-1; j++)
        {
            if (a[j] > a[j + 1])
            {
                c = a[j];
                a[j] = a[j + 1];
                a[j + 1] = c;
            }
        }
    }
    for (i = 0; i < n; i++)
    {
        num += a[i];
        if (num <= v)
        {
            b++;
        }
        else break;
    }
    printf("%d\n", b);
    return 0;
}