输入若干有序数放在数组中。然后输入一个数,插入到此有序数列中,插入后,数组中的数仍然有序。

#include <stdio.h>
#define M 6
int wnn1(int *,int,int);
void wnn2(int *,int);
void main()
{int x,n,t,s[M]={10,15,18,24,29,35};
printf("input x:\n");
scanf("%d",&x);
n=M;
t=wnn1(s,x,n);
wnn2(s,t);
}
int wnn1(int *a,int x,int n)
{int i,j=0;
while(j<n&&a[j]<x)j++;
for(i=n-1;i>=j;i--)a[i+1]=a[i];
a[j]=x;
n++;
return n;
}
void wnn2(int *a,int n)
{int i;
for(i=0;i<n;i++)printf("%4d",a[i]);
printf("\n");
}
为什么运行最后总是有个7出现,另外,数字大于35为什么就不能正常插入呢?

定义数组的时候,增加一个单元即可
#include <stdio.h>
#define M 6
int wnn1(int *,int,int);
void wnn2(int *,int);
void main()
{int x,n,t,s[M+1]={10,15,18,24,29,35};
printf("input x:\n");
scanf("%d",&x);
n=M;
t=wnn1(s,x,n);
wnn2(s,t);
}
int wnn1(int *a,int x,int n)
{int i,j=0;
while(j<n&&a[j]<x)j++;
for(i=n-1;i>=j;i--)a[i+1]=a[i];
a[j]=x;
n++;
return n;
}
void wnn2(int *a,int n)
{int i;
for(i=0;i<n;i++)printf("%4d",a[i]);
printf("\n");
}
温馨提示:内容为网友见解,仅供参考
无其他回答

有一个N个元素的有序数列,输入一个数,判断这个数是否在数列中,如果在...
flag=1;printf("%d在数列第%d个元素的位置\\n",num,i+1);break;} if(!flag)printf("%d不在数列中\\n",num);} return 1;}

从键盘输入一个数,将其插入到有序的数列中去,插入后的数列仍然保持以前...
for(i=0;i<N+1;i++)printf("%6d",num[i]); \/*输出插入新学号后的排序*\/ printf("\\n");}

...要求输入一个数,插入原数列中,仍然保持有序
&a[i]); } printf("Please input a number:\\n"); scanf("%d",&sum); if(sum>a[9]) { a[10]=sum; for(i=0;

什么是插入排序?
输入一个元素,插入到一个已经排好序的数列中的适当位置,使数列依然有序。例如:输入一个数,插入一个各元素已经按照升序排列的数组中,插入后使数组中元素仍然是按照升序排列的。思想:把欲插入的数与数组中各数逐个比较, 当找到第一个比插入数大的元素i时,该元素之前即为插入位置。然后从数组最后...

C程序编写,将一个数插入到一个已经有序的数组里,要求保持有序
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++)\/\/冒泡排序,将数组数列排好 ...

...一个数插入到已有10个整数的有序数列中,数据插入之后,数列仍然_百度...
define N 20 main(){ \/\/10个元素,20个空间 int i,,p,a[N]={1,2,4,6,8,10,22,25,35,50};int s;scanf("%d",&s);for(i=0;a[i]<s&&i<10;i++) \/\/找位置 ;p=i;for(i=10;i>=p;i--) \/\/后移数 a[i]=a[i-1];a[p]=s; \/\/插入数 for(i=0;i<11;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...

...输入一个数 把它插入原有数列 使仍有序 输出新数列
2)数组后挪 int tmpVar = a[k]; \/\/ 把k的位置的值存在tmpVar里面a[k] = n;int end = sieof(a) \/ sizeof(a[0]) - 1; \/\/ 最后一个的位置while(end > k + 1) \/\/ 从最后一个位置到k + 2, 使用如下方法获得新值{ a[end] = a[end - 1];}a[end] = tmpVar; \/\/ ...

...输入一个数将其插入原有的数列 而且仍然保持有序,要求
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(...

相似回答