C语言编程:有一个已排好序的数组,现输入一个数插入到数组中,要求插入该数后数组元素仍然有序
【例】把一个整数按大小顺序插入已排好序的数组中。
为了把一个数按大小插入已排好序的数组中,应首先确定排序是从大到小还是从小到大进行的。设排序是从大到小进序的,则可把欲插入的数与数组中各数逐个比较,当找到第一个比插入数小的元素i时,该元素之前即为插入位置。然后从数组最后一个元素开始到该元素为止,逐个后移一个单元。最后把插入数赋予元素i即可。如果被插入数比所有的元素值都小则插入最后位置。
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("
input number:
");
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("
");
}
本程序首先对数组a中的10个数从大到小排序并输出排序结果。然后输入要插入的整数n。再用一个for语句把n和数组元素逐个比较,如果发现有n>a[i]时,则由一个内循环把i以下各元素值顺次后移一个单元。后移应从后向前进行(从a[9]开始到a[i]为止)。 后移结束跳出外循环。插入点为i,把n赋予a[i]即可。 如所有的元素均大于被插入数,则并未进行过后移工作。此时i=10,结果是把n赋于a[10]。最后一个循环输出插入数后的数组各元素值。
程序运行时,输入数47。从结果中可以看出47已插入到54和 28之间。
#include<stdio.h>
int main()
{
int a[40]={1,0},i,j,n,x;
printf("请输入数组元素的个数:");
scanf("%d",&n);
printf("请输入排好序的一串数字:
");
for(i=0;i<n;i++)
scanf("%d",&a<i>);
printf("请输入要插入的数:");
scanf("%d",&x);
if(a[0]<a[1])//该数组按升序排列
{
for(i=0;i<n;i++)
if(x<a<i>)
break;
for(j=n;j>=i;j--)//从插入位置后一位开始,每一个元素向后移一个位置
a[j]=a[j-1];
a<i>=x;
}
if(a[0]>a[1])//该数组按降序排列
{
for(i=0;i<n;i++)
if(x>a<i>)
break;
for(j=n;j>=i;j--)//从插入位置后一位开始,每一个元素向后移一个位置
a[j]=a[j-1];
a<i>=x;
}
printf("插入后的数组:
");
for(i=0;i<=n;i++)
printf("%d",a<i>);
return 0;
}
扩展资料:include用法:
#include命令预处理命令的一种,预处理命令可以将别的源代码内容插入到所指定的位置;可以标识出只有在特定条件下才会被编译的某一段程序代码;可以定义类似标识符功能的宏,在编译时,预处理器会用别的文本取代该宏。
插入头文件的内容
#include命令告诉预处理器将指定头文件的内容插入到预处理器命令的相应位置。有两种方式可以指定插入头文件:
1、#include<文件名>
2、#include"文件名"
如果需要包含标准库头文件或者实现版本所提供的头文件,应该使用第一种格式。如下例所示:
#include<math.h>//一些数学函数的原型,以及相关的类型和宏
如果需要包含针对程序所开发的源文件,则应该使用第二种格式。
采用#include命令所插入的文件,通常文件扩展名是.h,文件包括函数原型、宏定义和类型定义。只要使用#include命令,这些定义就可被任何源文件使用。如下例所示:
#include"myproject.h"//用在当前项目中的函数原型、类型定义和宏
你可以在#include命令中使用宏。如果使用宏,该宏的取代结果必须确保生成正确的#include命令。例1展示了这样的#include命令。
【例1】在#include命令中的宏
#ifdef _DEBUG_
#define MY_HEADER"myProject_dbg.h"
#else
#define MY_HEADER"myProject.h"
#endif
#include MY_HEADER
当上述程序代码进入预处理时,如果_DEBUG_宏已被定义,那么预处理器会插入myProject_dbg.h的内容;如果还没定义,则插入myProject.h的内容。
main(){
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];
/*插入数据*/
a[j]=x;
/*输出结果*/
for (i=0;i<=n;i++) printf("%d\t", a[i]);
}
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语言中,有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它...
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语言程序编写 有一个已排好序的数组,由键盘又输入一个数,要求按原来排...
int main(){ int a[40]={1,0},i,j,n,x;printf("请输入数组元素的个数:");scanf("%d",&n);printf("请输入排好序的一串数字:\\n");for(i=0;i<n;i++)scanf("%d",&a);printf("请输入要插入的数:");scanf("%d",&x);if(a[0]<a[1])\/\/该数组按升序排列 { for(i=0...
C语言:有一个已排好序的数组,要求删除一个数后,还按原来的规律排好
include"stdio.h"void del(int *a,int x,int n)\/\/删除数组a中第x个数,n是数组大小{int i;for(i=0;i<n;i++){if((i+1)==x){for(int j=i;j<n-1;j++)a[j]=a[j+1];break;}}}void main(){int a[10]={0,1,2,3,4,5,6,7,8,9};int i;for(i=0;i<10;i++)...
...段C语言程序,有一个已经按从小到大排好序的数组,要求输入一个数后...
20 define M 11 void main() { int a[N]={1,3,5,7,9,11,13,15,17,19,21},x,i,j;scanf("%d",&x);for ( i=M;i>0;i++ ) if ( a[i-1]>x ) a[i]=a[i-1]; else break;a[i]=x;for ( i=0;i<M+1;i++ ) printf("%d ",a[i]); printf("\\n");} ...
c语言程序设计:有一个已排好序的数组,要求输入一个数后,按原来排序的规...
为了把一个数按大小插入已排好序的数组中,应首先确定排序是从大到小还是从小到大进行的。设排序是从大到小进序的,则可把欲插入的数与数组中各数逐个比较,当找到第一个比插入数小的元素i时,该元素之前即为插入位置。然后从数组最后一个元素开始到该元素为止,逐个后移一个单元。最后把插入数...
C语言求“一个有序数组,插入一个数后数组仍然有序”不要用break_百度...
int main(void){ int i, n, x, a[100]; printf("输入总个数:");scanf("%d", &n);printf("输入%d个数,注意要升序:",n);for(i = 0; i < n; i++)scanf("%d", &a[i]);printf("输入要插入的数:");scanf("%d", &x); i=n-1;while(i>=0&&x<a[i]){a[i+1]=a[...
C语言编程:一个已经排好序的数组,往里插一个数,并找出他插到哪里...
已赞过 已踩过< 你对这个回答的评价是? 评论 收起 其他类似问题2009-12-10 C语言求助,把一个数插入到一个已排好序的数组中 39 2013-12-13 c语言程序设计题:已知一个以排好的序的数组,要求输入一个数后... 10 2015-11-16 c语言程序设计:有一个已排好序的数组,要求输入一个数后,按原... 312...
c语言 已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它...
insert(int val,int* array,int* len)\/\/val为要插入的数,array为已排序的数组(假设为升序),len为数组元素个数。{ int count,i;i=*len;for(count=0;count<i;count++){ if(val<array[count]) break;} do { array[i+1]=array[i];i--;}while(i>=count);array[count]=val;(*le...
用C语言写的一个程序:有一个已排好的数组,要求输入一个数后,按原来排序...
break;} 第二:i 是从0开始计数的,所以数组数还要加1.比如输入0 1 2 3,i为3,但是是4个数。\/\/如下能正常运行:include <stdlib.h> include <stdio.h> int main(){ int a[20],i,n,x,k;printf("请输入一组顺序数(从小到大的顺序):");for( i=0; ;i++ ){ scanf("%d",&a...