问答题A、B、C三位学生知道方桌的抽屉里有这么多张扑克牌:红桃A、Q、4黑桃J、8、4、2、7、3梅花K、Q、5、4、6方块K、5一位老师从这些牌中挑出一张牌来,并把这张牌的点数告诉B同学,把这张牌的花色告诉C同学。这时,老师问B和C://你们能从已知的点数或花色中猜出它是什么牌吗?于是,A同学听到他们的对话:B同学:这张牌我不清楚。C同学:我知道你不知道这它是什么牌。B同学:现在我明白它是什么牌了。C同学:我也知道了。听过上述的对话,A同学想了一下,就知道这张牌是什么牌了。请判断一下,这张牌是什么牌?

题目
问答题
A、B、C三位学生知道方桌的抽屉里有这么多张扑克牌:红桃A、Q、4黑桃J、8、4、2、7、3梅花K、Q、5、4、6方块K、5一位老师从这些牌中挑出一张牌来,并把这张牌的点数告诉B同学,把这张牌的花色告诉C同学。这时,老师问B和C://你们能从已知的点数或花色中猜出它是什么牌吗?于是,A同学听到他们的对话:B同学:这张牌我不清楚。C同学:我知道你不知道这它是什么牌。B同学:现在我明白它是什么牌了。C同学:我也知道了。听过上述的对话,A同学想了一下,就知道这张牌是什么牌了。请判断一下,这张牌是什么牌?

相似考题

4.●试题四阅读以下说明和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();}

