本帖最后由 jackz007 于 2019-4-12 23:34 编辑
动态数组在确定元素数量后,还需要使用 malloc() 为数组分配存储空间,楼主的问题出在缺少这个关键环节。#include <stdio.h>
#include <malloc.h>
main(void)
{
int k , * a , t , i , j ;
scanf("%d" , & k) ;
if((a = (int *) malloc(k * sizeof(int))) != NULL) { // 楼主少了动态分配内存的手续
for(i = 0 ; i < k ; i ++) scanf("%d" , & a[i]) ;
for(j = 0 ; j < k - 1 ; j ++) {
for(i = 0 ; i < k - 1 - j ; i ++) {
if(a[i] > a[i + 1]) {
t = a[i] ;
a[i] = a[i + 1] ;
a[i + 1] = t ;
}
}
}
printf("\n") ;
for(i = 0 ; i < k ; i ++) printf("%d " , a[i]) ;
printf("\n") ;
free(a) ; // 善始善终
} else {
fprintf(stderr , "error : failure of malloc()!\n") ;
}
}
|