参考答案和解析
10
更多“下列语句序列执行后,k 的值是() int i=4,j=5,k=9,m=5; if(i>j||m<k) k++; else k--;”相关问题
  • 第1题:

    现有如下程序段

    #include "stdio.h"

    #include "string.h"

    main()

    { char a[]="acfijk"; /*这里是有序的字符序列*/

    char b[]="befijklqswz"; /*这里是有序的字符序列*/

    char c[80],*p;

    int i=0,j=0,k=0;

    while(a[i]!=′\0′&&b[j]!= ′\0′)

    { if(a[i]<b[j])c[k++]=a[i++];

    else if(a[i]>b[j])c[k++]=b[j++];

    else { c[k++]=b[j++];

    i++;}}

    while(a[i]==′\0′&&b[j]!= ′\0′)

    c[k++]=b[j++];

    while(a[i]!=′\0′&&b[j]== ′\0′)

    c[k++]=a[i++];

    c[k]=′\0′;

    puts(c);}

    则输出结果是

    A.acfijkbefijklqswz

    B.abceffiijjkklqswz

    C.befijklqswz acfijk

    D.abcefijklqswz


    正确答案:D
    解析:这个题目的功能是实现两个有序字符串,合并成一个新的有序的字符串。

  • 第2题:

    阅读下面的程序段: publiC class Sun { public static void main (String args[ ]) { int a=0; for(int i=1;i<=3;i++) { for(int j=1;j<=i;j++) { for(int k=j;k<=3;k++) { a=a+1; } } } System.out.println(A) ; } } 执行上面的3重循环后,a的值为( )。

    A.3

    B.9

    C.14

    D.21


    正确答案:C
    解析:本题考查对for循环嵌套的理解。本题应用3重嵌套循环,循环嵌套的执行,当外层循环执行1次,内层循环就要执行所有循环。i=1时,j=1,k执行3次循环得到a的值3;i=2,j=1时,k执行3次循环得到a的值加3并覆盖原值,j=2时,k执行两次循环,a的值加2;依次,i=3时,j执行3次。其中,分别执行3、2、1次,a的值分别加3、2、1,最后得到a的值14。故本题答案是C。

  • 第3题:

    设i,j,k均为int型变量,则执行完for(i=0,j=10;i<=j;i++,j-- k=i+j;语句后,k的值为【8】 。


    正确答案:
    10

  • 第4题:

    下面程序段的执行结果为( )。 int i=3,j=0,k=0; for(;i>0;--i) { ++k; do { ++j; if (i!=j) break; ++k; }while(j<5); } printf("i=%d j=%d k=%d\n",i,j,k);

    A.i=0 j=4 k=12

    B.i=0 j=5 k=5

    C.i=0 j=4 k=4

    D.i=0 j=3 k=3


    正确答案:C
    解析:程序开始时(i,j,k)三个值分别为(3,0,0),然后进入for循环,由于for的第一条语句空缺,所以不做初始化,此时i为3满足循环条件,进入循环体。然后执行“++k;”使k变成1,再无条件进入do-while循环体执行“++j;”使j变成1,此时i和j不相等所以执行break;语句跳出do-while循环。准备开始第二遍for循环,i的值被减1,此时3个值分别为(2,1,1),i为2满足循环条件,进入循环体。然后依次执行++k;和++j;使它们增1,此时i和j同为2相等,所以跳过break;语句再执行一次++k;使k为3,由于此时j满足do-while的循环条件,所以下一步回到前面执行do后面的++j;语句,使j为3,此时i和j不相等,所以执行break;跳出do-while循环。准备开始第三遍for循环,i的值被减1,此时3个值分别为(1,3,3),i为1满足循环条件,进入循环体。然后依次执行++k;和++j;使它们增1,此时i和j不相等,所以执行break;跳出do-while循环。准备开始第四遍for循环,i的值被减1,此时3个值分别为(0,4,4),i为0不满足for语句的循环条件,所以执行循环体后面的printf()函数输出3个值,故正确答案为C。

  • 第5题:

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

    [函数2.1说明]

    函数fun1 (int m, int k, int xx [])的功能是:将大于整数m且紧靠m的k个素数存入数组xx中传回。例如:若输入17,5,则应输出:19,23,29,31,37。

    [函数2.1]

    fun1 (int m, int k, int xx [] )

    {

    inti, j, s=0;

    for ( i=m+1; k>0; i++ )

    {for (j=2; j<i; j++ )

    if ( i %j=0 )

    (1)

    if( i==j )

    {

    (2)

    k--; }

    }

    }

    [函数2.2说明]

    函数void fun 2 ()的功能是:打印出杨辉三角形(要求打印出10行)。

    [函数2.2]

    void fun2 ( )

    {

    int i, j;

    int a[10][10];

    printf ("\n" );

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

    {a [i] [0]=1;

    (3))

    for (i=2; i<l0; i++ )

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

    (4)

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

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

    (5)

    printf ( "\n" );

    }

    }


    正确答案:(1)break; (2) xx [s++]=i; (3)a[i][i] =1; (4) a[i][j]=a[i-1] [j-1)+a[i-1][j]; (5) printf ("%5d"a[i] [j]);
    (1)break; (2) xx [s++]=i; (3)a[i][i] =1; (4) a[i][j]=a[i-1] [j-1)+a[i-1][j]; (5) printf ("%5d",a[i] [j]);

  • 第6题:

    以下程序的输出结果是#include <conio.h>#include <stdio.h>#define M 100void fun(int m, int *a, int *n){ int i,j=0; for(i=1;i<=m;i++) if(i%7==0||i%11==0) a[j++]=i; *n=j;}main(){ int aa[M],n,k; clrscr(); fun(100,aa,&n); for(k=0;k<n;k++) if((k+1)%20==0)printf("\n"); else printf("%d",aa[k]); printf("\n"); }


    正确答案:77
    在本题中,程序首先定义一个宏M,然后定义一个fun函数,函数带有三个形参,分别是一个整型形参m和两个整型指针形参a、n。在函数体中,首先定义两整型变量i和j,并给j赋初值为0,然后执行循环,循环体中首先是一个条件判断语句,如果结果为真,则说明变量i能同时被7和11整除,并将变量i保存到数组中,循环结束后,将数组中元素的个数通过指针变量n进行返回。通过分析可以知道,fun函数的作用是求取1到m中能同时被7和11整除的整数,并将结果保存到数组a中。
    在主函数中,首先定义了两个整型变量和一个整型数组aa,然后调用clrscr()函数对文本模式窗口进行清除操作。接着调用fun函数,根据上面我们对fun函数的分析,要计算1~100之间能同时被7和11整除的整数,很显然,这样的数只有77一个,那么此时数组aa中只有一个元素为77,而n的值是1。
    接着执行for循环,从程序中不难看出循环的作用是将数组aa中的元素按一定的规则输出,其规则为每行最多只能输出20个值。结合上面的分析,数组aa中只有一个元素为77,因此,本题程序的最终输出结果为77。

  • 第7题:

    有下列程序: fun(int x,int y) { static int m=0,i=2; i+=m+1;m=i+x+y;return m; } main( ) { int j=1,m=1,k; k=fun(j,m);print S(”%d,”,k); k=fun(j,m);printf(”%d\n”,k); ) 执行后的输出结果是( )。

    A.5,5

    B.5,11

    C.11,11

    D.11,5


    正确答案:B
    子函数fun(intx,inty),将变量m和i声明为局部静态变量,因此第l次调用主函数后,局部静态变量m和i的值为5和3,第l次函数调用结束时,它们的值不释放保持不变,所以第2次调用时,局部静态变量m和i的初始值分别为5和3,即在执行“i+=m+1”时,i的值为9,因此最终m的值为11。

  • 第8题:

    下列程序执行后,k的值是 ( ) public class Testhhh { publicstaticvoidmain(Stnngargs[]) { int i=6,j=8,k=10,m=7; if(i>j||m<k- -) k+ +; else k--; System.out.println(k);

    A.12

    B.11

    C.10

    D.9


    正确答案:C

  • 第9题:

    下列语句序列执行后,k的值是 ( ) int j=8,k=15; for(int i=2;i!=j;i++) {j-=2;k++;}

    A.18

    B.15

    C.16

    D.17


    正确答案:D

  • 第10题:

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

    [说明]

    函数int psort(int a[],int n)实现将含n个整数的数组a[]的不同元素按从小到大顺序存于数组a[]中。实现方法是从未确定的元素列中找到最小元素并将a[]的第i最小元素交换至a[i]位置。如该最小元素比已确定的最后一个最小元素大,则将它接在已确定的元素序列的后面;否则,忽视该元素。

    [C函数]

    int psort(int a[],int n)

    {int i,J,k,P;

    for(i=0,k=0;i<(1);i++){

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

    if(a[p]>a[j])

    p=j;

    if(p!=i){

    t=a[p];

    a[p]=a[i];

    a[i]=t;

    }

    if( (3) ) k++;

    else if( (4) <a[i])

    (5)=a[i];

    }

    return k;

    }

    int a[]={5,7,5,6,4,3,4,6,7};

    main()

    {int k,n;

    for(k=0;k<(Sizeof a)/Sizeof(int);k++)

    printf("%5d",a[k]);

    printf ("\n\n");

    n=psort(a,(sizeof(a))/sizeof(int));

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

    printf("%5d",a[k]);

    printf("\n\n");

    }


    正确答案:(1) n-1 (2) P=i (3) k==0 (4) a[k-1] (5) a[k++]
    (1) n-1 (2) P=i (3) k==0 (4) a[k-1] (5) a[k++] 解析:本程序排序方法是从未确定的元素列中找到最小元素并将a[]的第i最小元素交换至a[i]位置。如该最小元素比已确定的最后一个最小元素大,则将它接在已确定的元素序列的后面;否则,忽视该元素。这是采用选择法对数组元素进行排序,因此空(1)填“n-1”,空(2)填“p=i”。若该最小元素比已确定的最后一个最小元素大,则将它接在已确定的元素序列的后面;否则,忽视该元素。因此,空(3)填“k==0”;而当a[k-1]a[i]时”,则a[k++]=a[i];否则忽略元素a[i]。所以空(4)填“a[k-1]”空(5)填“a[k++]”。

  • 第11题:

    下面语句序列执行后,K的值是() int i=6,j=8,k=10,m=7; if(!(i>j|m>k++)) k++;

    • A、9
    • B、10
    • C、11
    • D、12

    正确答案:D

  • 第12题:

    单选题
    下面语句序列执行后,K的值是() int i=6,j=8,k=10,m=7; if(!(i>j|m>k++)) k++;
    A

    9

    B

    10

    C

    11

    D

    12


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

  • 第13题:

    有以下程序 fun(int x,int y) { static int m=0,i=2; i+=m+1; m=i+x+y; return m; } main() { int j=1,m=1,k; k=fun(j,m); printf("%d,",k); k=fun(j,m); printf("%d\n",k); } 执行后的输出结果是______。

    A.5,5

    B.5,11

    C.11,11

    D.11,5


    正确答案:B
    解析:将j和m的值带入函数fun中,第—次调用完fun()后,m和i的值分别为5和3且要保留,并在第二次调用时使用,这是因为两者都是局部静态变量。所以最后的结果是5和11。

  • 第14题:

    有下列程序:

    fun(int x,int y)

    {statlc int m=0,i=2;

    i+=m+1;m=i+X+y;return m;

    }

    main()

    {int j=1,m=1,k;

    k=fun(j,m);printf("%d,",k);

    k=fun(j,m);printf("%d\n",k);

    }

    执行后的输出结果是( )。

    A.5,5

    B.5,11

    C.11,11

    D.11,5


    正确答案:B
    解析:子函数fun(int x,int y),将变量m和i声明为局部静态变量,因此第1次调用主函数后,局部静态变量m和i的值为5和3,第1次函数调用结束时,它们的值不释放保持不变,所以第2次调用时,局部静态变量m和i的初始值分别为5和3,即在执行“i+=m=1”时,i的值为9,因此最终m的值为11。

  • 第15题:

    有以下程序 main( ) { int m[ ][3]={1,4,7,2,5,8,3,6,9}; int i,j,k=2; for(i=0;i<3;i++) { printf("%d ",m[k][i]); } } 执行后输出结果是

    A.4 5 6

    B.2 5 8

    C.3 6 9

    D.7 8 9


    正确答案:C
    解析:本题的功能是输出m[2)[0],m[2][1]和m[2][2]。

  • 第16题:

    有下列程序: fun(int x,int y) { static int m=0,i=2; i+=++rn;m=i x y;return m; } main { int j=l,m=1,k; k=fun(j,m);printf("%d,",k); k=fun(j.m);printf(”%d\n”,k); } 执行后的输出结果是( )。

    A.5.5

    B.5,11

    C.11,11

    D.11,5


    正确答案:B
    变量m和i声明为局部静态变量,因此第1次调用fun函数后,局部静态变量m和i的值为5和3,第l次调用结束时,它们的值不变,第2次调用时,m和i的初始值分别为5和3,在执行“i+=m+1”后,i的值为9,因此,最终m的值为11。

  • 第17题:

    下列程序的输出结果是【】。 include void main() { int i(1),j(2),k(3),a(10); if(!i

    下列程序的输出结果是【 】。

    include<iostream.h>

    void main()

    {

    int i(1),j(2),k(3),a(10);

    if(!i)

    a--;

    else if(j)

    if(k)a=5;

    else

    a=6;

    a++;

    cout<<a<<endl;

    if(i<j)

    if(i!=3)

    if(!k)

    a=1;

    else if(k)

    a=5;

    6+=2;

    cout<<a<<endl;


    正确答案:6 7
    6 7

  • 第18题:

    当执行以下程序后,i的值是5,j的值是4,k的值是【 】。

    int a, b, c, d, i, j, k;

    a=10; b=c=d=5; i=j=k=0;

    for(;a>b; ++b) i++;

    while(a>++c) j++;

    do {

    k++;

    }while(a>d++);


    正确答案:6
    6

  • 第19题:

    设int i=10,j=11,k=12,x=0;执行语句: if(i>5) if(j>100) if(k>11) X=3; else x=4; else x=5; 后x的值是( )。

    A.0

    B.3

    C.4

    D.5


    正确答案:D
    解析:首先判断i>5,表达式的值为真,再判断j>100,表达式的值为假,执行x=5。因此只有选项D正确。

  • 第20题:

    下列程序段执行后,k的值是 ( ) int i=6,j=8,k=10,m=7; if(i>||m<k--) k++; else k--;

    A.12

    B.11

    C.10

    D.9


    正确答案:C

  • 第21题:

    设i、j、k均为int型变量,则执行完for(i=0,j=10;i<=j;i++,j--) k=i+j;语句后,k的值为______。


    正确答案:10
    10 解析:该for语句以i为0、j为10初始化,循环条件是i=j,每次循环后i增1、j减1,循环体是将i与j的和赋给k。这样变量k将保存的是最后一次赋给它的值。一次循环后i为1、j为9,二次循环后i为2、j为 8,……,五次循环后i为5、j为5,继续第六次循环,将i与j的和10存于k后,i为6、j为4,结束循环。所以循环执行后k为10。

  • 第22题:

    若用白盒测试方法测试以下代码,并满足条件覆盖,则至少需要( )个测试用例
    Int find _max(int i,int j,int k){
    int max;
    if(i>j)then
    if(i>k)then max =i;
    else max=k;
    else if(j>k)then max =j;
    else max=k;
    }

    A.3
    B.4
    C.5
    D.6

    答案:B
    解析:

  • 第23题:

    单选题
    有以下程序 fun(int x,int y) { static int m=0,i=2; i+=m+1; m=i+x+y; return m; } main() { int j=1,m=1,k; k=fun(j,m); printf("%d,",k); k=fun(j,m); printf("%d/n",k); } 执行后的输出结果是()
    A

    5,5

    B

    5,11

    C

    11,11

    D

    11,5


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

  • 第24题:

    单选题
    有以下程序#include int fun(int x,int y){ static int m=0,i=2; i+=m+1; m=i+x+y; return m;}main(){ int j=1,m=1,k; k=fun(j,m); printf(%d,,k); k=fun(j,m); printf(%d,k);}执行后的输出结果是(  )。
    A

    5,11

    B

    5,5

    C

    11,11

    D

    11,5


    正确答案: B
    解析:
    fun函数中m和i是静态变量,退出函数以后,下次再进入该函数时,m和i仍然保持上一次的数值。第一次调用fun(j,m)时,i=2+0+1=3,m=3+1+1=5,返回5;第二次调用fun(j,m)时,i=3+5+1=9,m=9+1+1=11,返回11。答案选择A选项。