c++程序运行停止工作,编译无错。大神们见见

c++程序运行停止工作,编译无错。大神们看看
#include<stdlib.h>
#include<iostream.h>
void sortArray(int[],int);
void displayArray(int[],int);
int main()
{
int *a;
int i,num;
//输入要排序的整数数目
cout<<"please enter the number of integers:";
cin>>num;
//动态分配数组,以保存输入的数
a-(int *)malloc(sizeof(int)*num);
if(a==NULL)
{
cout<<"malloc error!exit."<<endl;
return 0;
}
for(i=0;i<num;i++)
cin>>a[i];
//调用函数sortArray对a进行排序
sortArray(a,num);
//输出a排序后的结果
cout<<"After sorting:"<<endl;
for(i=0;i<num;i++)
cout<<a[i]<<"";
cout<<endl;
//释放动态分配的空间
free(a);
return 0;
}
void sortArray(int b[],int len)
{
for(int pass=0;pass<len-1;pass++)
for(int i=pass+1;i<len-1;i++)
if(b[pass]>b[i])
{
int hold;
//交换
hold=b[pass];
b[pass]=b[i];
b[i]=hold;
}
}

------解决思路----------------------
引用:
#include<stdio.h>
void main()
{
int i,j,x=0,y=2,a[5][5]={0};
for(i=1;i<=25;i++)
{
a[x][y]=i;
if(x==0&&y==4)
{
x=x+1;
continue;
}
if(x==0)
x=4;
else
x--;
if(x==4)
y=0;
else
y++;
if(a[x][y]!=0)
{
x=x+2;
y=y-1;

}
}
for(i=0;i<=4;i++)
{
for(j=0;j<=4;j++)
         printf("%3d",a[i][j]);
 printf("\n");

}


}
您在看看这个


帮你试过,没问题,可以编译运行
------解决思路----------------------
是a=不是a-  还有排序算法的下标还没搞清 最后i是等于len-1的
------解决思路----------------------
你确定把上一个程序关了吗?看一下任务管理器……