现有一个已排好序的数组,今输入一个数,要求按照原来排序的规律将它插入数组中.编程

现有一个已排好序的数组,今输入一个数,要求按照原来排序的规律将它插入数组中.编程!

怎么编程啊! C语言!!

第1个回答  推荐于2018-03-28
呵呵,有点难度哦,要求加分,不用链表,自己写的,参考一下:
#include<stdio.h>
void conv(int b[],int n) //排序函数(从小到大)
{
int i,j,temp;
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
{
if(b[i]>b[j])
{
temp=b[i];
b[i]=b[j];
b[j]=temp;
}
}
}
void main()
{
int a[9]={1,2,5,6,4,8}; //花括弧内元素的个数至少要比9少1
int c;
int n=0;
while(a[n++]); //统计元素的个数
int j=n; //保存元素的个数
conv(a,n); //调用排序函数
printf("input a number:");
scanf("%d",&c); //输入你要插入的数字
int i;
for(i=0;i<n;i++) //寻找该数字在排好序的数组内的位置
if(c<a[i]) //找到了
{
n++; //元素个数加1,给新元素留个位置
for(;n>i;n--)
{
a[n]=a[n-1]; //自第i个元素后的元素都后移一个位置
}
a[i]=c; //将新插入的元素放到该位置
}
for(n=0;n<j+1;n++)
printf("%d ",a[n]); //打印新数组
}本回答被提问者和网友采纳
第2个回答  2012-10-19
#include "stdio.h"
main()
{
int a[11]={1,4,6,9,13,16,19,28,40,100};
int num,i,j;
printf("Array a:\n");
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
printf("insert data:");
scanf("%d",&num);
for(i=0;i<10;i++)
if(a[i]>num)
{j=a[i];a[i]=num;num=j;}
a[i]=num;
printf("Now,array a:\n");
for(i=0;i<11;i++)
printf("%5d",a[i]);
printf("\n");
}
这绝对正确,我上机验证过了!!要加分啊。。。
第3个回答  2007-09-10
排序的顺序?
相似回答