更多“【判断题】以下程序段将把a的最大值移到末尾位置 for(i=1;i<N-1;i++) if(a[i]>a[i+1]) { temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; }”相关问题
  • 第1题:

    下面程序的功能是:对字符串从小到大进行排序并输出,请填空。

    #include "string.h"

    #include "stdio.h"

    sort(char *a[],int n)

    { int i,j;

    char *p;

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

    for(i=0; 【15】 ;i++)

    if( 【16】 >0)

    { p=a[i];

    a[i]=a[i+1];

    a[i+1]=p;}}

    main()

    { int i;

    char *book[]={"itisme","itisyou","howareyou","fine","goodnight","goodbye"};

    sort( 【17】 );

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

    printf("%s\n",book[i]);}


    正确答案:
    i<n-j;strcmp(a[i],a[i+1]);book,6

  • 第2题:

    阅读下列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元素。

  • 第3题:

    本程序用冒泡法对数组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,循环结束。

  • 第4题:

    以下程序的输出结果是______。 main() { int i,k,a[10],p[3] k=5; for(i=0;i<10;i++)a[i]=i for(i=0;i<3;i++)p[i]=a[i*(i+1)]; for(i=0;i<3;i++)k+=p[i]*2; printf("%d\n",k); }

    A.20

    B.21

    C.22

    D.23


    正确答案:B
    解析:按照程序的流程走一遍,可以得到p[0]=0,p[1]=2,p[3]=6:执行三次k+=p[i]*2,相当于k=5+0*2+2*2+6*2=21。

  • 第5题:

    阅读以下函数说明和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)。

  • 第6题:

    有以下程序:

    main()

    { int a[3][3],*p,i;

    p=&a[0][0];

    for(i=0;i<9;i++)p[i]=i+1;

    printf("%d\n",a[1][2]);

    }

    程序运行后的输出结果是【 】。


    正确答案:6
    6 解析:本题定义了二维数组a和指针变量p,p指向数组的首地址,for循环语句的功能是给数组元素赋值,结果为a[0][0]=1、a[0][1]=2、a[0] [2]=3、a[1][0]=4、a[1][1]=5、a[1][2]=6、a[2][0]=7、a[2][1]=8、a[2][2]=9,故printf函数的输出结果为6。

  • 第7题:

    以下程序的输出结果是( )。 main { int i,k,a[10],p[3]; k=5; for(i=0:i<10;i++)a[i]=i; for(i=0;i<3;i++)p[i]=a[i*(i+1)]; for(i=0;i<3;i++)k+=p[i]*2; printf("%d\n",k、; }

    A.20

    B.21

    C.22

    D.23


    正确答案:B
    第一个循环的作用是把从0~9的数赋给a数组;第二个循环的作用是把a数组中的部分元素放到数组P中,即p[0]=a[0]=0,p[1]=a[2]=2,p[2]=a[6]=6;第三个循环的作用是把P中的各个元素的两倍之和放到k中,即k=5+0+4+12=21。

  • 第8题:

    以下能够正确计算n!的程序是______。

    A.Private Sub Commeadl_Click() n=5: x=1 Do x=x*i i=i+1 Loop While i<n Print x End Sub

    B.Private Sub Command1_Click() n=5: x=1: i=1 Do x=x*i i=i+1 Loop While i<n Print x End Sub

    C.Private Sub Command1_Click() n=5: x=1: i=1 Do x=x*i i=i+1 Loop Whilei<=n Print x End Sub

    D.Private Sub Commsndl_Click() n=5: x=1: i=1 Do x=x*i i=i+1 Loop While i>n Print x End Sub


    正确答案:C
    解析:选项A中变量i没有赋初值操作,其一直保持0值,所以始终为0;选项B中循环条件“i>n”错误,计算一次后就退出循环,导致计算结果不正确;选项D的计算过程中,第1次计算时“1>4”的条件不处理,退出Do循环,其结果为1;选项C的计算结果为5!。

  • 第9题:

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

    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)

  • 第10题:

    以下非法的赋值语句是

    A.n=(i=2, i++)

    B.i++

    C.x=j>0

    D.++(i+1)


    正确答案:D

  • 第11题:

    int a[10]; 给数组a的所有元素分别赋值为1、2、3、„„的语句是().

    • A、for(i=1;i<11;i++)a[i]=i;
    • B、for(i=1;i<11;i++)a[i-1]=i;
    • C、for(i=1;i<11;i++)a[i+1]=i;
    • D、for(i=1;i<11;i++)a[0]=1;

    正确答案:B

  • 第12题:

    单选题
    有以下程序:#include main(){ int i,j=0; char a[] = How are you,b[10]={0}; for(i=0;a[i];i++)  if(a[i]==' ')   b[j++]=a[i+1]; printf(%s,b);}程序运行后的输出结果是(  )。
    A

    Hay

    B

    How are you

    C

    we

    D

    ay


    正确答案: C
    解析:
    for语句循环体执行功能是,每次当a[i]元素为' '时,自动将a[i]下一个元素赋值给b[j],赋值完成后,j值加1,因此a[i]的'a'和'y'分别赋值给b[0],b[1],输出结果为ay。答案选择D选项。

  • 第13题:

    阅读下列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语言的掌握情况,两空亦可互相对照,难度不大。

  • 第14题:

    以下程序的输出结果是()。main(){inti,k,a[10],p[3];k=5;for(i=0;i10;i++)a[i]=i;for(i=0;i3;i++)p[i]=a[i*(i+1)];for(i=0;i3;i++)k+=p[i]*2;printf(“%d”,k);}

    A.20

    B.21

    C.22

    D.23


    正确答案:B

  • 第15题:

    下列程序的运行结果为【】。 include void main(void) {int i=10;switch(i){case 9:i=i

    下列程序的运行结果为【 】。

    include<iostream.h>

    void main(void)

    {int i=10;

    switch(i)

    { case 9:i=i+1;

    case 10:i=i+1;

    case 11:i=i+1;

    default:i=i+1;

    }

    cout<<i<<endl;

    }


    正确答案:13
    13

  • 第16题:

    有以下程序

    main( )

    { int a[3][3],*p,i;

    p=&a[0][0];

    for(i=0;i<9;i++) p[i]=i+1;

    printf("%d \n",a[1][2]);

    }

    程序运行后的输出结果是

    A.3

    B.6

    C.9

    D.2


    正确答案:B
    解析:p指向二维数组的起始地址,for循环中,i从0到8分别对应a[0][0],a[0][1],a[0][2],a [1][0],…,a[2][2]。根据p[i]=i+1可知,他们的值分别为1,2,…,9。

  • 第17题:

    以下程序运行后输入:3,abcde<回车>,则输出结果是【 】include move(char *str,

    以下程序运行后输入:3,abcde<回车>,则输出结果是【 】

    include <string.h>

    move(char *str, int n)

    { char temp; int i;

    temp=str[n-1];

    for(i=n-1;i>0;i--) str[i]=str[i-1];

    str[0]=temp;

    }

    main( )

    { char s[50]; int n, i, z;

    scanf("%d,%s",&n,s);

    z=strlen(s);

    for(i=1; i<=n; i++) move(s, z);

    printf("%s\n",s);

    }


    正确答案:cdeab
    cdeab 解析:本题主要考查函数move()的功能。经过分析可知,每次调用该函数时,都是把最后一个字符移到串的最前端,而原先的第一个字符至倒数第二个字符顺次后移。

  • 第18题:

    以下能够正确计算n!的程序是

    A.Privas Sub Command1_Click() n=5:x=1 Do x=x*i i=i+1 Loop While i<n Print x End Sub

    B.Private Sub Command1_Click() n=5:x=1:i=1 Do x=x*i i=i+1 Loop While i<n Print x End Sub

    C.Private Sub Command1_Click() n=5:x=1:i=1 Do x=x*i i=i+1 Loop while i<=n Print x End Sub

    D.Private Sub Command1_Click() n=5:x=1:i=1 Do x=x*i i=i+1 Loop While i>n Print x End Sub


    正确答案:C
    解析:本题主要考查Do循环控制结构。只有C项符合题意。A中i一开始未被赋值,默认为0;B项中由于“in”的条件使得 Do循环比应有循环次数少循环一次;选项D由于“i>n”这一条件,使得控制语句只能循环一次。

  • 第19题:

    下列程序的输出结果是______。 main() { int i,k,a[10],p[3]; k=5; for (i=0;i<10;i++) a[i]=i for (i=0;i<3;i++) p[i]=a[i*(i+1)]; for (i=0;i<3;i++)k+=p[i]*2; printf("%d\n",k); }

    A.20

    B.21

    C.22

    D.23


    正确答案:B

  • 第20题:

    下面程序的结果是( )。 i=l j=0 Do j=i+1 i=i+1 Loop Until i<5

    A.0

    B.4

    C.1

    D.5


    正确答案:C
    解析:本题考查Do-Loop循环结构的流程。此段程序先执行j和i的加1操作,得到j=1, i=2。然后进行条件判断,Do-Loop结构若使用 Until关键字,则当条件为False时执行表达式,为Tme时退出循环语句。Loop Until i5的意思是一直循环,直到i5为止,现在i=2,已经小于5,因此跳出循环,此时j=1。答案为C。

  • 第21题:

    下列各C++程序段中,不包含复合语句的选项为( )。

    A.{x=y+z;}

    B.for(i=1;k<0;i++) if(i%3==1) cout<<i<<endl;

    C.while(i<10){cout<<i<<endl;i++;}

    D.if(i<10){i=i+1;}


    正确答案:B

  • 第22题:

    以下与k=i++完全等价的表达式是()

    • A、i=i+1,k=i
    • B、k=i,i=i+1
    • C、k=++i
    • D、k+=i+1

    正确答案:B

  • 第23题:

    单选题
    以下与k=i++完全等价的表达式是()
    A

    i=i+1,k=i

    B

    k=i,i=i+1

    C

    k=++i

    D

    k+=i+1


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

  • 第24题:

    单选题
    有以下程序: #include  #include  main() {   int i;  char a[]=How are you!;  for(i=0;a[i];i++)  {   if(a[i]==' ')   {    strcpy(a,&a[i+1]);    i=0;   }  }  printf(%s,a); } 程序的运行结果是(  )。
    A

    you!

    B

    Howareyou!

    C

    areyou!

    D

    are you!


    正确答案: A
    解析:
    复制字符串函数strcpy(str1,str2),将str2完整的(包括'\0')复制到str1中,str1中原有的内容被覆盖。程序执行过程为:在a[i]不等于'\0'的情况下,判断当前元素是否为空格,若为空格将下一个元素以及之后的所有字符复制到a数组中。当i=3时,if条件成立,a以及之后单元中元素为"are you!\0",i=0,进行下一次循环,之后当i=3时,if条件成立,a以及之后单元中元素为"you!\0",i=0,之后的元素中在'\0'前没有空格出现,输出you!。答案选择A选项。