更多"有一个已排好序的数组,今输入一个数,要求按原来的顺序规律将它插入到数组"的相关试题:
[填空题]有一个已排好序的数组,今输入一个数,要求按原来的顺序规律将它插入到数组中。算法是:假设排序顺序是从小到大,对输入的数,检查它在数组中哪个数之后,然后将比这个数大的数顺序后移一个位置,在空出的位置上将该数插入。请在程序中的空白处填上一条语句或一个表达式。
#define N 100
main( )
float a[N+1],x;
int i,p;
for(i=0;i<N;i++)
scanf("%f’,&x);
for(i=0,p=N;i<N;i++)
if(x<a[i])
【18】 ;
for(i=N-1; 【19】 ;i-)
a[i+1]=a[i];
a[p]=x;
for(i=0; 【20】 ;i++)
printf("%8.2f’,a[i]);
if(i%5==0)
printf("/n");
[简答题]【程序2.1说明】
已知一个排好序的数组,现输入一个数,要求按原来的顺序规律,将它插入到数组中。
【程序2.1】
#include <stdioh>
#define N 100
void main( )
float a[N+l],x;
int i,p;
printf("输入已经排好序的数列: ");
for(i=0; i<N; i++)
scanf(%f",&a[i]);
printf("输入要插入的数:");
scanf("%f",&x);
for(i=0,p=N; i<N; i++)
if(x<a[i])
(1)
break;
for(i=N-1; i>=p; i--)
(2)
(3)
for(i=0; i<=N; i++)
prinff("%f/t",a[i]);
【程序2.2说明】
本程序用变量count统计文件中字符的个数。
【程序2.2】
#include <stdio.h>
#include <stdlib.h>
void main( )
FILE *fp;
long count=0;
if((fp=fopen("letter.txt","r"))==NULL)
printf("can not open file/n");
exit(0);
while(!feof(fp))
(4)
count++;
printf("count=%d/n",count);
(5)
[单项选择]用下列4种排序方法,对一个已排好序(由小到大)的序列进行由小到大排序时,选择( )方法最好。
A. 冒泡排序
B. 直接选择排序
C. 直接插入排序
D. 归并排序
[填空题]请补充main函数,该函数的功能是:把一个整数插入到一个已经按从小到大排序的数组中。插入后,数组仍然有序。
例如,在数组bb[N]={12,23,31,44,51,63,71,79,85,95}中插入93,结果为:
bb[N]{11,21,31,41,51,61,7l,79,8l,93,95}
注意:部分源程序给出如下.
请勿改动主函数main和其他函数中的任何内容,仅在 main函数的横线上填入所编写的若干表达式或语句。
试题程序:
#include<std/o. h>
#define N 10
main( )
{
int i,j;
int n;
int bb IN+l] ={ t2,23, 31, 44, 51, 63, 71,
79,85,95};
clrscr ( );
printf("/nInput n /n");
scanf ("%d", &n);
printf ("/nn=%d ",n);
printf("/n*** original list ***In");
for (i=0; i<N; i++)
printf ("%4d ",bb [ii );
for (i=0; i<N; i++)
{
if (n<=bb [i ] )
{
for(j=N; 【1】 ;j--)
【2】;
bb [j] =n;
【3】;
}
if (i=N)
bb[i]=n;
printf("/n***** new list ******In");
for (i=0;i<N+l; i++)
printf ("%4d ",bb [i]);
}
[填空题]以下程序段的作用是首先按降序输入10个数到数组Y的前10个元素中,又输入一个YO插入到数组Y中,插入YO后Y中的数据仍按降序排列。请补充完该程序______。
Dim Y(1 To 11)
For i =1 To 10
Y(i) = Val(InputBox(“请输入Y(i):”))
Next i
X = Val(InputBox (“请输入x:”))
For i = 10 To 1 Step -1
If 【8】 Then
Y(i + 1) = X
Exit For
End If
Y (i + 1) =Y(i)
Next i
’Print Y(10)
For i =1 To 11
Print Y(i)
Next I
[填空题]设有一个已按各元素的值排好序的线性表,长度为125,对给定的k值,用二分法查找与k相等的元素,若查找成功,则至少需要比较______次,至多需比较______次。
[单项选择]设有一个已按各元素的值排好序的顺序表(长度大于2),现分别用顺序查找法和二分查找法查找与给定值k相等的元素,比较的次数分别是s和b,在查找不成功情况下s和b的关系是( )。
A. s=b
B. s>b
C. s
D. s>=b
[填空题]以下程序调用fun函数把x中的值插入到a数组下标为k的数组元素中。主函数中,n存放a数组中数据的个数。请填空。
#include<stdio.h>
void fun(int s[],int *n,int k,int x)
int i;
for(i=*n-1;i>=k;i--)s______=s[i];
s[k]=x;
*n=*n+______;
main( )
int a[20]=1,2,3,4,5,6,7,8,9,10,11,i,x=0,k=6,n=11;
fun(a,&n,k,x);
for(i=0,i<n,i++)printf("%4d",a[i]);printf("/n");