C语言功课求指点,得到了一个runrime error

C语言作业求指点,得到了一个runrime error
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

char **input;
int i,j,n=0;

void sort()
{
char temp[99];
for(j=0;j<=n;j++)
for(i=0;i<=n-j-1;i++)
{
if(strcmp(input[i],input[i+1])>0)
{
strcpy(temp,input[i]);
strcpy(input[i],input[i+1]);
strcpy(input[i+1],temp);
}
}
}

int main()
{
scanf("%d", &n);

input = (char**)malloc(sizeof(char*)*n);
if(input == NULL)
exit(0);

for(i=0; i<=n;i++)
{
input[i]=(char*)malloc(sizeof(char)*99);
if(input[i]==NULL)
exit(0);
}

for(i=0;i<=n;i++)

gets(input[i]);
    }

sort();

for(i=0;i<=n;i++)
puts(input[i]);

for(i=0;i<=n;i++)
free(input[i]);
input=NULL;

return 0;
}

提交到学校的OJ的时候得到了这个error,求帮忙解决。跪谢。
Runtime Error:[ERROR] A Not allowed system call: runid:4694 callid:146
作业 c 语言

------解决方案--------------------
int main()
{
scanf("%d", &n);

input = (char**)malloc(sizeof(char*)*n);//<<<只分配了n个指针
if(input == NULL)
exit(0);

for(i=0; i<=n;i++) //<<<第一个元素是下标0,第n个元素是下标n-1,下标i==n时却是在操作第n+1个元素
{
input[i]=(char*)malloc(sizeof(char)*99);//<<<当i==n时,超界了 访问input[n]是非法的
if(input[i]==NULL)
exit(0);
}


------解决方案--------------------
for(i=0; i<=n;i++) 改为 for(i=0; i< n;i++) 就好了咯