按规则排序问题 交过出现乱码如何解决

写一函数,根据成绩,对包含有n个学生成绩的数组进行排序。

输入输出示例:

【输入】80 76 92 83 100 70 60【输出】60 70 76 80 83 92 100

【输入】-1【输出】invalid input

代码如下


```c++
#include <stdio.h>
using namespace std;
#define N 7

int main() {
    int t;
    int array[N];

    for (int a = 0; a < N; a++) {
        scanf_s("%d", &array[a]);
        if (array[a] <= 0) 
        {
            printf("invalid input");
        }
        else
            for (int i = 0; i < N; i++) {

                for (int j = i + 1; j < N; j++) {

                    if (array[i] > array[j]) {
                        t = array[i];
                        array[i] = array[j];
                        array[j] = t;
                    }
                }
            }
    }




    for (int c = 0; c < N; c++) {

        printf("%3d ", array[c]);
    }
    return 0;
}



输出结果为

输入
11
22
33
44
55
6
6
-858993460 -858993460 -858993460   6   6  11  33

如何解决?






终于看明白了。你这个都还没输入好,就else里面开始比较了,这样也不是不行,但是没输入后的,里面个数就不N了

是否想实现这种功能,供参考:

#include <stdio.h>
#define N 50
int main() {
    int t,k,i=0;
    int array[N];
    while(1) {
        t = scanf("%d", &array[i]);
        if (t != 1 || (getchar())==EOF)//ctrl + z 结束输入
            break;
        else if (array[i] < 0){
            printf("invalid input\n");
            continue;
        }
        else{
            if(i > 0){
               for(k=0;k < i;k++){
                   if(array[k] > array[i]){
                      t = array[k];
                      array[k] = array[i];
                      array[i] = t;
                   }
               }
            }
        }
        i++;
    }
    for ( k = 0; k < i; k++) {

        printf("%3d ", array[k]);
    }
    return 0;
}

#include <stdio.h>
using namespace std;
int N= 7;

int main()
{
    int t;
    int array[N];
int a=0;
char ch;
        while(scanf("%d", &array[a++])==1&&(ch=getchar())!='\n')
        {
        }
        N=a;
    for (int a = 0; a < N; a++)
    {
        if (array[a] <= 0)
        {
            printf("invalid input");
        }
    }
    for (int i = 0; i < N; i++)
    {

        for (int j = i + 1; j < N; j++)
        {

            if (array[i] > array[j])
            {
                t = array[i];
                array[i] = array[j];
                array[j] = t;
            }
        }
    }
    for (int c = 0; c < N; c++)
    {
        if(array[c]>=0)
        printf("%3d ", array[c]);
    }
    return 0;
}