设计程序,先将10个整数按从大到小排序,然后把一个整数按大小插入到已排序的数组中。10个整数通过数组初始化赋值给数组元素, 如 int a[11]={127,3,6,28,54,68,87,105,162,18}; 将29插入数组中。 输入格式: “%d” 输出格式: "%4d" 输入样例: 29 输出样例: 162 127 105 87 68 54 28 18 6 3 162 127 105 87 68 54 29 28 18 6 3

题目

设计程序,先将10个整数按从大到小排序,然后把一个整数按大小插入到已排序的数组中。10个整数通过数组初始化赋值给数组元素, 如 int a[11]={127,3,6,28,54,68,87,105,162,18}; 将29插入数组中。 输入格式: “%d” 输出格式: "%4d" 输入样例: 29 输出样例: 162 127 105 87 68 54 28 18 6 3 162 127 105 87 68 54 29 28 18 6 3


相似考题
更多“设计程序,先将10个整数按从大到小排序,然后把一个整数按大小插入到已排序的数组中。10个整数通过数组初始化赋值给数组元素, 如 int a[11]={127,3,6,28,54,68,87,105,162,18}; 将29插入数组中。 输入格式: “%d” 输出格式: "%4d" 输入样例: 29 输出样例: 162 127 105 87 68 54 28 18 6 3 162 127 105 87 68 54 29 28 18 6 3”相关问题
  • 第1题:

    阅读以下说明和C++程序,将应填(n)处的字句写在对应栏内。

    [说明]

    设计一程序,输入10个整数到一个数组中,调整这10个数在数组中的位置,使得其中最小的一个数成为数组的首元素,最大的一个数成为数组的末元素。

    [C++程序]

    include <iostream.h>

    define SIZE 10

    void main ( )

    {

    int data [SIZE];

    int m;

    cout<<"请输入"<<SIZE<<"个整数:";

    for ( m=0;m<SIZE; m++ ) (1);

    int j=0,k=0;

    for ( int i=1;i<SIZE; i++ )

    if ((2)) j=i;

    else if ( data[i]<data[k] ) (3);

    if (j>0 ) {

    int d=data[0];

    (4);

    data[k]=d;

    }

    if ( k<SIZE-1 )

    {

    int d=data [SIZE- 1 ];

    data[SIZE- 1 ]=data[j];

    (5);

    }

    cout<<end1<<" 排序后: ";

    for ( m=0;m<SIZE; m++ ) cout<<data[m]<<" " ;

    }


    正确答案:(1)n>>data [m] (2) data[i]>data[j] (3) k=i (4) data[0]=data[k] (5) data[j]=d
    (1)n>>data [m] (2) data[i]>data[j] (3) k=i (4) data[0]=data[k] (5) data[j]=d

  • 第2题:

    插入排序算法的主要思想是:每次从未排序序列中取出一个数据,插入到己排序序列中的正确位置。InsertSort类的成员函数sort()实现了插入排序算法。请将画线处缺失的部分补充完整。

    class InsertSort{

    public:

    InsertSort(int* a0,int n0):a(a0),n(n0){}//参数a0是某数组首地址,n是数组元素个数

    void sort()

    {//此函数假设已排序序列初始化状态只包含a[0],未排序序列初始为a[1]…a[n-1]

    for(int i=1;i<n;++i){

    int t=a[i];

    int j;

    for(【 】;j>0;--j){

    if(t>=a[j-1])break;

    a[j]=a[j-1];}

    a[j]==t;}}

    protected:

    int*a,n;//指针a用于存放数组首地址,n用于存放数组元素个数

    };


    正确答案:j=i
    j=i 解析:本题考查的是插入排序算法。在sort()函数中是一个两重循环,外循环从1循环递增到n-1,即遍历未排序序列a[1]…a[n-1],取未排序序列中的第1个元素a[i] (i初值等于1)与已排序序列中的最后一个元素a[i-1]开始从后往前进行比较。内循环从后往前遍历已排序序列,使循环变量j的初值为i,则a[j-1]是已排序序列的最后一个元素。所以应该填j=i

  • 第3题:

    有一组无序排列的整数数组如{1,5,7,9,2} 通过算法实现对该数组按从大到小的顺序进行排序,输出排序后的结果同时输入原始数组的数组索引下标,如输出排序结果为{9,7,5,2,1},输出原始数组索引下标为{3,2,1,4,0}。


    正确答案:
     

  • 第4题:

    采用插入排序算法对n个整数排序,其基本思想是:在插入第i个整数时,前i一1

    个整数已经排好序,将第i个整数依次和第i.,i-2,…个整数进行比较,找到应该插入

    的位置。现采用插入排序算法对6个整数{5 2,4,6,1,3}进行从小到大排序,则需要进行

    (31)次整数之间的比较。对于该排序算法,输入数据具有(32)特点时,对整数进

    行从小到大排序,所需的比较次数最多。

    A.9

    B.10

    C.12

    D.13

    (32)A.从小到大

    B.从大到小

    C.所有元素相同

    D.随机分布

    请帮忙给出每个问题的正确答案和分析,谢谢!


    问题 1 答案解析:C
    采用插入排序算法对6个整数{5,2,4,61,3)进行从小到大排序的过程如表所示。

    综上,元素间共比较12次。从上表中的第4步可看出,当待插入的元素比已排序部分的所有元素都要小时,需要比较和移动的元素最多,因此当输入数据序列正好从大到小排列,而需要将其从小到大排序时,元素间的比较次数最多。


    问题 2 答案解析:B
    同31题解析

  • 第5题:

    试题14

    以下程序调用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”);

    }


    正确答案:
    试题14分析
    因为是把x中的值插入到a数组下标为k的数组元素中,所以首先要将k及其后的元素往后移一位,方法是s[i+1]=s[i],插入之后,因为多了一个元素,要将n中值增1。
    试题14答案
     【14】i+1
    【15】1

  • 第6题:

    阅读下列说明和流程图,填补流程图中的空缺(1)~(9),将解答填入答题纸的对应栏内。【说明】假设数组A中的各元素A⑴,A (2),…,A (M)已经按从小到大排序(M>1):数组B中的各元素B(1) , B (2) . B (N)也已经按从小到大排序(N≥1)。执行下面的流程图后,可以将数组A与数组B中所有的元素全都存入数组C中,且按从小到大排序(注意:序列中相同的数全部保留并不计排列顺序)。例如,设数组A中有元素: 2,5,6,7,9;数组B中有元素: 2,3,4,7;则数组C中将有元素: 2,2,3,4,5,6,7,7,9.


    答案:
    解析:
    (1)1 (2)A (i) (3) B (j)⑷ i (5)J(6) B (j)(7) A (i)(8) j(9) i

  • 第7题:

    编程:用键盘输入整数给一个2×3的2维数组各元素赋值,并输出全部元素的值。


    正确答案: #define Row 2
    #define Col 3
    #include "stdio.h"
    main(){int i,j,array[Row][Col];
    for(i=0;i<Row;i++)
    for(j=0;j<Col;j++)
    {printf("please input array[%2d][%2d]:i,j);
    scanf("%d",&array[i][j]);
    printf("/n");
    for(i=0;i<Row;i++)
    {for(j=0;j<Col;j++)
    printf("%d/t",array[i][j]);
    printf("/n");}
    }

  • 第8题:

    数组中有30个元素,若使用直接插入排序对其进行排序,则需要()趟才能完成排序。

    • A、29
    • B、30
    • C、28
    • D、27

    正确答案:A

  • 第9题:

    编一个程序,输入一个正整数n,把它转换为二进制数,并输出。提示:应该利用数组。


    正确答案: int[]a=newint[80];
    inti,j,n=0;
    while(n<=0)
    {
    Console.WriteLine("请输入一个正整数:");
    n=int.Parse(Console.ReadLine());
    }
    i=0;
    Console.Write("/n正整数{0}转换为二进制数:",n);
    while(n>0)
    {
    a[++i]=n%2;
    n=n/2;
    }
    for(j=i;j>0;j--)Console.Write(a[j]);
    Console.WriteLine();

  • 第10题:

    编程序:从键盘输入10个整数置入数组a,求数组a中所有偶数之和。


    正确答案: Private Sub Form_Click()
    Dimx(10)AsInteger,S As Integer
    Fori=1To10
    Xi=InputBox("请输入一整数")Nexti
    Fori=1To10
    IfInt(x(i)/2)=x(i)/2ThenS=S+x(i):
    Nexti
    PrintS
    End Sub

  • 第11题:

    问答题
    编程序:从键盘输入10个整数置入数组a,求数组a中所有偶数之和。

    正确答案: Private Sub Form_Click()
    Dimx(10)AsInteger,S As Integer
    Fori=1To10
    Xi=InputBox("请输入一整数")Nexti
    Fori=1To10
    IfInt(x(i)/2)=x(i)/2ThenS=S+x(i):
    Nexti
    PrintS
    End Sub
    解析: 暂无解析

  • 第12题:

    单选题
    数组中有30个元素,若使用直接插入排序对其进行排序,则需要()趟才能完成排序。
    A

    29

    B

    30

    C

    28

    D

    27


    正确答案: B
    解析: 暂无解析

  • 第13题:

    下列描述中不正确的是_______。

    A.字符型数组中可以存放字符串

    B.可以对字符型数组进行整体输入、输出

    C.可以对整型数组进行整体输入、输出

    D.不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值


    正确答案:C
    解析:C语言规定只能逐个引用数组元素而不合下次引用整个数组。字符数组的输入、输出可以将整个字符串一次输入或输出。所以,选项C的说法是不正确的。

  • 第14题:

    阅读以下说明和流程图,填补流程图中的空缺(1)~(9),将解答填入对应栏内。

    【说明】

    假设数组A中的各元素A(1),A(2),…,A(M)已经按从小到大排序(M≥1);数组B中的各元素B(1),B(2),…,B(N)也已经按从小到大排序(N≥1)。执行下面的流程图后,可以将数组A与数组B中所有的元素全都存入数组C中,且按从小到大排序 (注意:序列中相同的数全部保留并不计排列顺序)。例如,设数组A中有元素:2,5, 6,7,9;数组B中有元素2,3,4,7:则数组C中将有元素:2,2,3,4,5,6,7, 7, 9。

    【流程图】


    正确答案:(1)1 (2)A(i) (3)B(j) (4)i (5)j (6)B(j) (7)A(i) (8)j (9)i
    (1)1 (2)A(i) (3)B(j) (4)i (5)j (6)B(j) (7)A(i) (8)j (9)i 解析:这是最常见的一种合并排序方法。为对较大的序列进行排序,先将其分割成容量相当的几个部分,分别进行排序,最后再合并在一起。当然,这些排序要么都是升序,要么都是降序。本题全部是按升序排序的。
    例如,为了将整副扑克牌按升序进行排序,先将其分割成两个部分(数量大致相当),对每个部分完成升序排序后,就形成了两叠已排序的牌。如何将其合并呢?办法如下。
    每次都比较各叠最上面的两张牌,取出比较小的,放入新堆,再继续比较。直到其中一堆空了,就将另一堆剩余的牌逐张放入新堆。新堆就是合并后的已完成排序的序列。
    在数据排序时,遇到相同的数比较时,任取一个就可以了。
    对本题来说,i、j、k是数组A、B、C的下标,初始时,都应该是1。因此,空(1)处应填写1。
    将A(i)与B(j)进行比较后,如果A(i)≤B(j),那么应该将A(i)→C(k)。这是升序的要求。因此,空(2)处应填A(i)。如果A(i)>B(j),则应将B(j)→C (k)。因此,空(3)处应填B(j)。
    在A(i)→C(k)后,i应增加1,为下次取A(i)再比较做准备(k也需要增加1,为下次存入C(k)做准备)。这时,需要比较数组A是否已经取完,即判断i>M是否成立。如果i>M,则表示数组A中的元素已经全部取出,需要将数组B中剩余的元素逐个移入C(k)。因此,空(4)处应填i,空(6)处应填B(j)。数组B处的元素何时移完呢?这就需要判断i>N是否成立。因此,空(8)处应填j。
    同样,空(3)处将B(j)存入C(k),直到,j>N时数组B中的元素取完。此时,需要将数组A中剩余的元素逐个移入C(k),直到i>M时全部完成。因此,空(5)处应填j,空(7)处应填A(i),空(9)处应填i。

  • 第15题:

    程序test.c的功能是:将大于整数m且紧靠m的k个素数存入数组XX。请考生编写函数num(intm,intk,intxx[])实现程序的要求,最后调用函数readwriteDAT0把结果输出到0ut.dat文件中。 例如,若输入17,5,则应输出:19,23,29,31,37。


    正确答案:
    【审题关键句】将大于整数m且紧靠m的k个素数存入数组。
    【解题思路】
    ①首先定义一个计数变量cnt并赋初值为0。
    ②利用while循环统计大于整数m且紧靠m的k个素数,当计数变量cnt的值与变量k的值相等的时候,则退出while循环。每执行一次循环时,变量m的值加1,然后调用函数isP判断当前的m值是否为素数,如果是素数,则将m的值赋给数组xx[cnt],同时计算变量cnt的值加1,即当数组xx[0]中保存了一个素数之后,在T一次素数判断成立时将保存到xx[1]的位置上,依次类推。
    【参考答案】

  • 第16题:

    试题一(共 15 分)

    阅读以下说明和流程图,填补流程图中的空缺(1)~(9) ,将解答填入答题纸的对应栏内。

    [说明]

    假设数组 A 中的各元素 A(1),A(2) ,…,A(M)已经按从小到大排序(M≥1) ;数组 B 中的各元素 B(1),B(2),…,B(N)也已经按从小到大排序(N≥1) 。执行下面的流程图后, 可以将数组 A 与数组 B 中所有的元素全都存入数组 C 中, 且按从小到大排序 (注意:序列中相同的数全部保留并不计排列顺序) 。例如,设数组 A 中有元素:2,5,6,7,9;数组B 中有元素:2,3,4,7;则数组 C 中将有元素:2,2,3,4,5,6,7,7,9。

    [流程图]


    正确答案:

  • 第17题:

    利用Math类获取5个随机整数范围在(15,30),不能重复,放在数组中,冒泡排序后遍历输出。


    答案:
    public class Chap55e {
    public static void main(String[] args) {
    int[] arr=new int[5];
    int a;
    for(int i=0;i<5;i++)
    { a=(int)(Math.random()*(30-15))+15;// TODO Auto-generated method stub
    for(int j=0;j<5;j++)
    if(a==arr[j])
    i--;
    else
    {arr[i]=a;
    break;
    }
    }
    for(int k:arr)
    System.out.print(k+" ");
    System.out.println("");
    for(int i=0;i<4;i++)
    for(int j=0;j<4-i;j++)
    {
    int temp;
    if(arr[j]>arr[j+1])
    {
    temp=arr[j];
    arr[j]=arr[j+1];
    arr[j+1]=temp;
    }
    }
    for(int k:arr)
    System.out.print(k+" ");
    }
    }

  • 第18题:

    采用插入排序算法对n个整数排序,其基本思想是:在插入第i个整数时,前i-1个整数已经排好序,将第i个整数依次和第i-1,i-2,…个整数进行比较,找到应该插入的位置。现采用插入排序算法对6个整数{5,2,4,6,1,3}进行从小到大排序,则需要进行( )次整数之间的比较。对于该排序算法,输入数据具有(请作答此空)特点时,对整数进行从小到大排序,所需的比较次数最多。

    A.从小到大
    B.从大到小
    C.所有元素相同
    D.随机分布

    答案:B
    解析:
    采用插入排序算法对6个整数{5,2,4,6,1,3}进行从小到大排序的过程如表所示。

    综上,元素间共比较12次。从上表中的第4步可看出,当待插入的元素比已排序部分的所有元素都要小时,需要比较和移动的元素最多,因此当输入数据序列正好从大到小排列,而需要将其从小到大排序时,元素间的比较次数最多。

  • 第19题:

    编一个程序,输入一个字符串,用ToCharArray()方法把字符串中的内容拷贝到字符数组中,然后用foreach输出该字符数组。


    正确答案: strings;
    Console.WriteLine("请输入一个字符串");
    s=Console.ReadLine();
    char[]ch=newchar[s.Length];
    ch=s.ToCharArray();
    foreach(charcinch)
    {
    Console.WriteLine(c);
    }

  • 第20题:

    定义整数一维数组inta[5]={1,2,3}则数组a的元素个数是()

    • A、3
    • B、5
    • C、4
    • D、2

    正确答案:B

  • 第21题:

    冒泡排序算法中降序排序指的是()

    • A、从高到低排列数组元素值
    • B、从低到高排列数组元素的值
    • C、由横向到纵向排列数组元素的值
    • D、由纵向到横向排列数组元素的值

    正确答案:A

  • 第22题:

    问答题
    编一个程序,输入一个正整数n,把它转换为二进制数,并输出。提示:应该利用数组。

    正确答案: int[]a=newint[80];
    inti,j,n=0;
    while(n<=0)
    {
    Console.WriteLine("请输入一个正整数:");
    n=int.Parse(Console.ReadLine());
    }
    i=0;
    Console.Write("/n正整数{0}转换为二进制数:",n);
    while(n>0)
    {
    a[++i]=n%2;
    n=n/2;
    }
    for(j=i;j>0;j--)Console.Write(a[j]);
    Console.WriteLine();
    解析: 暂无解析

  • 第23题:

    问答题
    编程:用键盘输入整数给一个2×3的2维数组各元素赋值,并输出全部元素的值。

    正确答案: #define Row 2
    #define Col 3
    #include "stdio.h"
    main(){int i,j,array[Row][Col];
    for(i=0;i<Row;i++)
    for(j=0;j<Col;j++)
    {printf("please input array[%2d][%2d]:i,j);
    scanf("%d",&array[i][j]);
    printf("/n");
    for(i=0;i<Row;i++)
    {for(j=0;j<Col;j++)
    printf("%d/t",array[i][j]);
    printf("/n");}
    }
    解析: 暂无解析

  • 第24题:

    问答题
    编一个程序,输入一个字符串,用ToCharArray()方法把字符串中的内容拷贝到字符数组中,然后用foreach输出该字符数组。

    正确答案: strings;
    Console.WriteLine("请输入一个字符串");
    s=Console.ReadLine();
    char[]ch=newchar[s.Length];
    ch=s.ToCharArray();
    foreach(charcinch)
    {
    Console.WriteLine(c);
    }
    解析: 暂无解析