C语言中动态分配内存问题
编写这样一个程序:在程序中输入数组大小n,通过动态分配内存函数malloc产生一个整型数组,接着输入该数组的n个元数,并使用一个函数对组数进行排序(从小到大,要求用选择法...
编写这样一个程序:在程序中输入数组大小n,通过动态分配内存函数malloc产生一个整型数组,接着输入该数组的n个元数,并使用一个函数对组数进行排序(从小到大,要求用选择法实现),并输出排序后的结果。最后用free函数释放动态申请的内存。
展开
1个回答
2014-03-26
展开全部
#include <stdio.h>
void px(int *k,int len);//函数声明
int main()
{
int i,n,x,*p,*q;
printf("请输入动态数组长度n\n");
scanf("%d",&n);
printf("请输入%d个数组元素\n",n);
q = p = (int*)malloc(n*sizeof(int));//申请动态数组
for(i=0; i<n; i++)//输入数组
{
printf("请输入第%d个元素\n",i+1);
scanf("%d",q);
q++;
}
px(p,n);//排序
//输出排序结果
q = p;
for(i=0; i<n; i++)
{
printf("%d ",*q);
q++;
}
free(p);//释放空间
getchar();
getchar();
}
void px(int *k,int len)//选择排序 小到大
{
int i,j,*min,temp;
for(i=0; i<len; i++)
{
min = k+i;
printf("min %d\n",*min);
for(j=i+1; j<len; j++)
{
if(*min > *(k+j))
{
min = k+j;
}
}
temp = *(k+i);
*(k+i) = *min;
*min = temp;
}
}
void px(int *k,int len);//函数声明
int main()
{
int i,n,x,*p,*q;
printf("请输入动态数组长度n\n");
scanf("%d",&n);
printf("请输入%d个数组元素\n",n);
q = p = (int*)malloc(n*sizeof(int));//申请动态数组
for(i=0; i<n; i++)//输入数组
{
printf("请输入第%d个元素\n",i+1);
scanf("%d",q);
q++;
}
px(p,n);//排序
//输出排序结果
q = p;
for(i=0; i<n; i++)
{
printf("%d ",*q);
q++;
}
free(p);//释放空间
getchar();
getchar();
}
void px(int *k,int len)//选择排序 小到大
{
int i,j,*min,temp;
for(i=0; i<len; i++)
{
min = k+i;
printf("min %d\n",*min);
for(j=i+1; j<len; j++)
{
if(*min > *(k+j))
{
min = k+j;
}
}
temp = *(k+i);
*(k+i) = *min;
*min = temp;
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询