int ispf(int num)
{
    int i;
    for(i=1;i<num;i++)
    {
        if(i*i==num)
           return 1;
    }
    return 0;
}

int* deletenum(int *arr,int b,int len)  // //b是要删除的数组里面的元素,len是数组的长度
{
    int i=0,j=0;
    for(i=0;i<len;i++)
    {
        if(arr[i]==b)
        {
             for(j=i;j<len-1;j++)
             {
                 arr[j]=arr[j+1];
                 i--;
             }
             len-=1;   //以免重复输出最后一个数
        }
    }
    return arr;
}

int main() {
    int n;
    scanf("%d",&n);
    int *arr=(int *)malloc(n*sizeof(int));
    int i,max;
    for(i=0;i<n;i++)
       scanf("%d",&arr[i]);

   for(i=0;i<n;i++)
   {
      max=arr[0];
       if(ispf(arr[i]))  //如果这个数是平方数那么我想把他从数组里面删除,剩下的不是平方数的比大小
        {
             int b=arr[i];  //把这个平方数给b
             deletenum(arr,b,n);  //b是要删除的数组里面的元素,n是数组的长度
        }
    if(arr[i]>max)
       max=arr[i];
   }
   printf("%d\n",max);
}

不知道问题出在哪里了,有用例没通过,但是我感觉没毛病啊!