源程序如下:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int i, j, t, k;//定义循环变量
const int n = 10;//定义数组元素个数
int a[n], b[n + 1];//定义两个数组
printf("您喜欢的有序数组:\n");//输入数组序列文字提
for (i = 0; i < n; i++)
{
scanf("%d", &a[i]);//循环输入数组元素
}
printf("请输入想插入的数字\n");//输入要插入的数字
scanf("%d", &k);
for (i = 0; i <= n; i++)//循环遍历
{
if (i == n) b[i] = k;//如果走到最后都没有地方插入就放在最后
else b[i] = 0;
}
for (i = 0; i < n; i++)//循环遍历
{
for (j = 0; j < n; j++)
{
b[j] = a[i++];//依次将数组a付给b
}
}
for (j = 0; j < n; j++)//冒泡排序,将数组数列排好
{
for (i = 0; i < n - j; i++)
{
if (b[i] > b[i + 1])
{
t = b[i];
b[i] = b[i + 1];
b[i + 1] = t;
}
}
}
for (j = 0; j < n + 1; j++)//顺序输出
{
printf("%d ", b[j]);
}
}
程序输出结果如下:
扩展资料:
/*#include<stdio.h>//感觉用二分法不错 直接插入排序也不错
//插入函数 往有序的数组a里插入值为element的元素使数组a依然有序
//算法思想大概就是从头开始遍历找到第一个大于element的数 然后插入 然后后面的元素依次移动。
void insert_array(int *a,int length,int element)
{
int i,j,t,f;
for(i=0;i<length;i++)
{
if(a[i]>element)
{
t=i;//找到位置以后 可以依次移动数组元素腾出位置了
for(j=length;j>=t;j--)
{
if(j==t)
a[j]=element;
else
a[j]=a[j-1];//数组依次往后移动,不管正序还是倒序都可以
}
f=1;
break;
}
}
if(f!=1)//当element大于所有数组元素时候
{
a[length]=element;
}
for(i=0;i<length+1;i++)
{
printf("%d ",a[i]);
}
}
int main()
{
int a[5]={1,2,3,5,6};
int e=7;
insert_array(a,5,e);
}
参考资料:谭浩强<C语言程序设计>
C程序编写,将一个数插入到一个已经有序的数组里,要求保持有序
define _CRT_SECURE_NO_WARNINGS include<stdio.h> int main(){ int i, j, t, k;\/\/定义循环变量 const int n = 10;\/\/定义数组元素个数 int a[n], b[n + 1];\/\/定义两个数组 printf("您喜欢的有序数组:\\n");\/\/输入数组序列文字提 for (i = 0; i < n; i++){ scanf("%...
C语言编程:有一个已排好序的数组,现输入一个数插入到数组中,要求插入该...
int a[100],n=10,i,j,x;\/*输入10个数*\/ for (i=0;i<n;i++) scanf("%d", &a[i]);\/*输入1个数*\/ scanf("%d",&x);\/*找到需要插入的位置j*\/ for (i=0;i<n;i++) if (a[i]<x) j=i+1;\/*把j之后的数据后移*\/ for (i=n;i>j;i--) a[i]=a[i-1];\/*插...
C编程:已有一个排好序的序列,输入一个数插入该序列中,使其仍然保持有序...
\/\/已有一个排好序的序列,输入一个数插入该序列中,使其仍然保持有序 #include<stdio.h> #define N 10 void main() { int i=0,data,a[N]={1,2,3,4,6,7,8,9,10},temp; printf("please enter a num:\\n"); scanf("%d",&data); while(a[i]<data)i++; \/\/比较大小,使得i...
c语言向一个已经排好序的数组中插入一个整数,保持原来的顺序不变
void main(void){ int str[10] = {1,2,3,4,5,6,7,8};int temp1,temp2,*q,*p = str;for(;p<str+8;p++)printf("%d ",*p);printf("\\n请输入要插入的数据:");scanf("%d",&temp1);printf("请输入插入地方的数据(左插):");scanf("%d",&temp2);for(p=str;p<str+8;p++...
...一个数将其插入原有的数列 而且仍然保持有序,要求
a[11] = {10,20,30,40,50,60,70,80,90,100};int n = 0;int num = 10;int tmp = 0;printf("原有数组:\\n");for (i=0; i<num; i++){printf("%d ",a[i]);}printf("\\n");printf("请输入要插入的数:\\n");scanf("%d",&n);for (i=0; i<num; i++){if(...
C语言求助,把一个数插入到一个已排好序的数组中
1、可以用下面代码把数插入一个排好序的数组,数组进行迭代取值。2、下面是数组排序的代码,这里是按大小排序的,每次取值和输入的数比较,比输入的数小,就往后移动移位,直到移出输入数该放的位置,反之也是。3、或者用下图的代码实现,有一个已排好序的数组,现在插入一个数字。4、按原来已排好的...
C语言中,有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它...
C语言,有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中。解:include int main(){ int a[11]={1,4,6,9,13,16,19,28,40,100};int temp1,temp2,number,end,i,j;printf("array a:\\n");for (i=0;i<10;i++)printf("%5d",a[i]);printf("\\n");pri...
c语言 向有序数组中插入一个数,保持原顺序不变,将新数组输出
intm,n,i,j,h;inta[17]={1,5,9,14,23,34,45,56,67,78,89,99,105,126,156};scanf("%d,%d",&m,&n);for(i=0;i<15;i++)\/\/这里i<16;改成i<15;因为插入前数组有15个元素 { if(m<=a[i])\/\/这里m<a[i]改成m<=a[i]{ for(j=14;j>=i;j--)a[j+1]=a[j];a...
用C语言编程:在有序的数列中插入若干个数,每插入一个数都要保持有序
用数组也不是很难,思路就是从最后那个数据开始比较,如数组时从小到大排列的,那就比价是否比这个数据大,要是小,那这个数组中的数就后移一位,在比较前面的,不大,就插入它后面 代码是 int a[100]; \/\/这里有部分数据如50个,a1~a49是有序的 int c; \/\/这个是插入的数据 int i,n...
在c语言中,将一个数插入一个数组中的程序怎么写?
有一个已排好序(从大到小)的数组有5个元素,从键盘输入一个数,要求按原排序的规律将它插入到数组中1.#include<stdio.h>void main({int i,x,j; int {1,5,10,15,20}; scanf("%d",&x);for(i=0;i<5;i++) if(x=j;i--)a[i+1]=a[i]; \/*将位置j以后的数据都向后移一位...