新手有关问题:已知一个排列有序的数组,输入一个数并插入数组中。仍保持数组的排列有序

新手问题:已知一个排列有序的数组,输入一个数并插入数组中。仍保持数组的排列有序!
如题,请各位朋友帮忙看下下面的程序错在哪。
在TC200运行,输入数字:7,运行结果27476789。。
C/C++ code

#include<stdio.h>
main()
{
 int a[10]={2,4,6,,8,10,12}  /*定义一个递增的数组*/
 int i,j=0,k,l,z;
 
 printf("please input a integer:\n");
 scanf("%d",&i);

 while(a[j]!='\0')   /*数组中的元素个数*/ 
 j++;
 
 for(k=0;k<j;k++)    /*关键是这个循环,是循环出错了吗?*/
 {
  if(i>a[k])
  {
   for(l+j-1;l>k;l--)
    a[l+1]=a[j];
  }   
 }
   a[l+1]=i;  /*插入*/
  for(z=0;z<=j;z++)
  printf("%d",a[z]);
}


用了很多变量。。可否减少变量的数量?

------解决方案--------------------
C/C++ code
 

#include <stdio.h>
int main()
{
  int a[10]={2,4,6,8,10,12}; /*定义一个递增的数组*/
  int i,j=0,k,l,z;

  printf("please input a integer:\n");
  scanf("%d",&i);

  while(a[j] != 0)    /*数组中的元素个数, 这里有问题,如果含有0就有问题了*/
    j++;

  for(k=0;k <j;k++)  /*关键是这个循环,是循环出错了吗?*/
  {
    if(i < a[k])
    {
      for(l=j-1;l >= k; l--)
        a[l+1] = a[l];

      break;
    } 
  }
  a[k] = i;  /*插入*/
  for(z=0;z <=j;z++)
    printf("%d ",a[z]);

  return 0;
}


------解决方案--------------------
楼主思路好乱啊
C/C++ code

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) 
{
 int a[10]={2,4,6,8,10,12};
 int i,j,k;
 
 printf("please input a integer:\n");
 scanf("%d",&i);

 for (k = 0; k < 6; k++)
     if (i < a[k]) break;/*找到插入位置*/
 for (j = 6; j >= k; j--)/*元素后移*/
     a[j+1] = a[j];  
 a[k] = i;  /*插入*/
 for (k = 0; k < 6+1; k++)
     printf("%d ",a[k]);
 
 system("PAUSE");
 return 0;
}