c++指针问题.。。。。。

c++
已知有一维数组{20,31,43,78,9,18,23,76,92,52},定义一级指针变量操作该一维数组,计算其所有元素的最大值和平均值,并输出,此外请用一根指针指向数组中的最大值,并输出这个指针和数组指针的差值

#include <iostream>
using namespace std;
int main()
{
    int a[10] ={20,31,43,78,9,18,23,76,92,52};
    int *p = a,*q = 0;
    int sum = 0,max = 0;
    for(int i=0;i<10;i++)
    {
         sum += *(p+i);
         if(i==0 || max < *(p+i))
         {
              max = *(p+i);
              q = p+i;
         }
    }
    cout<<"max="<<max<<endl;
    cout<<"avg="<<sum/10.0<<endl;
    cout<<"diff="<<q-p<<endl;
  }