有关数组的有关问题

有关数组的问题
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"



int main()
{
int max,min,nmax,nmin,i,p;
int a[10]={0};

for(i=0;i<10;i++)
{
scanf(" %d",&a[i]);
if(a[i]>a[i+1])
{
max = a[i];
nmax = i;
}
else
{
min = a[i];
nmin = i;
}
}


p=nmin;
a[nmin]=a[nmax];
a[nmax]=a[p];

for(i=0;i<10;i++)
{
printf(" %d",a[i]);
}

system("pause");

return 0;
}

可以编译,运行时输入十个数字之后就出现了问题,提示什么写入位置0x33632d44 发生访问冲突,这个程序是想找出十个数里的最大数和最小数,交换两个数的位置并且输出调整后的数组内容
------解决思路----------------------
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"



int main()
{
    int max,min,nmax,nmin,i,p;
    int a[10]={0};

    for(i=0;i<10;i++)
    {
        scanf(" %d",&a[i]);
     }
     for(i=0;i<9;i++)
    {if(a[i]>a[i+1])
        {
            max = a[i];
            nmax = i;
        }
        else
        {
            min = a[i];
            nmin = i;
        }
}
    p=nmin;
    a[nmin]=a[nmax];
    a[nmax]=a[p];

    for(i=0;i<10;i++)
    {
        printf(" %d",a[i]);
    }

    system("pause");
    
    return 0;
}
if(a[i]>a[i+1])
        {
            max = a[i];
            nmax = i;
        }
当i=9时 数组越界了
------解决思路----------------------
输入第10个数时 i = 9 ,a[i + 1]越界了
------解决思路----------------------
第一步,输入a[0],比较a[0]和a[1]
第二步,输入a[1],比较a[1]和a[2]
第三步,……

哪里有问题,只要去找,就不难找到
如果这么简单的问题都要别人帮你找,那楼主最好希望将来自己的工作也由别人代做
------解决思路----------------------
学习调试技巧是程序员的必经之路.共勉吧.
------解决思路----------------------
长度为10的数组,它的索引为0~9,这是C初学者经常没有注意到的地方。