编程序实现功能:在一个元素值按升序存放的整型数组中插入一个数,使得插入后的数组元素仍然有序

#include<stdio.h>
#define N 5
void main()
{ int a[N+1],x,i,k;
for(i=0;i<N;i++)
scanf("%d",&a[i]);
scanf("%d",&x);
for(i=0;a[i]<x&&i<N;i++)
;
for(k=N;k>i;k--)
a[k]=a[k-1];
a[i]=x;
for(i=0;i<=N;i++)
printf("%5d",a[i]);
putchar('\n');
}谁能给我讲解下这个程序是怎么运行的,越详细越好 谢谢

第1个回答  2011-11-10
eeee...
#include<stdio.h>
#define N 5
void main()
{ int a[N+1],x,i,k;
// 等待输入数组
for(i=0;i<N;i++)
scanf("%d",&a[i]);
//等待输入插入数值
scanf("%d",&x);
//找到数值要插入的坐标位置 (从0开始,下标递增查找,满足数组的值<插入的数值,继续查找,找到第一个比插入数值大的数)
for(i=0;a[i]<x&&i<N;i++)
;
//从第K各开始到第N个数值,倒序赋值,其实就是向后移动一位.
for(k=N;k>i;k--)
a[k]=a[k-1];
//把插入数值放入之前找到的下标位置
a[i]=x;
//打印结果
for(i=0;i<=N;i++)
printf("%5d",a[i]);
putchar('\n');
}追问

for(i=0;a[i]<x&&i<N;i++)
;
这个后面就只有一个冒号 是怎么执行的啊

追答

这句话,其实相当于
for(i=0; i<N; i++)
{
if(a[i] < x)
continue;
}

一种缩写 你看看for语句的第二个项的含义就知道了

本回答被提问者采纳

编程序实现功能:在一个元素值按升序存放的整型数组中插入一个数,使得插...
\/\/等待输入插入数值 scanf("%d",&x); \/\/找到数值要插入的坐标位置 (从0开始,下标递增查找,满足数组的值<插入的数值,继续查找,找到第一个比插入数值大的数) for(i=0;a[i]<x&&i<N;i++) ;\/\/从第K各开始到第N个数值,倒序赋值,其实就是向后移动一位. for(k=N;k>i;k--) a[k]=a[k-1];...

在一个升序数组中插入一个数,使数组仍然保持升序排列。求代码
include <stdio.h> void sort(int num[],int n,int k){ for(int j=0;j<n;j++){ if(num[j]>k){ int a=num[j];num[j]=k;k=a;} } num[n]=k;for(int i=0;i<=n;i++)printf("%5d",num[i]);} int main(){ int t[100],c,d;while(~scanf("%d %d",&c,&d))...

C语言编程:实现:在已按降序排列的整型数组中插入一个整数,使插入后的数...
include<stdio.h>int main(){ int a[6] = {9,7,6,3,1}; int i,j,x,t; printf("insert data:"); scanf("%d",&x); for(i=0;i<5;i++) if(x>a[i]) break; for(j=5;j>i;j--) a[j]=a[j-1]; a[j]=x; printf("Now array a...

有一个已经排好序的数组,现输入一个数,要求按原来的规律将它插入数组中...
【答案】:程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。程序源代码如下。main(){ int a[11]=(1,4,6,9,13,16,19,28,40,100};int tempI,temp2,number,end,i,j;printf("original array is:\\n");for(i=0:i<10...

在一个有序的一维数组中插入一个数x,使插入x后的数组仍然有序,尽快啊...
printf("please input one number:");scanf("%d",&x);for(i=0;i<10;i++)printf("%5d",a[i]);printf("\\n");for(i=0;i<10;i++)if(a[i]>x)break;t=i;for(j=9;j>=t;j--)a[j+1]=a[j];a[t]=x;for(k=0;k<=10;k++)printf("%5d",a[k]);printf("\\n");}...

c语言程序设计:有一个已排好序的数组,要求输入一个数后,按原来排序的规...
本程序首先对数组a中的10个数从大到小排序并输出排序结果。然后输入要插入的整数n。再用一个for语句把n和数组元素逐个比较,如果发现有n>a[i]时,则由一个内循环把i以下各元素值顺次后移一个单元。后移应从后向前进行(从a[9]开始到a[i]为止)。 后移结束跳出外循环。插入点为i,把n赋予a[i...

java编写程序,向整数数组的指定位置插入元素,并输出插入前后数组的值...
arr[1]=11;arr[2]=12;arr[3]=13;arr[4]=14;arr[5]=15;arr[6]=16;System.out.println("插入前的数组:");for (int i = 0; i < arr.length; i++) { if(arr[i]!=0){ System.out.print(arr[i]+"\\t");} } System.out.print("\\n请输入要插入的位置:");int index =...

输入一个元素数为n的升序数组,在插入整数x,y,后该数组仍有序。
插入x的循环后加入了插入失败的情况,也就是把x放到新数组(长度n+1)末尾;然后尝试把y插入这个新数组中,循环次数比上一个多了一次(i<n+1),如果y比新数组所有元素都大,把y放到新新数组(长度n+2)。实现代码:include <iostream> using namespace std;int main(){ int n, i, j;int a[20...

...输入一个数插入到数组中,要求插入该数后数组元素仍然有序
include <stdio.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...

在一个已经排序的数组中插入一个数据,使插入后的数组仍然有序
可以用无数种方法...我这里给你介绍一种最简单的,假设原数n组递增,然后就把待插入数据,从数组的最后一位n开始比较,如果待插入数据小,增前移,继续比较n-1,n-2...1,直到找到小于待插入数据的那一位,然后把待插入数据放在它后面即可.还有不明白可以给我发短信 ...

相似回答