为啥这个求n个数的最大值的代码输出结果是一串很大的数字

为什么这个求n个数的最大值的代码输出结果是一串很大的数字
#include<iostream>
using namespace std;
int max(int num1,int num2)
{
int result;
if(num1>num2)
result=num1;
else
result=num2;

return result;
}
int main()
{
int a[1000],N,val;
cin>>N;
cin>>a[N];
for(int i=0;i<N;i++)
{
val=max(a[i],a[i+1]);
a[i+1]=val;
}
cout<<val<<endl;
return 0;
}
------解决思路----------------------
你逻辑错误了,你明明仅仅指定了一个:cin>>N;cin>>a[N];而a[0]到a[n-1]的值都没有输入。
而且假如你输入的N超过了a数组的范围,就会导致崩溃。
------解决思路----------------------
#include<iostream>
using namespace std;
#define SIZE 1000
int max(int num1,int num2)
{
int result;
if(num1>num2)
result=num1;
else
result=num2;

return result;
}
int main()
{
int a[SIZE],N,val = 0;
cin>>N;
int i = 0;
if(N > SIZE)
{
cout<<"输入超出范围"<<endl;
return -1;
}
for(;i< N ;i++ )
{
cin>>a[i];
}
for(i=0;i<N;i++)
{
val=max(a[i],val);
}
cout<<val<<endl;
return 0;

------解决思路----------------------
仅供参考
/*************************************************************************
    > File Name: max.cpp
    > Author: 傻李
    > Mail: hellojukay@gmail.com 
    > Created Time: 2014年11月20日 星期四 17时34分52秒
 ************************************************************************/

#include<iostream>
#include<vector>
using namespace std;
int main()
{
int max;
int n;
vector<int> v;
int tmp;
cin >> n;
while(n--)
{
cin >> tmp;
v.push_back(tmp);
}
max = v[0];
for(auto a : v)
{
if(a > max)
max = a;
}
cout << max << endl;
return 0;

}