关于仅在C编程中为数组,排序和数字分配内存的问题

时间:2018-09-15 18:00:14

标签: c arrays linux sorting

我有一个程序想要动态分配一个数组,该数组由用户通过Linux中的终端参数行填充。用户输入数字后,应该对数字数组进行排序。

#include <stdio.h>
#include <stdlib.h>

int main(){

    int i;
    int array[100];
    int count = 0;
    while(1){
        printf("please enter a number: \n");
        scanf("%d", &i);
        if(i == 0){
            for (int k = 0; k < count -1; k++) {
                    if(array[k] <= array[k + 1]){
                    int temp = array[k];
                    array[k] = array[k+1];
                    array[k+1] = temp;
                }
            }
            for (int j = 0; j < count; ++j)
            {
                printf("%d ", array[j]);
            }
            printf("\n");
            break;
        } else {
                array[count] = i;
                count++;
        }
    }       
}

仅当我输入从低到高的数字时才对数组排序,但是如果我输入从高到低的数字,例如。 4、3、2然后是1,它将打印2、3、1然后是4,而不是如果我以这种方式键入它时所执行的1,2,3,4。 我不想用100初始化数组,如果不初始化,就无法使它工作。我希望在必要时增加它。

谢谢:)

1 个答案:

答案 0 :(得分:1)

建议的程序中的错误/偏差:

  • 如前所述,您想使用命令行参数-您需要main(argc,*argv[])而不是main()
  • 要进行动态分配,您需要malloc/calloc,而不是使用静态数组。

  • 您的代码表明您不清楚排序的概念,请将该程序放在一边,先用笔和纸将其清除。