请教一下大佬一道C++编程哪里出错了

程序如下:
//输入数组,判断出数组中长度最长的一个并输出长度为多少; 

#include
//#include
using namespace std;
const int m=5;            //数组大小 
int strlen(char a)        //数组元素长度计算 
{
int k;
k=sizeof(a)/2;       //char型所以除2 
return k; 

int main()
{
char a[m];
int *p,i,j,n;
cout<<"Please input the number:";
for(i=0;i {
cin>>a[i];
}
n=strlen(a[0]);
for(j=1;j<i;j++)    //判断大小 
{

  if(n   {
  n=strlen(a[j]);
 }
 else if(n>strlen(a[j]))
 {
  n=strlen(a[0]);
 }
    }
    cout<<a[j]<<endl<<n;
    return 0;
 } 
题比较简单,就是想知道我在哪里出错了,谢谢!!
结果没有显示最长长度的数组元素和长度

int strlen(char a) //数组元素长度计算
{
int k;
k=sizeof(a)/2; //char型所以除2
return k;
}
这个不对,应该是
int strlen(char * c)
{
int i = 0;
while (*c)
{
i++;
c++;
}
return i ;
}

char a[5];这个数组是一个字符数组不是字符串数组;应该是char *a[5]