更多"有一个已排好序的数组,今输入一个数,要求按原来的顺序规律将它插入到数组"的相关试题:
[填空题]有一个已排好序的数组,今输入一个数,要求按原来的顺序规律将它插入到数组中。算法是:假设排序顺序是从小到大,对输入的数,检查它在数组中哪个数之后,然后将比这个数大的数顺序后移一个位置,在空出的位置上将该数插入。请在程序中的空白处填上一条语句或一个表达式。
#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. sD. s>=b
[填空题]以下程序调用fun函数把x中的值插入到a数组下标为k的数组元素中。主函数中,n存放a数组中数据的个数。请填空。
#include
void fun( int s[], int *n, int k, int x)
{ int i;
for(i=*n-1; i>=k; i- -) s[ 【14】 ]=s[i];
s[k]=x;
*n=*n+ 【15】 ;
}
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
[简答题]【程序功能】
将一个二维数组中的若干行数据按要求插入到另一个二维数组中。
【编程要求】
1.定义符号常量N代表4
2.编写函数int insert_row(int a[][N],int n,int b[][N],int m)。已知形参a指向的二维数组(简称a数组)前n行数据已按每行数据之和升序排列,形参b指向的二维数组中有m行数据。insert_row函数实现将b数组中m行数据插入到a数组中,完成插入操作后a数组中所有行的数据仍按每行数据之和升序排列。函数返回a数组中有效数据的行数。
3.编写main函数。函数功能是声明两个二维数组x和y并用测试数据初始化,用x和y
数组作为实参调用insert_row函数将y数组中的两行数据插入到x数组中。输出x数组中全部数据到屏幕及文件myf2.out中。最后将考生本人的准考证号字符串输出到文myf2.
out中。
【测试数据与运行结果】
测试数据:
x数组原数据:
2 2 3 4
9 10 11 12
y数组数据:
1 3 5 7
5 10 15 20
屏幕输出:
2 2 3 4
1 3 5 7
9 10 11 12
5 10 15 20