参考答案和解析
正确答案: B同学只知道点数,却不能确定花色的只有K、4、5、Q这几张。而C同学知道B不知道,而C同学知道花色,那么这个花色应该只包括这4张牌或其中的几张,这时只有方块和红桃符合条件。这时B同学又知道了这张牌是哪两种花色,但是B同学却能确定这张牌是什么,这时只有方块5符合条件了(因为如果是K的话他不能确定是哪种花色,而之后C同学也知道了,说明除去K后此花色只有一张牌,只能是方块5)
解析: 暂无解析
更多“A、B、C三位学生知道方桌的抽屉里有这么多张扑克牌:红桃A、Q、4黑桃J、8、4、2、7、3梅花K、Q、5、4、6方块K”相关问题
  • 第1题:

    有以下程序 main() { int a[4][4]={{1,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,j,k,t; for(i=0;<4:i++) for(j=0;j<3;j++) for(k=j+1;k<4;k++) if(a[j][i]>a[k][i]{t=a[j][i];a[j][i]=a[k][i]=a[k][i]=t;}/*按列排序*/ for(i=0;i<4;i++)printf("%d,",a[i][i]); } 程序运行后的输出结果是

    A.1,6,5,7,

    B.8,7,3,1,

    C.4,7,5,2,

    D.1,6,2,1,


    正确答案:A
    解析:本题利用多重for循环的嵌套来实现对二维数组元素的按列排序。利用最外层循环来实现对列的控制。内部循环利用选择法对数组元素按照从小到大的顺序进行排列。最后输出对角线上的元素值。故本题答案为A)。

  • 第2题:

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

  • 第3题:

    有以下程序 void f(int *x,int *y) { int t; t=*X; *X=*y; *y=t; } main() { int a[8]={1,2,3,4,5,6,7,8},i,*p,*q; p=a; q=&a[7); while(p>q) { f(p,q); p++; q--; } for(i=0; i<8; i++) printf("%d,",a[i]); } 程序运行后的输出结果是

    A.8,2,3,4,5,6,7,1,

    B.5,6,7,8,1,2,3,4,

    C.1,2,3,4,5,6,7,8,

    D.8,7,6,5,4,3,2,1,


    正确答案:D
    解析:在C语言中,函数参数的默认传递方式是传值,即函数内部的形参只是调用时的实参的一个拷贝,改变形参,实参不会被改变.如果想要实现传址调用只能使用传递指针的方式来实现.利用指针作函数的参数时,无论形参指针还是实参指针所指的都是同一个内存地址,所以形参如果改变了这个地址中的内容,也就是改变了实参所指的地址内容.本题程序开头定义了一个函数f(),在函数中用一个临时变量t交换了两个指针参数所指的地址内容,所以该函数的作用就是交换两个参数所指的内容。在主函数中,首先定义了一个int型数组a,并定义了两个int型指针p、q分别指向数组a的第一个元素和最后一个元素。然后使用一个while循环调用函数f()不断交换两个指针所指的内容,每次交换后p往后移动一个元素,q往前移动一个元素,直到q不再大于p,即直到两个指针在数组a的中间相遇为止。所以,程序最终运行的结果是数组a中的所有元素全被反序排列一次。故应该选择选项D。

  • 第4题:

    下列程序的功能是:将一个正整数序列{K1, K2,…, K9}重新排列成一个新的序列。在新序列中,比K1小的数都在K1的前面(左面),比K1大的数都在K1的后面(右面)。要求编写函数jsValue()实现以上功能,最后调用函数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}。部分源程序已给出。请勿改动主函数main() 和写函数writeDat() 的内容。#include<stdio.h>void jsValue(int a[10][9]){ } 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; jsValue(a); for(i=0;i<10;i++){ for(j=0;j<9;j++) { printf("%d",a[i][j]); if(j<=7) printf(","); } printf("\n");}writeDat(a);}void writeDat(int a[10][9]){ FILE *fp; int i,j; fp=fopen("out.dat","w"); for(i=0;i<10;i++){ for(j=0;j<9;j++){ fprintf(fp,"%d",a[i][j]); if(j<=7) fprintf(fp,","); } fprintf(fp,"\n");} fclose(fp);}


    正确答案:参考试题解析
    【解析及答案】
    本题的任务是把排序函数jsValue() 补充完整。本题的处理过程是对数组a[10][9] 中的每行数据分别处理,然后再放置到原来的数组a[10][9] 中。求解时需要使用一个[10][9] 的临时数组b存放处理时的中间结果。数组a处理完以后,就用数组b的内容代替数组a的内容。对每行数据进行处理时,首先需要准备两个指示器nk,分别指向数组b中该行的开头和结尾。然后,反向扫描数组a中对应的行。如果碰到比该行第1个数据值大的元素,就将其放到指示器k指向的位置;如果碰到比其数据值小的元素,就将其放到指示器n指向的位置。处理完以后,还要移动指示器nk,使其定位在新的位置,以接收后面的数据。如果碰到和其数据值相等的元素,由题意可知,这样的元素在新数组中只允许出现1次,所以直接把这个元素放到指示器nk指向的位置即可,但不必移动指示器,否则该元素有可能出现多次。综上所述,完整的排序函数jsValue() 如下。
    jsvalue(int a[10][9])
    {
      int i,j,k,n,temp;
      int b[9]=0;
       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]) 
              b[k--]=a[i][j];
          if(temp>a[i][j])  
              b[n++]=a[i][j];
          if(temp==a[i][j])  
              b[n]=temp;     /*也可以b[k]=a[i][j];*/
    }
        for(j=0;j<9;j++)
      {
          a[i][j]=b[j];
          b[j]=0;}
      }
    }

  • 第5题:

    执行下面的程序后,输出的结果是 p=1 For j=1 To 4 p=p - 1:q=0 For k=1 To 4 p=p + 1:q=q + 1 Next k Next j Print p;q

    A.1 4

    B.13 4

    C.12 8

    D.206


    正确答案:B
    解析:本题是一个多重循环语句,是For…Next结构的两重迭用,根据“拔皮法”,一层一层分析可知,最后p=13,q=4。

  • 第6题:

    有人从一手纸牌中选定一张牌,他把这张牌的花色告诉X先生,而把点数告诉了 Y先生。两位先生都知道这手纸牌是:黑桃J、8、4、2;红心A、Q、4;方块A、5;草花K、Q、5、4。X先生 和Y先生都很精通逻辑,很善于推理。他们之间有对话如下:Y先生:我不知道这张牌。X先生: 我知道你不知道这张牌。Y先生:现在我知道这张牌了。X先生:现在我也知道了。
    根据以上对话,你能推测出这是下面哪一张牌?
    A.方块

    A B.红心Q
    C.黑桃4 D.方块5

    答案:D
    解析:
    由Y先生的第一句话可知,该牌的点数是多种花色所共有的,所以只可能是A、Q、4、5 中的一个。再由X先生的第一句话可知,该牌的花色所拥有的点数都是多种花色共有的,即为红心或方块。由Y 先生的第二句话町知,该牌的点数不可能是这两种花色所共有的,即不是A。最后由X先生的最后一句话可知, 该牌的花色排除A这个点数以外只有一种可能,否则X先生无法知道这张牌,故该牌的花色为方块,点数为5, 该牌为方块5。

  • 第7题:

    把黑桃、红桃、方块、梅花四种花色的扑克牌按黑桃10张、红桃9张、方块7张、梅花5张的顺序循环排列。问第2015张扑克牌是什么花色?(  )

    A.黑桃
    B.红桃
    C.梅花
    D.方块

    答案:C
    解析:
    一个完整的循环包括黑桃10张,红桃9张,方块7张,梅花5张,共31张,2015可被31整除(2015÷31=65),因此第2015张牌是梅花。

  • 第8题:

    有人从一手纸牌中选定一张牌,他把这张牌的花色告诉X先生,而把点数告诉了Y先生,两位先生都知道这手纸牌是:黑桃J、8、4、2;红心A、Q、4;方块A、5;草花K、Q、5、4。X先生和Y先生都很精通逻辑,很善于推理。他们之间有对话如下: Y先生:我不知道这张牌。 X先生:我知道你不知道这张牌。 Y先生:现在我知道这张牌了。 X先生:现在我也知道了。根据以上对话,推测这是下面哪一张牌?( )

    A. 方块

    A
    B. 红心Q
    C. 黑桃4
    D. 方块5

    答案:D
    解析:
    解题指导: 由于Y先生知道这张牌Z的点数,如果Z的点数是2、8、J、K中的一个,那么Y先生应该知道Z是什么牌。因为这些点是13张牌中惟一的点。但Y先生不知道Z是一张什么牌。所以Z的点数应在黑桃4,红心A、Q、4;草花4、5、Q;方块5、A之中。如果Z的花色是黑桃或草花,那么X先生不知道Z,因为若Z在黑桃或草花中,有的点数不是惟一的,而X先生不知道Z的点数,也就无法判定Y先生知道还是不知道。但X先生竟说“我知道你不知道这张牌”,所以Z不在黑桃或草花中,而在红心A、Q、4和方块A、5之中。此时双方都已经知道Z在五张牌中。如果Z的点数是A,由于有两张A,Y先生无法知道Z,但Y先生竟说“现在我知道这张牌了”,所以Z的点数不是A,而是Q、4、5。又,如果Z的花色是红心,由于还剩两张,那么X先生也无法知道Z,但这时他竟然知道了,所以,Z不是红心,而是方块,即方块5。故答案为D。

  • 第9题:

    6-0-6档,12个回路的主令控制器工作在下降第三档时,闭合触头为()

    • A、K3.K4.K6.K7.K8
    • B、K3.K4.K6.K7
    • C、K2.K4.K5.K7.K8
    • D、K3.K4.K6

    正确答案:D

  • 第10题:

    单选题
    有以下程序:#include void fun(int a[],int n){ int i,j=0,k=n/2,b[10]; for(i=n/2-1;i>=0;i--) {  b[i]=a[j];  b[k]=a[j+1];  j+=2;  k++; } for(i=0;i  a[i]=b[i];}main(){ int c[]={10,9,8,7,6,5,4,3,2,1},i; fun(c,10); for(i=0;i  printf("%d,",c[i]); printf("");}程序的运行结果是(  )。
    A

    2,4,6,8,10,9,7,5,3,1,

    B

    10,8,6,4,2,1,3,5,7,9,

    C

    1,2,3,4,5,6,7,8,9,10,

    D

    1,3,5,7,9,10,8,6,4,2,


    正确答案: D
    解析:
    程序的执行过程为:调用函数fun,将数组c地址与n数值传入函数,此函数实现,将数组偶数位置元素从中间向前依次放入数组前半段,数组奇数位置元素从中间向后依次放入数组后半段,调用结果为c[10]={2,4,6,8,10,9,7,5,3,1},之后依次输出。答案选择A选项。

  • 第11题:

    单选题
    有人从一手纸牌中选定一张牌,他把这张牌的花色告诉X先生,而把点数告诉了Y先生。两位先生都知道这手纸牌是:黑桃J、8、4、2;红心A、Q、4;方块A、5;草花K、Q、5、4。X先生和Y先生都很精通逻辑,很善于推理。他们之间有对话如下:Y先生:我不知道这张牌。X先生:我知道你不知道这张牌。Y先生:现在我知道这张牌了。X先生:现在我也知道了。根据以上对话,你能推测出这是下面哪一张牌?(  )
    A

    方块A

    B

    红心Q

    C

    黑桃4

    D

    方块5


    正确答案: D
    解析:
    由Y先生的第一句话可知,该牌的点数是多种花色所共有的,所以只可能是A、Q、4、5中的一个。再由X先生的第一句话可知,该牌的花色所拥有的点数都是多种花色共有的,即为红心或方块。由Y先生的第二句话可知,该牌的点数不可能是这两种花色所共有的,即不是A。最后由X先生的最后一句话可知,该牌的花色排除A这个点数以外只有一种可能,否则X先生无法知道这张牌,故该牌的花色为方块,点数为5,该牌为方块5。因此D项正确。

  • 第12题:

    单选题
    把黑桃、红桃、方片、梅花四种花色的扑克牌按黑桃 10 张、红桃 9 张、方片7 张、梅花 5 张的顺序循环排列。问第 2015 张扑克牌是什么花色?
    A

    黑桃

    B

    红桃

    C

    梅花

    D

    方片


    正确答案: B
    解析:

  • 第13题:

    Giventhefollowingcode:1)publicvoidmodify(){2)inti,j,k;3)i=100;4)while(i>0){5)j=i*2;6)System.out.println("Thevalueofjis"+j);7)k=k+1;8)i--;9)}10)}Whichlinemightcauseanerrorduringcompilation?()

    A.line4

    B.line6

    C.line7

    D.line8


    参考答案:C
    这个问题在前面有关变量的类型及其作用域的问题中讨论过,局部变量在使用前必须显式初始化,而代码中的变量k在使用前没有。

  • 第14题:

    下列程序的功能是:将一正整数序列{K1,K2,…,K9}重新排成一个新的序列。新序列中,比K1小的数都在K1的左面(后续的再向左存放),比K1大的数都在K1的右面(后续的再向右存放),从K1向右扫描。要求编写函数jsValue()实现此功能,最后调用函数writeDat()把新序列输出到文件out90.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}

    注意:部分源程序已给出。

    请勿改动主函数main()和写函数writeDat()的内容。

    试题程序:

    include<stdio.h>

    jsValue(int a[10][9])

    {

    }

    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;

    jsValue (a);

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

    {

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

    {

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

    if(j<=7) printf(",");

    }

    printf ("\n");

    }

    writeDat (a);

    }

    writeDat (int a[10] [9])

    {

    FILE *fp;

    int i,j;

    fp=fopen ("out90.dat", "w");

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

    {

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

    {

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

    if (j<=7) fprintf (fp, ", ");

    }

    fprintf (fp, "\n");

    }

    fclose (fp);

    }


    正确答案:void jsValue(int a[10][9]) { int valueijknum; for(i=0;i10;i++) { value=a[i][0]; /*将一行的第一个元素赋给value*/ for(j=0;j9;j++) if(a[i][j]value) /*若后面的数中有比第1个数据小的数*/ { num=a[i][j]; /*则把这个数取出赋给num*/ for(k=j;k>0;k--) /*将这个数据左侧的数依次向右移动*/ { a[i][k]=a[i][k-1]; } a[i][0]=num; /*再将这个数放在最左侧*/ } } } [解析] 本题考查的知识点如下: (1)二维数组的访问和数组元素的移动。 (2)循环结构和判断结构的嵌套使用。 数据存放在一个二维数组中每一行数为数据处理的基本单位。将第1个数取出依次和后面的数比较若后面的数中有比第1个数据小的数则将这个数取出。将这个数据左侧的数依次向右移动(包括第1个数)然后将这个数放在最左侧。扫描完一行后比第1个数小的数就都在第1个数的左侧而比它大的就在它的右侧。对数的扫描和移动均可以使用循环实现。再使用循环实现对每一行数据的访问。
    void jsValue(int a[10][9]) { int value,i,j,k,num; for(i=0;i10;i++) { value=a[i][0]; /*将一行的第一个元素赋给value*/ for(j=0;j9;j++) if(a[i][j]value) /*若后面的数中有比第1个数据小的数*/ { num=a[i][j]; /*则把这个数取出,赋给num*/ for(k=j;k>0;k--) /*将这个数据左侧的数依次向右移动*/ { a[i][k]=a[i][k-1]; } a[i][0]=num; /*再将这个数放在最左侧*/ } } } [解析] 本题考查的知识点如下: (1)二维数组的访问和数组元素的移动。 (2)循环结构和判断结构的嵌套使用。 数据存放在一个二维数组中,每一行数为数据处理的基本单位。将第1个数取出依次和后面的数比较,若后面的数中有比第1个数据小的数,则将这个数取出。将这个数据左侧的数依次向右移动(包括第1个数),然后将这个数放在最左侧。扫描完一行后,比第1个数小的数就都在第1个数的左侧,而比它大的就在它的右侧。对数的扫描和移动均可以使用循环实现。再使用循环实现对每一行数据的访问。

  • 第15题:

    有以下程序 main() {int a[4][4]={{1,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,j,k,t; for(i=0;i<4;i++) for(j=0;j<3;j++) for(k=j+1;k<4;k++) if(a[j][i]>a[k][i]){t=a[j][i];a[j][i]=a[k][i];a[k][i]=t;}/*按列排序*/ for(i=0;i<4;i++)printf("%d,",a[i][i]);

    A.1,6,5,7,

    B.8,7,3,1,

    C.4,7,5,2,

    D.1,6,2,1,


    正确答案:A
    解析: 本题利用多重for循环的嵌套来实现对二维数组元素的按列排序。利用最外层循环来实现对列的控制。内部循环利用选择法对数组元素按照从小到大的顺序进行排列,最后输出对角线上的元素值。

  • 第16题:

    有以下程序

    main()

    {int a[4][4]={{l,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,j,k,t;

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

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

    for(k=j+1;k<4;k++)

    if(a[j][i]>a[k][i]){t=a[j][i];a[j][i]=a[k][i];a[k][i]=t;}/*按列排序*/

    for(i=0;i<4;i++)printf("%d,",a[i][i]);

    }

    程序运行后的输出结果是

    A.1,6,5,7,

    B.8,7,3,1,

    C.4,7,5,2,

    D.1,6,2,1,


    正确答案:A
    解析:本题利用多重 for循环的嵌套来实现对二维数组元素的按列排序。利用最外层循环来实现对列的控制。内部循环利用选择法对数组元素按照从小到大的顺序进行排列,最后输出对角线上的元素值。

  • 第17题:

    下列代码______行错误。 ( )(1)public void modify( ){(2)intI,j,k,(3)I=100;(4)while(I>0){(5)j=I*2;(6)System.out.println("The value of j is"+j);(7)k=k+1;(8)I--;(9)}(10)}

    A.-4

    B.-6

    C.-7

    D.-8


    正确答案:C
    解析:第(7)行语句有错。声明一个变量后,必须通过赋值语句对它进行明确的初始化,永远不要用一个未初始化的变量的值,而第(7)行中就用了没有被初始化的变量k,所以选择C。

  • 第18题:

    请从四个选项中选出正确的一项,其特征或规律与题干给出的一串符号的特征或规律最为相似。
    Q2Y3Q4R5Y6R

    A.D5F6D7J8F9J
    B.L4A5A6M7L8M
    C.P3G1P4K5G6K
    D.U7M6U1N4M6N

    答案:A
    解析:
    字母与数字间隔排列,数字各不相同且按从小到大的顺序排列,排除C、D两项;第一个字母与第三个字母相同,排除B项。

  • 第19题:

    G5g3F2f

    A.M6m3N7g
    B.k9K7T4t
    C.X7x5R3R
    D.Q6q4Y3y

    答案:D
    解析:
    题干第一位大写,第三位是第一位的小写字母,第五位大写,第七位是第五位的小写字母,符合此规律的只有D。

  • 第20题:

    有人从一手纸牌中选定一张牌,他把这张牌的花色告诉X先生,而把点数告诉了Y先生。两位先生都知道这手纸牌是:黑桃J、8、4、2;红心A、Q、4;方块A、5;草花K、Q、5、4。X先生和Y先生都很精通逻辑,很善于推理。他们之间有对话如下:Y先生:我不知道这张牌。X先生:我知道你不知道这张牌。Y先生:现在我知道这张牌了。X先生:现在我也知道了。根据以上对话,你能推测出这张牌是()

    • A、方块A
    • B、红心Q
    • C、黑桃4
    • D、方块5

    正确答案:D

  • 第21题:

    有程序:INTEGERM(3,3)DATAM/1,2,3,4,5,6,7,8,9/DO10I=1.3DO10J=1,3K=M(I,J)M(I,J)=M(J,I)M(J,I)=K10CONTINUEWRITE(*,100)((M(I,J),J=1,3),I=1,3)100FORMAT(1x,3I2)END此程序执行后的结果为:()

    • A、1;4;7;2;5;8;3;6;9
    • B、1;2;3;4;5;6;7;8;9
    • C、9;6;3;8;5;2;7;4;1
    • D、7;8;9;4;5;6;1;2;3

    正确答案:A

  • 第22题:

    单选题
    有以下程序 #include  main() {  int a[4][4]={{1,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}};  int i,j,k,t;  for(i=0;i   for(j=0;j    for(k=j+1;k     if(a[j][i]>a[k][i])     {      t=a[j][i];      a[j][i]=a[k][i];      a[k][i]=t;     }  for(i=0;i   printf("%d,",a[i][i]); } 程序运行后的输出结果是(  )。
    A

    8,7,3,1,

    B

    1,6,5,7,

    C

    4,7,5,2,

    D

    1,6,2,1,


    正确答案: C
    解析:
    先对二维数组的每列从小到大排序,然后输出对角线元素。答案选择B选项。

  • 第23题:

    单选题
    有程序:INTEGERM(3,3)DATAM/1,2,3,4,5,6,7,8,9/DO10I=1.3DO10J=1,3K=M(I,J)M(I,J)=M(J,I)M(J,I)=K10CONTINUEWRITE(*,100)((M(I,J),J=1,3),I=1,3)100FORMAT(1x,3I2)END此程序执行后的结果为:()
    A

    1;4;7;2;5;8;3;6;9

    B

    1;2;3;4;5;6;7;8;9

    C

    9;6;3;8;5;2;7;4;1

    D

    7;8;9;4;5;6;1;2;3


    正确答案: A
    解析: 执行完循环语句之后,M(1,1)=1,M(2,1)=2,M(3,1)=3,M(1,2)=4。M(2,2)=5,M(3,2)=6,M(1,3)=7,M(2,3)=8,M(3,3)=9,由于是按隐含循环的形式输出,每行输出3个数据,按行主序输出,故应选答案A。