一个数组问题。。我是初学者。有高人教教我啊!

来源:百度知道 编辑:UC知道 时间:2024/06/11 10:29:03
由键盘输入一个整数X,将X插入到有序整型数a中,使数组a仍然有序,然后输出数组a。已知int a[11]={1,5,9,10,16,21,27,35,46,60}

下面的程序是我自己写的,程序只能做到把输入的X按顺序插入到数组a中,但是插入进去以后数组a以后,数组a就少了一个元素!麻烦高人帮忙看看!

#include "stdio.h"
#include "conio.h"

main()
{
int i,j,t,a[11]={1,5,9,10,16,21,27,35,46,60,};
printf("input x numbers:\n");
for(i=2;i<12;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=0;j<11;j++) /*进行11次循环,实现12趟比较*/
for(i=0;i<11-j;i++) /*在每一趟中进行11-j次比较*/
if(a[i]>a[i+1]) /*相邻两个数比较*/
{
t=a[i];a[i]=a[i+1];a[i+1]=t;
}
printf("the sorted numbers:\n");
for(i=2;i<12;i++)
printf("%d\ ",a[i]);
}
int i,j,t,a[11]={1,5,9,10,16,21,27,35,46,60,};
改成
int i,j,t,a[]={1,5,9,10,16,21,27,35,46,60,}; 呢?

不好使啊!

典型的插入排序问题
1. 数组长度不够, 插入一个数后, 数组必然增大,因此申请时数组应适当增大, 或使用动态数组或链表
2. 从后向前比较会好一点, 如果当前的数组元素大于X,则将此元素向后移动一位, 否则,X插入当前位置的后面一个位置
3. 不是插入一个整数么? 怎么变成插入12个数,而且还放在数组a中, a中原来的数不都丢了么

int i,j,t,a[11]={1,5,9,10,16,21,27,35,46,60,};
改成
int i,j,t,a[]={1,5,9,10,16,21,27,35,46,60,}; 呢?