sos 哪里写错了啊?

本题目要求读入若干整数(最少1个不超过4个),然后按从小到大的顺序输出。

输入格式:
最少1个不超过4个整数,以空格分隔。

输出格式:
以一个空格分隔输出所有排序后的数。

输入样例:
18
输出样例:
18
输入样例:
18 15
输出样例:
15 18
输入样例:
1 8 6
输出样例:
1 6 8
输入样例:
11 28 5 9
输出样例:
5 9 11 28
本题目要求读入若干整数(最少1个不超过4个),然后按从小到大的顺序输出。

输入格式:
最少1个不超过4个整数,以空格分隔。

输出格式:
以一个空格分隔输出所有排序后的数。

输入样例:
18
输出样例:
18
输入样例:
18 15
输出样例:
15 18
输入样例:
1 8 6
输出样例:
1 6 8
输入样例:
11 28 5 9
输出样例:
5 9 11 28

img

img

输入只能到a[3],超过a[3]就越界了,因为定义a[4]就只定义了a[0],a[1],a[2],a[3],没有a[4]

修改完善如下,供参考:

#include <stdio.h>
int main()
{
    int a[4] = { 0 }, i, j, k, n;
    for (i = 0; i < 4; ) {       //输入
        scanf("%d", &a[i++]);
        if ((getchar()) == '\n') break;
    }
    for (n = i, i = 0; i < n - 1; i++) {  //排序
        for (j = 0; j < n - 1 - i; j++) {
            if (a[j] > a[j + 1]) {
                k = a[j]; a[j] = a[j + 1]; a[j + 1] = k;
            }
        }
    }
    for (i = 0; i < n; i++)  //输出
        printf(i == 0 ? "%d" : " %d", a[i]);
    return 0;
}

数组a[4],最大下标是3。你店面用a[4]就越界了