C 语言: 把多个整数(比如3个)按大小顺序插入已排好序的数组中

想必大家都对 :把一个整数按大小顺序插入已排好序的数组中 这一题有所了解吧,我想把一个改成多个,思前想后还是没有出来,所以想请各位大虾帮忙。thank you very much!!!!
只有5分奖厉呀 还在试用期
main()
{
int i,j,p,q,s,n,a[11]={127,3,6,28,54,68,87,105,162,18};
for(i=0;i<10;i++)
{ p=i;q=a[i];
for(j=i+1;j<10;j++)
if(q<a[j]) {p=j;q=a[j];}
if(p!=i)
{
s=a[i];
a[i]=a[p];
a[p]=s;
}
printf("%d ",a[i]);
}
printf("\ninput number:\n");
scanf("%d",&n);
for(i=0;i<10;i++)
if(n>a[i])
{for(s=9;s>=i;s--) a[s+1]=a[s];
break;}
a[i]=n;
for(i=0;i<=10;i++)
printf("%d ",a[i]);
printf("\n");
}
请大家在这里修改好吗?

可以用调用函数做,先编一个函数完成:【把一个整数按大小顺序插入已排好序的数组中】的功能,在加一个for循环,循环调用此函数就可以求多个数的排序。
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-07-30
辛苦半天看你的了??
main()
{
int i,j,p,q,s,n,a[11]={127,3,6,28,54,68,87,105,162,18};
for(i=0;i<10;i++)
{ p=i;q=a[i];
for(j=i+1;j<10;j++)//////这个循环语句应该把两个if语句包含,否则只 会把最大的数跟它交换,而没有把所有大数交换!明白吗?
{
if(q<a[j]) {p=j;q=a[j];}
if(p!=i)
{
s=a[i];
a[i]=a[p];
a[p]=s;
}
}
printf("%d ",a[i]);
}
printf("\ninput number:\n");
scanf("%d",&n);
for(i=0;i<10;i++)
if(n>a[i])
{for(s=9;s>=i;s--) a[s+1]=a[s];
break;}
a[i]=n;
for(i=0;i<=10;i++)
printf("%d ",a[i]);
printf("\n");
}

参考资料:谭浩强的c语言程序设计

第2个回答  2009-07-22
先将你的的多个数列出一个数组,然后依次取数,再用这个数去与已知大小数列的元素进行比较,再插入即可。
第3个回答  2009-07-28
先将要插入的数保存为 int X[MAXSIZE]中输入数字并保存应该会吧,使用循环语句while或者是IF语句循环MAXSIZE次,每次都调用同一个插入函数就可以了
main()
{
。。。
for(i=1;i<maxsize;i++) //保存要插入的数
{ scanf("%d",&x[i])
}
....
for(i=1;i<maxsize;i++)
{ “插入函数”(X[i]);} //x[i]中保存了要差入的数
......
}
}
int “插入函数”(int X) //int x 是由主函数传递来的值
{。。。
}

这是我的构思,如果全写出来那你就不用想了。怎么写就看你自己的了
相似回答