cin>>a[maxn];这句有问题,你访问了一个非法的地址。你定义的int a[30];那么合法下标是0~29。a[30]根本不存在。你可以用for循环一个个读入要输入的数据。
我没有见过向数组输入一行代码就搞定的cin>>a[maxn];这里肯定不对
读取的时候 加个循环
cin>>a[maxn];
这里应该用个循环
int k = 0;while(k{ cin>>*(a+k); k++;}