用c语言编写,从键盘输入十个整数,利用动态分配内存的方式给这些整

2025-03-24 16:55:32
推荐回答(3个)
回答1:

#include 
#include 

int main(void)
{
int *a=NULL;
int i;
int temp=0;
a=malloc(sizeof(int)*10);/*动态创建一个有10个int元素的数组*/

if (a==NULL) { /*a==NULL表示空间分配失败*/
fprintf(stderr,"MEMORY ERROR");
return -1;
}

printf("输入10个数:");
for(i=0;i<10;i++)
{
    scanf("%d  ",a[i]);
}

for (i=0;i<10;i++) {
     for (int j=0;j <9-i; j++){
          if (a[j]>a[j+1]){
               temp=a[j+1];
               a[j+1]=a[j];
               a[j]=temp;
           }
    }/*对数组进行操作*/
}
printf("排序后输出:");
for(i=0;i<10;i++)
{
    printf("%d  ",a[i]);
}

free(a);/*动态分配的空间需要用free()函数释放*/
return 0;
}

回答2:

做链表,然后插入或者冒泡排序。

回答3:

两次连续的malloc并不保证地址的连续,只有一次malloc分配多个,才能保证内存地址的连续性。
这个在malloc的官方说明里面有提到,作为内存管理的优化设计,是寻找最合理的空间大小去分配,因为空闲内存是不连续的,如果分配的大小刚好是某个空闲区块大小,则优先。