改了N多遍,编译会通过,运行始终不对,求大神帮助~

改了N多遍,编译能通过,运行始终不对,求大神帮助~~~
#include <stdio.h>
#include <stdlib.h>
void main()
{
int n,*p,i,j,m;
printf("***************************这个程序将对任意个整数排序!******************\n\n\n\n");
printf("请输入整数的个数:");
scanf("%d",&n);
p=(int * )calloc(n,sizeof(float));                                   //调用CALLOC函数
if(p==NULL)
{
printf("分配内存失败!");
exit(1);                                                       //分配失败时终止程序
}
printf("请输入这些整数:(每次输入一个数据后请按确认键)\n");
for(i=0;i<n;i++)
   scanf("%d",p+i);
/*冒泡排序法*/
for(i=0;i<n;i++)
{
for(j=0;j<n-i;j++)
if(*(p+j)>*(p+j+1))
{

*(p+j)=*(p+j+1);
*(p+j+1)=m;
m=*(p+j);
}
}
printf("这些数将从小到大的顺序输出:\n");
for(i=0;i<n;i++)
{
if(i%5==0)                                                      //每隔5个数换行
printf("\n");
printf("%8d",*(p+i));                      //为了整齐,每个数占8列。
}
printf("\n");
free(p);
                                                           //释放空间
getchar();getchar();
}
这是我的代码,哪位大神给看看怎么错了~~~感激不尽

------解决方案--------------------
运行正常
#include <stdio.h>
#include <stdlib.h>
void main()
{
int n,*p,i,j,m;
printf("***************************这个程序将对任意个整数排序!******************\n\n\n\n");
printf("请输入整数的个数:");
scanf("%d",&n);
p=(int * )calloc(n,sizeof(float));                                   
if(p==NULL)
{
printf("分配内存失败!");
exit(1);                                                       
}
printf("请输入这些整数:(每次输入一个数据后请按确认键)\n");
for(i=0;i<n;i++)
   scanf("%d",p+i);
/*冒泡排序法*/
for(i=0;i<n;i++)
{
for(j=0;j<n-i;j++)
if(*(p+j)>*(p+j+1))
{
m=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=m;
}
}
printf("这些数将从小到大的顺序输出:\n");
for(i=0;i<n;i++)
{
if(i%5==0)