我有一个程序想要动态分配一个数组,该数组由用户通过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初始化数组,如果不初始化,就无法使它工作。我希望在必要时增加它。
谢谢:)
答案 0 :(得分:1)
建议的程序中的错误/偏差:
main(argc,*argv[])
而不是main()
。要进行动态分配,您需要malloc/calloc
,而不是使用静态数组。
您的代码表明您不清楚排序的概念,请将该程序放在一边,先用笔和纸将其清除。