niusouti.com

9、下面代码是实现数组array冒泡排序的片段,划线处应填入() int[] array = { 60, 56, 38, 45 }; int temp; for (int i = 0; i < 3; i++) { for (int j = 0; j < __________; j++) { if (array[j] < array[j + 1]) { temp = array[j]; array[j] = array[j + 1]; array[j + 1] = temp; } } }A.iB.i+1C.

题目

9、下面代码是实现数组array冒泡排序的片段,划线处应填入() int[] array = { 60, 56, 38, 45 }; int temp; for (int i = 0; i < 3; i++) { for (int j = 0; j < __________; j++) { if (array[j] < array[j + 1]) { temp = array[j]; array[j] = array[j + 1]; array[j + 1] = temp; } } }

A.i

B.i+1

C.4-i

D.3-i


相似考题
更多“9、下面代码是实现数组array冒泡排序的片段,划线处应填入() int[] array = { 60, 56, 38, 45 }; int temp; for (int i = 0; i < 3; i++) { for (int j = 0; j < __________; j++) { if (array[j] < array[j + 1]) { temp = array[j]; array[j] = array[j + 1]; array[j + 1] = temp; } } }”相关问题
  • 第1题:

    下列数组定义及赋值,错误的是( )。

    A.int a[]={1,2,3,4,5};

    B.int intArray[];

    C.int Array=new int[3]; int Array[1]=1; int Array[2]=2; int Array[3]=3;

    D.int a[][]=new int[2][]; a[0]=new int[3]; a[1]=new int[3];


    正确答案:C
    解析:一维数组的定义方法为:type arrayName[];,其中类型type可以为Java中任意数据类型,所以选项B是正确的。对数组元素赋值,可以在定义数组的同时进行初始化,所以选项A是正确的。数组下标从0开始,所以选项C是错误的。对多维数组赋值,从最高维开始,分别为每一维分配空间,所以选项D是正确的。

  • 第2题:

    在窗体上画一个名称为Text1 的文本框和一个名称为Command1 的命令按钮,然后编写如下事件过程: Private Sub Commandl1_Click( ) Dim array1 ( 10, 10) As Integer Dim i,j As Integer For i=1 To 3 For j = 2 To 4 Array1 (i, j) =i +j Next j Next i Text1.Text=array1(2.3) + array1(3.4) End Sub程序运行后,单击命令按钮,在文本框中为示的值是( )。

    A.12

    B.13

    C.14

    D.15


    正确答案:A
    解析:经过循环后,数组array1(2,3)=5,array1(3,4)=7,然后将array1(2,3)+array1(3,4)赋给Text1,结果为12。

  • 第3题:

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

    【说明】下面是一个用C编写的快速排序算法。为了避免最坏情况,取基准记录pivot时,采用从left、right和mid=[(left+right)/2]中取中间值,并交换到right位置的办法。数组a存放待排序的一组记录,数据类型为T,left和right是待排序子区间的最左端点和最右端点。

    void quicksort (int a[], int left, int right) {

    int temp;

    if (left<right) {

    hat pivot = median3 (a, left, right); //三者取中子程序

    int i = left, j = right-1;

    for(;;){

    while (i <j && a[i] < pivot) i++;

    while (i <j && pivot < a[j]) j--;

    if(i<j){

    temp = a[i]; a[j] = a[i]; a[i] = temp;

    i++; j--;

    }

    else break;

    }

    if (a[i] > pivot)

    {temp = a[i]; a[i] = a[right]; a[right] = temp;}

    quicksort( (1) ); //递归排序左子区间

    quieksort(a,i+1 ,right); //递归排序右子区间

    }

    }

    void median3 (int a[], int left, int right)

    { int mid=(2);

    int k = left;

    if(a[mid] < a[k])k = mid;

    if(a[high] < a[k]) k = high; //选最小记录

    int temp = a[k]; a[k] = a[left]; a[left] = temp; //最小者交换到 left

    if(a[mid] < a[right])

    {temp=a[mid]; a[mid]=a[right]; a[right]=temp;}

    }

    消去第二个递归调用 quicksort (a,i+1,right)。 采用循环的办法:

    void quicksort (int a[], int left, int right) {

    int temp; int i,j;

    (3) {

    int pivot = median3(a, left, right); //三者取中子程序

    i = left; j = righi-1;

    for (;; ){

    while (i<j && a[i] < pivot)i++;

    while (i<j && pivot <a[j]) j--;

    if(i <j) {

    temp = a[i]; a[j]; = a[i]; a[i]=temp;

    i++; j--;

    }

    else break;

    }

    if(a[i]>pivot){(4);a[i]=pivot;}

    quicksoft ((5)); //递归排序左子区间

    left = i+1;

    }

    }


    正确答案:(1)alefti-1 (2)(left+right+1)/2 (3)while(leftright) (4)a[right)=a[i] (5)aleft i-1
    (1)a,left,i-1 (2)(left+right+1)/2 (3)while(leftright) (4)a[right)=a[i] (5)a,left, i-1 解析:(1)a,left,i-1
    递归排序左子区间,从left到i-1元素,不包括i元素。
    (2)(left+right+1)/2
    三者取中子程序median3(a,left,right),取基准记录pivot时,采用从left、right和 mid=[(left+right)/2]中取中间值,并交换到right位置的办法。
    (3)while(leftright)
    循环直到left和right相遇。
    (4)a[right)=a[i]
    若a[i]>pivot则让a[right]=a[i]而让a[i]=pivot;。
    (5)a,left, i-1
    递归排序左子区间,从left到i-1元素,不包括i元素。

  • 第4题:

    本程序用冒泡法对数组a[]的元素从大到小排序,请在程序空白处填空。 void bubble(int a[],int n) {int i,j,max,temp; max=n-1; do{j=0; for(i=0;i<max;i++) if(a[i]<a[i+1]) {temp=a[i];a[i]=a[i+1];a[i+1]=temp; j=i; } max=j; }while(( )); }


    正确答案:max>0
    max>0 解析:本题是典型的冒泡排序题,每一次for循环将从数组a中找出剩下数中的最大的值放在这些数的最前端,若数组a中有n个数,则完成数组排序共需n-1次循环。令max=n-1,每次循环后i值增1,imax条件不足,即n-1次循环后,此时i=j=max=0,循环结束。

  • 第5题:

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

    【说明】

    将一正整数序列{K1,K2,…,K9}重新排列成一个新的序列,新序列中,比K1小的数都在K1的前面(左面),比K1大的数都在K1的后面(右面),最后调用writeDat()函数的新序列输出到文件out.dat中。

    在程序中已给出了10个序列,每个序列有9个正整数,并存入数组a[10][9]中,分别求出这10个新序列。

    例:序列{6,8,9,1,2,5,4,7,3}

    经重排后成为{3,4,5,2,1,6,8,9,7}

    【函数】

    include < stdio. h >

    include < conio. h >

    void jsValue( int a [10] [9] )

    { int i,j,k,n,temp;

    int b[9];

    for(i=0;i<10;i++)

    { temp=a[i] [0];

    k=8;n=0;

    for(j=8;j=0;j--)

    { if(temp < a[i] [j]) (1)=a[i][j];

    if(temp >a[i] [j]) (2)=a[i][j];

    if(temp =a[i] [j]) (3)= temp;

    }

    for(j=0;j<9;j++) a[i][j] =b[j];

    }

    }

    void main( )

    int a[10] [9] = {{6,8,9,1,2,5,4,7,3},{3,5,8,9,1,2,6,4,7},

    {8,2,1,9,3,5,4,6,7}, {3,5,1,2,9,8,6,7,4},

    {4,7,8,9,1,2,5,3,6}, {4,7,3,5,1,2,6,8,9},

    {9,1,3,5,8,6,2,4,7}, {2,6,1,9,8,3,5,7,4},

    {5,3,7,9,1,8,2,6,4}, {7,1,3,2,5,8,9,4,6}

    };

    int i,j;

    (4);

    for(i=0;i<10;i++) {

    for(j=0;j<9;j++) {

    printf("%d",a[i] [j] );

    if((5))printf(",");

    }

    printf(" \n" );

    }

    getch( );

    }


    正确答案:(1)b[k--] (2)b[n++] (3)b[n] (4)jsValue(a) (5)j=7
    (1)b[k--] (2)b[n++] (3)b[n] (4)jsValue(a) (5)j=7 解析:在主函数中先要调用函数jsValue()对数组a进行处理,所以(4)空应填入“jsValue(a)”。然后输出数组元素,同一行的元素之间用逗号分隔,所以(5)空应填入“j=7”。
    函数jsValue()是将数组按题目要求进行排序。通过观察发现处理后的数组中元素的顺序与原来的顺序相反,并且每一行中没有与第一个数相同的数,所以是从后往前处理,也就是将每组从最后往前倒序逐个问第一个数比较,比它大的就放到临时数组b中的最后,比它小的就放到临时数组b中的最前面,以次类推,所以(1)空应填入“b[k- -]”,(2)空应填入“b[n++],(3)空应填入“b[n]”。最后将b数组赋给a数组。

  • 第6题:

    请补充函数fun(),该函数的功能是:按行统计N×N维矩阵元素中的最大值(均为整数),并把这些值按从小到大的顺序保存在数组b中。矩阵的维数在主函数中输入,并赋予随机数。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。

    试题程序:

    include<stdio.h>

    include<conio.h>

    include<stdlib.h>

    define N 20

    void fun(【 】)

    {

    int i j;

    int t;

    for(i=0;i<n;i++)

    for(j=0;j<n;j++)

    if(【 】)

    b[i]=a[i][j];

    for(i=0;i<n;i++)

    {

    for(j=0;i<n;j++)

    if(【 】)

    {

    t=b[i];

    b[i]=b[j];

    b[j]=t;

    }

    }

    }

    main()

    {

    int a[N][N];

    int b[N];

    int n;

    int i,j;

    clrscr();

    printf("*****Input the dimension of array N*****\n");

    scanf("%d",&n);

    printf("*****The array *****\n");

    for(i=0;i<n;i++)

    {

    for(j=0;i<n;j++)

    {

    a[i][j]=rand()%20;

    while(a[i][j]==0)

    a[i][j]=rand()%30;

    printf("%4d",a[i][j]);

    }

    printf(”\n\n”);

    }

    for(i=0;i<n;i++)

    b[i]=0;

    fun(a,b,n);

    printf("***** THE RESULT *****\n");

    for(i=0;i<n;i++)

    printf(“%d”,b[i]);

    }


    正确答案:int a[][N]int b[]int n b[i]a[i][j] b[i]b[j]
    int a[][N],int b[],int n b[i]a[i][j] b[i]b[j] 解析:第一空:根据主函数main()调用函数fun()的格式,可以知道函数fun()有3个参数,第一个参数是N×N整型二维数组,第二个参数是整型—维数组,第三个参数是整型变量。第二空:数组元素b[i]保存第i行的最大值,通过循环将第i行的各元素与b[i]进行比较,如果大于b[i],则将这个数赋给b[i].第三空:通过for循环嵌套,将数组b中的数按从小到大的顺序排列,依次将各元素与所有元素进行比较,如果有一个元素比当前元素大,就借助第三个变量交换这两个元素,最终使第一个元素保存数组中最小的数,最后一个元素保存数组中最大的数。

  • 第7题:

    阅读以下说明及C++程序代码,将应填入(n)处的语句写在对应栏内。

    【说明】

    本程序的功能是生成螺旋方阵,用户可以输入该方阵的行列数,然后就生成对应的螺旋方阵。例如:当n=5时,对应的螺旋方阵如下:

    1 16 15 14 13

    2 17 24 23 12

    3 18 25 22 11

    4 19 20 21 10

    5 6 7 8 9

    【C++代码】

    include"stdio.h"

    include"iostream,h"

    int array[11][11];

    int temp;

    int ROW;

    void godown(int &m,int &a)

    {

    for(temp=1; temp<=ROW;temp++)

    if(array[temp][a]==0)

    array[temp][a]=(1);

    a++;

    }

    void goright(int &m,int &b)

    {

    for(temp=1;temp<=ROW;temp++)

    if(array[b][temp]==0)

    array[b][temp]=m++;

    b--;

    }

    void goup(int &m.int &c)

    {

    for(temp=ROW;temp>0;temp-)

    if(array[temp][c]==0)

    array[temp][c]=m++;

    c--;

    }

    void goleft(int &m,int &d)

    {

    for(temp=ROW;temp>0;temp--)

    if(array[d][temp]==0)

    array[d][temp]=m++;

    (2);

    }

    void main()

    {

    int a,b,c,d,max,m;

    cin>>ROW;

    cout>>end1;

    for(a=1;a<=ROW;a++)

    for(b=1;b<=ROW;b++)

    (3);

    m=1;

    a=d=1;

    b=c=ROW;

    max=(4);

    whiie(m<=max)

    {

    godown(m,a);

    (5) (m,b);

    goup(m,c);

    goleft(m,d):

    }

    for(a=1;a<=ROW;a++)

    {

    for(b=1;b<=ROW;b++)

    printf("%3d ",array[a][b]);

    cout<<end1;

    }

    }


    正确答案:(1)m++ (2)d++ (3)array[a][b]=0 (4)ROW*ROW (5)goright
    (1)m++ (2)d++ (3)array[a][b]=0 (4)ROW*ROW (5)goright 解析:本题考查C++中螺旋方阵的实现。
    题目要求在用户输入该方阵的行列数后,自动生成对应的螺旋方阵。首先我们来简单分析一下螺旋方阵的特点,顾名思义,其基本结构是成螺旋形状的,按照螺旋的方向数值逐渐增大,直到最中间的一点结束。程序中分别用4个函数来实现其螺旋方向向下、向右、向上和向左时,数组中相应元素的变化,结合程序可以发现数组的初值是全0。
    第(1)空在螺旋方向向下的实现函数中,当螺旋方向向下时,二维数组中列不变而逐行加1,从程序中可以看出此空所在行的作用就是用来改变数组中元素的值,结合整个程序知道变量m中存放的是当前位置的数值,因此,此空答案为m++。
    第(2)空在螺旋方向向左的实现函数中,当螺旋方向向左时,二维数组中行不变而随列下标temp的变化逐列加1,直到数组元素不为0,这个时候说明已经到了被螺旋线经过的列,因此,要往后退一列即列下标变量d加1,此空答案为d++。
    第(3)空在一个二重循环下面,程序声明了一个二维数组且没有初值,结合程序可以推断出此空的任务就是给数组赋初值。而根据上面的分析,数组的初值应该是全0,因此,此空答案为array[a][b]=0。
    第(4)空很明显是给变量max赋初值,这要求先去弄清楚变量max的作用。由语句while(m=max)我们可以推断出变量max中存放的是最大的数据项,而一个n阶的方阵中最多有n×n个元素,从程序中可以知道,这是一个ROW阶的方阵,因此,此空答案为ROW*ROW。
    第(5)空是调用上面的4个函数,根据螺旋方阵的生成规则,应该是先向下,接着向右,再向上,最后向左,结合程序我们知道此空是调用向右的函数。因此,此空答案为goright。

  • 第8题:

    阅读以下说明及C++程序代码,将应填入(n)处的语句写在对应栏内。

    【说明】

    本程序的功能是实现任意两个大整数的乘法运算,例如:

    输入整数1:8934793850094505800243958034985058

    输入整数2:234584950989689084095803583095820923

    二者之积:

    209596817742739508050978890737675662366433464256830959194834854876 8534

    【C++代码】

    include<iostream.h>

    const int MAXINPUTBIT=100;

    const int MAXRESULTBIT=500;

    class LargeNumber{

    int i,j;

    int temp;

    int one[MAXINPUTBIT+1];

    int onebit; //one的位数

    int two[MAXINPUTBIT+1];

    int twobit; //two的位数

    int result[MAXRESULTBIT+1];

    public:

    LargeNumber();

    ~LargeNumber();

    int inputone(); //出错返叫0,否则返回1

    int inputtwo(); //同上

    void multiplication(); //乘

    void clearresult(); //清零

    void showresult(); //显示

    };

    LargeNumber∷LargeNumber()

    {

    for(i=0;i<=MAXINPUTBIT;i++)

    {

    one[i]=0;

    two[i]=0;

    }

    nebit=0;

    twobit=0;

    inputone();

    inputtwo();

    }

    LargeNumber∷~LargeNumber()

    {

    }

    int LargeNumber∷inputone()

    {

    char Number[MAXINPUTBIT+1];

    cout<<"Please enter one:";

    cin>>Number;

    i=0;

    j=MAXINPUTBIT;

    while(Number[i]!='\0')

    i++;

    nebit=i;

    for(i--;i>=0;i--,j--)

    {

    if(int(Number[i])>=48&&int(Number[i])<=57)

    (1); //由字符转换为数字

    else

    return 0;

    }

    return 1;

    }

    int LargeNumber∷inputtwo()

    {

    char Number[MAXINPUTBIT+1];

    cout<<"Please enter two:";

    cin>>Number;

    i=0;

    j=MAXINPUTBIT;

    while(Number[i]!='\0')

    i++;

    twobit=i;

    for(i--;i>=0;i--,j--)

    {

    if(int(Number[i])>=48&&int(Number[i])<=57)

    two[j]=int(Number[i]-48); //由字符转换为数字

    else

    return 0;

    }

    return 1;

    }

    void LargeNumber∷multiplication() //乘法

    {

    clearresult();

    int m;

    for(i=MAXINPUTBIT;i>=0;i--)

    {

    temp=two[i];

    for(j=(2),m=MAXINPUTBIT;m>=0;m--,j--)

    {

    result[j]+=temp*one[m];

    if(result[j]>9)

    {

    result[j-1]+=result[j]/10;

    (3);

    }

    }

    &n


    正确答案:(1)one[j]=int(Number[i]-48) (2)MAXRESULTBIT-(MAXINPUTBIT-i) (3)result[j]%=10 (4)result[i] (5)result[i]=0
    (1)one[j]=int(Number[i]-48) (2)MAXRESULTBIT-(MAXINPUTBIT-i) (3)result[j]%=10 (4)result[i] (5)result[i]=0 解析:本题考查用C++实现大整数的乘法运算。
    题目要求程序能实现从键盘任意输入的两个大整数的乘法运算。在程序中定义了一个大整数类,在类中抽象了大整数的一些属性,如长度等,还声明了一些操作,有对大整数输入的操作和对大整数求乘积的操作等。下面来具体[分析]程序。
    第(1)空在第一个大整数的输入函数中,根据此空后面的注释我们知道,其功能是把字符转换为数字。在这里需要注意的是,从键盘输入的是字符型的一串字符,此空所在的条件判断语句是用来把这串字符中的数字找出来,接下来就是此空,要求把字符型的数字转换为整型的数字,而字符型数字与整型数字之间的ASCⅡ码值相差48。从第二个大整数的输入函数中,我们也可以很容易知道此空答案为one[j]=int(Number[i]-48)。
    第(2)空在对大整数求乘积的函数中,是一个循环的初始条件,从程序中不难看出,这个二重循环是用来实现对两个大整数求乘积的,而变量j是用来存放计算结果数组的当前下标的,根据乘法的规则,不难得出此空答案为MAXRESULTBIT-(MAXINPUTBIT-i)。
    第(3)空也在求积的二重循环中,它是在语句if(result[j]>9)为真的情况下执行的语句,如果这个条件为真,说明当前需要进位,但到底是进几位,进位后余下的数又应该是多少呢?这就是这个条件判断语句下要完成的任务,从程序中不难看出,对于到底进几位这个问题已经解决,剩下的就是对进位后余数的处理,此空的任务就是求出进位后的余数并存放到数组的当前位置。所以,此空答案为result[j]%=10。
    第(4)空在输出计算结果的函数中,从程序中可以看出,此空在_个循环中,循环的作用是输出计算结果,而计算结果存放在数组中,因此,这个循环是用来输出数组中的所有元素。因此,此空答案为result[i]。
    第(5)空是在清除计算结果的函数中,函数中只有一个循环,此空就在循环下面,计算结果存放在数组中,要清除计算结果就是把数组清零,那么此空的任务是把数组中的每个元素变成零,因此,此空答案为result[i]=0。

  • 第9题:

    编写程序,实现矩阵(3行3列)的转置(即行列互换)。

    例如,若输入下面的矩阵:

    100 200 300

    400 500 600

    700 800 900

    则程序输出:

    100 400 700

    200 500 800

    300 600 900

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

    试题程序:

    include <stdio.h>

    include <conio.h>

    int fun (int array[3][3])

    {

    }

    main()

    {

    int i,j;

    int array [3][3]={{100,200,300},{400,

    500,600},{700,800,900}};

    clrscr();

    for (i-0;i<3;i++)

    {for (j=0;j<3;j++)

    printf("%7d ",array[i] [j]);

    printf("\n ");

    }

    fun(array);

    printf("Converted array:\n ");

    for (i=0;i<3;i++)

    { for (j=0;j<3;j++)

    printf("%7d ",array[i][j]);

    printf("\n ");

    }

    }


    正确答案:int fun (int array[3][3]) { int ijt; for(i=0;i3;i++) /*将右上三角和左下三角对换实现行列互换*/ for(j=i+1;j3;j++) {t=array[i][j]; array[i][j]=array[j][i]; array[j][i]=t; } }
    int fun (int array[3][3]) { int i,j,t; for(i=0;i3;i++) /*将右上三角和左下三角对换,实现行列互换*/ for(j=i+1;j3;j++) {t=array[i][j]; array[i][j]=array[j][i]; array[j][i]=t; } } 解析:注意对矩阵转置后仍然存回其本身时,只能循环矩阵中的一个角(本程序是右上半三角)。控制右上半三角的方法是在第2个循环中j从i+1或i开始,左下半三角的方法是在第2个循环中写成for(j=0;ji;j++),若要控制所有元素在第2个循环要写成for(j=0;j3;j++)。

  • 第10题:

    阅读以下说明和C语言函数,将应填入(n)处的字句写在对应栏内。

    【说明】

    输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

    【函数】

    main ( )

    {

    int number[10];

    input (number);

    max min (number);

    output (number);

    }

    input (number)

    int number[10];

    {int i;

    for ( i=0;i<9;i++ )

    scanf ( "%d,",&number[i] );

    scanf ( "%d",&number[9] );

    }

    max_min ( array )

    int array[10];

    {int *max,*min,k,1;

    int *p,*arr_end;

    arr end=(1);

    max=min=array;

    for ( p=(2);p<arr_end;p++ )

    if((3)) max=p;

    else if ( *p<*min ) min=p;

    (4);

    l=*min;

    (5);array[0]=1;1=*p;

    *p=array[9];array[9]=k;k=*p;

    return;

    }

    output ( array )

    int array[10];

    { int *p;

    for ( p=array;p<array+9;p++ )

    printf ( "%d,",*p );

    printf ( "%d\n",array[9] );

    }


    正确答案:(1)array+10 (2) array+1 (3) *p>*max (4) k=*max (5) *p=array[0]
    (1)array+10 (2) array+1 (3) *p>*max (4) k=*max (5) *p=array[0]

  • 第11题:

    写出模板函数实现数值型数组元素值按从小到大排序的程序。

    include<iostream>

    using namespace std;

    template <class T>

    void sort(T b[],int n)

    {

    T temp;

    int i,j;

    T *a=new T[n];

    for (i=0;i<n;i++){a[i]=b[i];}

    for(i=0;i<n-1;i++)

    {

    for(j=i+1;j<n;j++)

    { if(a[i]>a[j])

    {temp=a[i];

    a[i]=a[j];

    a[j]=temp;

    }

    }

    }

    for(i=0;i<n;i++){cout<<a[i]<<" ";}

    cout<<endl;

    delete []a;

    }

    void main()

    {

    int i,n=6;

    int a[]={5,1,9,10,3,8};

    ____________;

    for(i=0;i<n;i++)

    {cout<<a[i]<<" ";}

    cout<<endl;

    }


    正确答案:
    template<classT><int>(a,6)

  • 第12题:

    You need to create a JSP that generates some JavaScript code to populate an array of strings used on theclient-side. Which JSP code snippet will create this array?()

    • A、MY_ARRAY = new Array();<% for ( int i = 0; i < serverArray.length; i++ ) { MY_ARRAY[<%= i %>] = ’<%= serverArray[i] %>’;} %>
    • B、MY_ARRAY = new Array();. <% for ( int i = 0; i < serverArray.length; i++ ) { . MY_ARRAY[${i}] = ’${serverArray[i]}’;. } %>
    • C、MY_ARRAY = new Array();. <% for ( int i = 0; i < serverArray.length; i++ ) { %> . MY_ARRAY[<%= i %>] = ’<%= serverArray[i] %>’;. <% } %>
    • D、MY_ARRAY = new Array();<% for ( int i = 0; i < serverArray.length; i++ ) { %> . MY_ARRAY[${i}] = ’${serverArray[i]}’;. <% } %>

    正确答案:C

  • 第13题:

    C语言数组输出间隔

    #include <stdio.h>void main(){ void sort(int array[],int n); int a[10],i; printf("enter the array:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); sort(a,10); printf("The sorted array:\n"); for(i=0;i<10;i++) printf("%d",a[i]); printf("\n");}void sort(int array[],int n){ int i,j,k,t; for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) if(array[j]<array[k]) k=j; t=array[k];array[k]=array[i];array[i]=t; }}程序呢,就是这个了。谭老爷子书上的例题,和书上一样,然后输入:5 7 -3 21 -43 67 321 33 51 0 然后从小到大排好后输出,书上他们之间从小到大有间隔,但是我运行了,没有间隔。。。。( ⊙o⊙ )?咋解决?????来高手解答。。。我运行后是:-43-305721335167321


    #include <stdio.h> void main() { void sort(int array[],int n); int a[10],i; printf("enter the array:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); sort(a,10); printf("The sorted array:\n"); for(i=0;i<10;i++) printf("%d\t",a[i]);//在这加一个\t就行了 printf("\n"); }

  • 第14题:

    阅读下列Java程序和程序说明, 将应填入(n)处的字句写在答题纸的对应栏内。

    【说明】数据排序。将给定的n个整数分别按照升序和降序进行排列。

    class SortInt_1

    {

    int i, j, k, temp;

    void SortInt(int a1, a2[]){//升序排序

    for(i=0; i<a1-1; i++){

    k=i;

    for(j=i+1 ;j<a1 ;j++)

    if ((1)) k=j;

    if(k!=i){

    temp=a2[i];a2[i]=a2[k];a2[k]=temp;

    }

    }

    }

    }

    class Sortlnt_2 (2)

    {

    int i, j, k, temp;

    void Sortlnt(int a1,a2[]){//降序排序

    for(i=0;i<a1-1 ;i++) {

    k=i;

    for(j=i+1 ;j<a1 ;j++)

    if ((3)) k=j;

    if(k!=i){

    temp=a2[i];a2[i]=a2[k];a2[k]=temp;

    }

    }

    }

    }

    Class TestOverLoad {

    Public static void main(String args[])

    {

    int a[]={10,55,100,35,87,90,100,16};

    Sortlnt_1 newlnt1=(4);

    Newlnt1. SortInt(a. length, a);//调用SortInt_1类的方法

    System. out. println("升序排列的数据");

    For(int i=0;i<8;i++)

    System. out. print(a[i]+" ");

    system. out. println();

    SortInt_2 newInt2=new sortint_2(); //创建类SortInt_2的对象

    (5);

    System. out. println("降序排列的数据: ");

    For(int i=0;i<8;i++)

    System. out. print(a[i]+" ");

    }

    }


    正确答案:(1) a2[j]a2[k] (2) extends SortInt_1 (3) a2[j]>a2[k] (4) new SortInt_1() (5) Newint2.SortInt(a. length a)
    (1) a2[j]a2[k] (2) extends SortInt_1 (3) a2[j]>a2[k] (4) new SortInt_1() (5) Newint2.SortInt(a. length, a) 解析:(1) a2[j]a2[k]
    选择排序的判断条件,k是最小元素的下标。
    (2) extends SortInt_1
    类的多态,SortInt2由类SortInt1派生而来。
    (3) a2[j]>a2[k]
    选择排序的判断条件,k是最大元素的下标。
    (4) new SortInt_1()
    创建类SortInt1的对象,再调用SortInt1类的方法进行升序排序。
    (5) Newint2.SortInt(a. length, a)
    调用SortInt2类的方法,实现降序排序。
    本题采用选择排序的方法,第1、3空考查对算法的掌握,两空可互相对照,第2、4、 5空考查对Java语言的掌握情况,两空亦可互相对照,难度不大。

  • 第15题:

    有以下程序: include include usingnamespacestd; intmain() {intarrays

    有以下程序: #include <iostream> #include <cstdlib> using namespace std; int main() { int arraysize; int *array; cout<<"Please input the size of the array:"; cin>>arraySiZe; array=new int[arraysize]; if(array==NULL) { cout<<"allocate Error\n"; exit(1); } for(int i=0;i<arraysize;i++) array[i]=i*i; int j; cout<<"which element you want to check:"; cin>>j; cout<<array[j]<<end1; return 0; } 执行程序输入:10<空格>5,则输出结果为( )。

    A.allocate Error

    B.1

    C.0

    D.25


    正确答案:D
    解析:程序中利用new()申请动态分配数组。利用for循环给数组array赋值。最后输出想要检查元素的值。程序输10,即数组array元素个数为10。程序输入5,即检查元素array[5]的值。由for循环的赋值运算可知array[5]的值为25,所以程序最后输出25。

  • 第16题:

    阅读下列函数说明和C代码,将应填入(n)处的字句写在对应栏内。

    【说明】

    函数QuickSort是在一维数组A[n]上进行快速排序的递归算法。

    【函数】

    void QuickSort( int A[ ],int s,int t)

    { int i=s,j=t+1,temp;

    int x=A[s];

    do{

    do i ++ ;while (1);

    do j -- ;while(A[j]>x);

    if(i<j){temp=A[i];(2);(3);}

    }while(i<j);

    A[a] =A[j];A[j] =x;

    if(s<i-1) (4);

    if(j+1<t) (5);

    }


    正确答案:(1)A[i]x (2)A[i]=A[j] 3)A[j]=temp (4)QuickSort(Asj-1) (5)QuickSort(Aj+1t);
    (1)A[i]x (2)A[i]=A[j] 3)A[j]=temp (4)QuickSort(A,s,j-1) (5)QuickSort(A,j+1,t); 解析:快速排序的思想是:任取待排序序列中的某个元素作为基准(一般取第一个元素),通过一趟排序,将待排元素分为左右两个子序列,左子序列元素的排序码均小于或等于基准元素的排序码,右子序列的排序码则大于基准元素的排序码,然后分别对两个子序列继续进行排序,直至整个序列有序。快速排序是对冒泡排序的一种改进方法,算法中元素的比较和交换是从两端向中间进行的,排序码较大的元素一次就能够交换到后面单元,排序码较小的记录一次就能够交换到前面单元,记录每次移动的距离较远,因而总的比较和移动次数较少。

  • 第17题:

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

    【程序1说明】

    程序1中定义了数组的类模板,该模板使得对于任意类型的二维数组,可以在访问数组元素的同时,对行下标和列下标进行越界判断,并给出相应的提示信息(C++语言本身不提供对下标越界的判断)。

    【程序1】

    include < iostream. h >

    template < class T > class Array2D;

    template < class T > class Array2DBody {

    friend (1);

    T * tempBody;

    int iRows, iColumns, iCurrentRow;

    Array2DBody(int Rows,int Cols) {

    tempBody =(2);

    iRows = Rows;

    iColumns = Cols;

    iCurrentRow = -1;

    }

    public:

    T& operator[ ] (int j){

    bool row_ error, column_ error;

    row_ error = column_ error = false;

    try {

    if ( iCurrentRow < 0||iCurrentRow > = iRows)

    row_ error = true;

    if( j < 0||j > = iColumns)

    column_error = true;

    if( row_error = = true [ [ column_ error = = true)

    (3);

    }

    catch(char) {

    if (row_error = = true)

    cerr < < "行下标越界"[" < < iCurrentRow < < "]";

    if( colmnn_error = = true)

    cerr< <"列下标越界[" < <j< <"]";

    cout < < "\n";

    }

    return tempBody[ iCurrentRow * iColumns + j ];

    }

    ~ Array2 DBody ( ) { delete [ ] tempBody; } }; template < class T > class Array2D {

    Array2DBody < T > tBody;

    public:

    Array2DBody < T > & operalor[ ] (int i) {

    tBody, iCurreutRow = i;

    (4);

    Array2D(int Rows,int Cols): (5) {} };

    void main( )

    {

    Array2D <int> al ( 10,20 );

    Array2D <double> a2(3,5);

    int bl;

    double b2;

    b1=a1[-5][10];//有越界提示:行下标越界[-5]

    b1=a1[10][15];//有越界提示:行下标越界[10]

    b1=a1[1][4];//没有越界提示

    b2=a2[2][6];//有越界提示:列下标越界[6]

    b2=a2[10][20];//有越界提示:行下标越界[10]列下标越界[20]

    b2=a2[1][4];//没有越界提示

    }


    正确答案:(1)class Anay2D T>
    (1)class Anay2D T> 解析:此处应当是类的友元类或者友元函数,程序中只有一个模板类,即Array2DT>。

  • 第18题:

    下列程序定义了N×N的二维数组,并在主函数中自动赋值;请编写函数fun(int a[][N]),该函数的功能是:使数组左下半三角元素中的值全部置成0。例如a数组中的值为

    a=1 9 7

    2 3 8

    4 5 6

    则返回主程序后a数组中的值应为

    0 9 7

    0 0 8

    0 0 0

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

    试题程序:

    include <conio.h>

    include <stdio.h>

    include <stdlib.h>

    define N 5

    int fun (int a[] [N])

    {

    }

    main()

    {

    int a[N] [N],i,j;

    clrscr();

    printf("*****The array*****\n");

    for(i=0;i<N;i++)

    /*产生—个随机的5*5矩阵*/

    { for(j=0;j<N;j++)

    {a[i][j]=rand()%10;

    printf("%4d", a[i][j]);

    }

    printf("\n");

    }

    fun (a);

    printf("THE RESULT\n");

    for(i=0;i<N;i++)

    { for(j=0;j<N;j++)

    printf("%4d",a[i][j));

    printf("\n");

    }

    }


    正确答案:int fun (int a[][N]) { int ij; for(i=0;iN;i++) for(j=0;j=i;j++) a[i][j]=0; /*将数组左下半三角元素中的值全部置成0*/ }
    int fun (int a[][N]) { int i,j; for(i=0;iN;i++) for(j=0;j=i;j++) a[i][j]=0; /*将数组左下半三角元素中的值全部置成0*/ } 解析:本题旨在考查控制数组中左下半三角元素的算法,也就是两个千篇一律的循环语句,希望学习者能够掌握消化。

  • 第19题:

    阅读以下函数说明和Java代码,将应填入(n)处的字句写在对应栏内。

    【说明】

    以下程序实现数据的排序,将n个整数分别按照升序和降序进行排序,类SortInt_1实现升序排序,类SortInt_2实现降序排序。

    【Java代码】

    class SortInt_1{

    int i,i,k,temp;

    void SortInt(int a1,int a2[]){//升序排序

    for(i=0;i<a1-1;i++){

    k=i;

    for(j=i+1;j<a1;j++){

    if((1)) k=j;

    if(k !=i){

    temp=a2[i];a2[i]=a2[k];a2[k]=temp;

    }

    }

    }

    }

    }

    class SortInt_2 (2) {

    int i,j,k,temp;

    void SortInt(int a1, int a2[]){//降序排序

    for(i=0; i<a1-1;i++){

    k=i;

    for(j=i+1;j<a1;j++){

    if((3))k=j;

    }

    if(k !=i){

    temp=a2[i];a2[i]=a2[k];a2[k]=temp;

    }

    }

    }

    }

    public class test{

    public static void main(String args[]){

    int a[]={10,55,100,35,87,90,100,16};

    SortInt_1 NewInt=(4);

    NewInt.SortInt(a.lenvh,a);//调用SortInt_1类的方法

    System.out.println("升序排列的数据: ");

    for(int i=0;i<a.length;i++){

    System.out.print(a[i]+" ");

    }

    System.out.println();

    NewInt=new SortInt_2();//创建类SortInt_2的对象

    (5);//调用相应方法进行降序排序

    System.out.println("降序排列的数据: ");

    for(int i=0;i<a.length;i++){

    System.out.print(a[i]+" ");

    }

    }

    }


    正确答案:(1) a2[k]>a2[j] (2) extends SortInt_1 (3) a2[k]a2[j] (4) new SortInt_1() (5) NewInt.SortInt(a.lengtha)
    (1) a2[k]>a2[j] (2) extends SortInt_1 (3) a2[k]a2[j] (4) new SortInt_1() (5) NewInt.SortInt(a.length,a) 解析:本题所采用的排序方法是简单选择排序,即:对n个记录进行选择排序。基本思想如下,通过n-i次关键字的比较,从n-i+1个记录中选出关键字最小的记录,并和第i个记录进行交换,当i等于n时所有记录有序排列。
    据此,类SortInt_1中的SortInt方法实现升序排序,则每次应该选择尚未排序记录中关键字最小的记录,因此空(1)应填a2[j]a2[k]。同理,类SortInt_2中的SortInt方法实现降序排序,则每次应该选择尚未排序记录中关键字最大的记录,故空(3)应填a2[j]>a2[k]。
    根据说明,紧跟空(4)的语句NewInt.SortInt(a.length,a)是调用SortInt_1类的方法,意味着此时NewInt是一个SortInt_1类实例,故空(4)应填new SortInt_1()。
    接着,有语句“NewInt=new SortInt_2()”创建类SortInt_2的对象并将其赋值给NewInt变量,根据赋值兼容规则,这意味着SortInt_2对象是一个Sortlnt_1对象,亦即SortInt_2是 SortInt_1的子类,故空(2)应填extends SortInt_1。
    空(5)比较简单,对照上述的调用,可得空(5)应填NewInt.SortInt(a.length,a)。

  • 第20题:

    下列程序用于打印出ASCⅡ字符,其析构函数内的语句应为【 】。 include inelude

    下列程序用于打印出ASCⅡ字符,其析构函数内的语句应为【 】。

    include<iostream. h>

    inelude<iomanip, h>

    template<class T>

    class Array

    {

    T * elems;

    int size;

    public:

    Array(int.s);

    ~Array()

    T& operator[](int)

    void perator=(T)

    };

    template<class T>

    Array<T>::Array(int s)

    size=s;

    elems=new T[size]

    for(int i=0;i<size;i++)

    elems[i]=0

    }

    template<celass T>

    Array<T>::~Array()

    {

    ______

    template <class T>

    T& Array<T>::operator[](int index)

    {

    return elems[index];

    }

    template<class T>

    void Array<T>::operator=(T temp)

    {

    for(int i=0;i<size;i++)

    elems[i]=temp;

    }

    void main()

    {

    int i,n=26;

    Array<int> arr1(n)

    Array<char> arr2(n)

    for(i=0;i<n;i++)

    { -.

    arr1[i]='a'+i;

    arr2[i]='a'+i;

    }

    cout<<"ASCII 字符"<<endl;

    for(i=0;i<n;i++)

    cout<<setw(8)<<arr1[i]<<setw(8)<<arr2[i]<<endl;

    }


    正确答案:delete elems;
    delete elems; 解析:注意,用new动态申请的内存在使用完成后一定要用delete释放。

  • 第21题:

    在窗体上画一个名称为Text1的文本框和一个名称为Commmand1的命令按钮,然后编写如下事件过程:Private Sub Command1_Click () Dim array 1 (10, 10) As Integer Dim i, j As Integer for i = 1 To 3 for j = 2 To 4 array1(i, j)= i+ j Next j Next i Text1.Text= array1(2, 3) +array1(3, 4)End Sub程序运行后,单击命令按钮,在文本框中显示的值是______。

    A.12

    B.13

    C.14

    D.15


    正确答案:A
    解析:本题的难点是嵌套循环的计算。根据“array1(i,j)=i+ j”可知,“array1(i,j)”的值为两个下标值之和,所以“array1(2,3)+array1(3,4)”的值为“2+3+3+4=12”。

  • 第22题:

    本题的功能是用冒泡法对数组元素arr[]={30,1,-9,70)进行从小到大排列。冒泡法排序是比较相邻的两个元素的大小,然后把小的元素交换到前面。

    public class javal{

    public static void main(String[]args){

    int i,j;

    int arr[]={30,1,-9,70);

    int n= ;

    for(i=0;i<;n-1;i++){

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

    if(arr[i]>;arr[j]){

    int temp=arr[i];

    }

    }

    }

    for(i=0;i<;n;i++)

    System.out.print(arr[i]+"");

    }

    }


    正确答案:
    第1处:arr.length第2处:arr[]=arr[j]第3处:arr[j]=temp【解析】第1处从下面的循环结构可看出n的值应为数组的大小;第2处和第3处是借助临时变量把小的元素交换到前面。

  • 第23题:

    若有以下程序: #include〈iostream〉 using namespace std; int main() { int data[4],i,j,temp; for (i=O; i<4; i++) cin>>data[i]; for (i=1; i<4; i++) { j = i-1; temp = data[i]; while (data [j ] >temp&&j >=0) { data[j+1] = data[j]; j--; } data[j+1] = temp; } for(i=O;i<4;i++) cout〈〈data[i]〈〈" "; cout〈〈end1; return 0; }

    A.2843

    B.2348

    C.8243

    D.8432


    正确答案:B
    解析:本题属于综合题,考查数组和循环语句两方面的知识。此题看起来很复杂,其实不然,根据程序逐步分析:①在程序第1个for语句中,为数组data赋输入的值,即2,8,4,3。②第2个for语句是嵌套式循环,循环次数是3次,即从1到3。第1次循环时,i=1,执行“j=i-1”后,j=0,然后把data[1]的值赋给temp,再进入while循环。③while后的条件表达式“data[j]〉temp&&j〉=0”,就是当data刚大于temp,同时j不小于0时执行while循环体。当while条件表达式成立时,执行“data[j+1]=data[j]”,即当data刚大于data[j]大于data[j+1]时,把它们俩的值交换一下,以此类推,最后实现把数组中的数从小到大排列起来。④最后一个for语句用于打印经过程序处理后数组中的元素。

  • 第24题:

    单选题
    有以下程序:#include int sum(int *array,int len){ if(len == 0)  return array[0]; else  return array[0]+sum(array+1,len-1);}main(){ int i=1,j=3; printf(%d,,i++); {  int i = 0;  i+=j*2;  printf(%d,%d,,i,j); } printf(%d,%d,i,j);}程序运行后的输出结果是(  )。
    A

    1,6,3,1,3

    B

    1,6,3,2,3

    C

    1,6,3,6,3

    D

    1,7,3,2,3


    正确答案: B
    解析:
    程序执行过程为:输出i=1,之后i自增,得i=2;然后执行复合语句,赋值i=0,执行语句i+=j*2;得i=6;输出i=6,j=3;花括号内的i的作用域仅限于该花括号内,在括号外的i为程序第四行定义的i,这两个i属于不同的变量。之后再输出i=2,j=3。答案选择B选项。