c语言中for循环中变量范围

输入在第一行先给出非负整数N(<10);第二行给出N个从小到大排好顺序的整数;第三行给出一个整数X。
输出格式:
在一行内输出将X插入后仍然从小到大有序的整数序列,每个数字后面有一个空格。


#include <stdio.h>
int main()
 {
    int a[10],n,x,j,i;
   scanf("%d",&n);
   for(i=0;i<n;i++)
     scanf("%d ",&a[i]);
   scanf("%d",&x);
   for(i=0;i<n;i++)
        if(x<a[i]) break;
   if(i<n)

   {for(j=n-1;j>=i;j--)

         a[j+1]=a[j];
     a[i]=x;
   }
     else a[n]=x;
   for(i=0;i<=n;i++)
    printf("%d ",a[i]);
    return 0;
 }

第二个for循环已经得出了i必然小于n,那它下面的if判断还有什么意义。

有可能最后你输入得x最大,i就等于n,到了输入有序数组得下一个位

img